web-dev-qa-db-fra.com

Comment puis-je augmenter la limite de nom de fichier de 143 octets d'Ubuntu pour les répertoires chiffrés?

Dans les répertoires chiffrés, Ubuntu (au moins 15.10) semble avoir une limite d'octet de nom de fichier de 143 B - beaucoup plus petite que la limite du système de fichiers ext4 de 255 B. Où est cette limite spéciale définie, pourquoi est-elle définie en premier lieu et existe-t-il un moyen de l'augmenter?

13
BipedalShark

Où se trouve la limite Ubuntu,

C'est une limite du système de fichiers. Tous les "ext" ont une limite de 255 caractères. Voici une liste de beaucoup de systèmes de fichiers . ReiserFS affiche 4032 octets (mais il est limité à 255 caractères à cause de Linux VFS ).

La limite de 144 caractères pour le fichier crypté est incorrecte. Il est 143 ( du créateur des utilitaires ecryptfs ). Les caractères restants sont nécessaires au chiffrement, vous ne pouvez donc pas les parcourir (le chiffrement ne fonctionne pas sur les fichiers de plus de 143 caractères).

et y a-t-il un moyen de l'augmenter?

Non


Quelques informations supplémentaires. Ceux-ci montreront la limite de taille de fichier et de répertoire en caractères:

 getconf NAME_MAX /dev/sda
 getconf PATH_MAX /dev/sda

Voir /usr/include/linux/limits.h pour la déclaration de ces 2 variables:

#ifndef _LINUX_LIMITS_H
#define _LINUX_LIMITS_H

#define NR_OPEN         1024

#define NGROUPS_MAX    65536    /* supplemental group IDs are available */
#define ARG_MAX       131072    /* # bytes of args + environ for exec() */
#define LINK_MAX         127    /* # links a file may have */
#define MAX_Canon        255    /* size of the canonical input queue */
#define MAX_INPUT        255    /* size of the type-ahead buffer */
#define NAME_MAX         255    /* # chars in a file name */
#define PATH_MAX        4096    /* # chars in a path name including nul */
#define PIPE_BUF        4096    /* # bytes in atomic write to a pipe */
#define XATTR_NAME_MAX   255    /* # chars in an extended attribute name */
#define XATTR_SIZE_MAX 65536    /* size of an extended attribute value (64k) */
#define XATTR_LIST_MAX 65536    /* size of extended attribute namelist (64k) */

#define RTSIG_MAX     32

#endif

Vous pouvez modifier cette valeur, mais vous devrez au moins recompiler la fonction fopen () pour pouvoir l'utiliser. Et il n'y aura pas de compatibilité avec d'autres systèmes d'exploitation.

Je change donc ma réponse en: Oui, tu peux mais ne le fais pas :)

10
Rinzwind