¿Cómo puedo aumentar el límite de nombre de archivo de 143 bytes de Ubuntu para directorios cifrados?

13

En los directorios cifrados, Ubuntu (al menos 15.10) parece tener un límite de bytes de nombre de archivo de 143 B, mucho más pequeño que el límite del sistema de archivos ext4 de 255 B. ¿Dónde se establece este límite especial? ¿Por qué se establece en primer lugar? y ¿hay alguna forma de aumentarlo?

BipedalShark
fuente
Puedo tener nombres de archivo de 145 bytes.
Tim
¡Hola! ¿Utiliza el cifrado del sistema de archivos en su sistema?
Armand Bozsik
Para probar el límite de nombre de archivo, consulte stackoverflow.com/questions/6571435/… - mi Ubuntu ext4 tiene un límite de 255 como se esperaba. También relacionado: askubuntu.com/questions/166764/how-long-can-file-names-be
Takkat 01 de
@ArmandBozsik que parece ser la causa. ¿Hay alguna manera de aumentar el límite de nombre de archivo en un directorio cifrado?
BipedalShark
1
¿Estás usando eCryptfs? EncFS puede tener un límite diferente, o un contenedor LUKS de tamaño fijo podría usar una extensión regular ... O, el no usar encriptación de nombre de archivo puede cambiar el límite
Xen2050

Respuestas:

10

¿Dónde está establecido el límite de Ubuntu?

Es un límite del sistema de archivos. Todos los "ext" tienen un límite de 255 caracteres. Aquí hay una lista de muchos sistemas de archivos . ReiserFS muestra 4032 bytes (pero está limitado a 255 caracteres debido a Linux VFS ).

El límite de 144 caracteres para el archivo cifrado es incorrecto. Es 143 ( del creador de las utilidades ecryptfs ). Los caracteres restantes son necesarios para el cifrado, por lo que no puede repasarlo (el cifrado no funciona en archivos con más de 143 caracteres).

y hay alguna forma de aumentarlo?

No


Un poco más de información. Estos mostrarán el límite de tamaño de archivo y directorio en caracteres:

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

Consulte /usr/include/linux/limits.hla declaración de estas 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

Puede cambiar este valor, pero deberá volver a compilar al menos la función fopen () para que pueda utilizarse. Y no habrá compatibilidad con ningún otro sistema operativo.

Entonces cambio mi respuesta a: Sí, puedes, pero por favor no :)

Rinzwind
fuente