Como posso aumentar o limite de nome de arquivo de 143 bytes do Ubuntu para diretórios criptografados?

13

Nos diretórios criptografados, o Ubuntu (pelo menos 15.10) parece ter um limite de bytes de nome de arquivo de 143 B - muito menor que o limite de 255 b do sistema de arquivos ext4. Onde esse limite especial é definido, por que é definido em primeiro lugar , e existe uma maneira de aumentá-lo?

BipedalShark
fonte
Eu posso ter nomes de arquivos com 145 bytes.
Tim
Oi! Você usa criptografia do sistema de arquivos no seu sistema?
Armand Bozsik
Para testar o limite do nome do arquivo, consulte stackoverflow.com/questions/6571435/… - meu Ubuntu ext4 tem um limite de 255 conforme o esperado. Também relacionado: askubuntu.com/questions/166764/how-long-can-file-names-be
Takkat
@ArmandBozsik que parece ser a causa. Existe uma maneira de aumentar o limite de nome de arquivo em um diretório criptografado?
BipedalShark
1
Você está usando eCryptfs? Encfs pode ter um limite diferente, ou um recipiente LUKS tamanho fixo poderia usar ext normal ... Ou, não usando a criptografia de filename pode alterar o limite
Xen2050

Respostas:

10

Onde está o limite do Ubuntu definido,

É um limite do sistema de arquivos. Todos os "ext" têm um limite de 255 caracteres. Aqui está uma lista de muitos sistemas de arquivos . O ReiserFS mostra 4032 bytes (mas é limitado a 255 caracteres devido ao Linux VFS ).

O limite de 144 caracteres para o arquivo criptografado está incorreto. É 143 ( do criador dos utilitários ecryptfs ). Os caracteres restantes são necessários para a criptografia, para que você não possa passar por cima dela (a criptografia não funciona em arquivos com mais de 143 caracteres).

e existe uma maneira de aumentá-lo?

Não


Mais algumas informações. Eles mostrarão o limite de tamanho de arquivo e diretório em caracteres:

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

Veja /usr/include/linux/limits.hpara a declaração destas 2 variáveis:

#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

Você pode alterar esse valor, mas precisará recompilar pelo menos a função fopen () para que seja utilizável. E não haverá compatibilidade com outros sistemas operacionais.

Então, mudo minha resposta para: Sim, você pode, mas por favor, não :)

Rinzwind
fonte