Как я могу увеличить ограничение имени файла в Ubuntu на 143 байта для зашифрованных каталогов?

13

В зашифрованных каталогах Ubuntu (по крайней мере 15.10), похоже, имеет ограничение в байтах имени файла 143 B - намного меньше, чем ограничение файловой системы ext4 в 255 B. Где этот специальный предел установлен, почему он установлен в первую очередь? и есть ли способ его увеличить?

BipedalShark
источник
Я могу иметь имена файлов, которые 145 байтов.
Тим
Здравствуй! Используете ли вы шифрование файловой системы в вашей системе?
Арманд Бозсик
Чтобы проверить ограничение имени файла, см. Stackoverflow.com/questions/6571435/… - мой Ubuntu ext4 имеет предел 255, как и ожидалось. Также связано: askubuntu.com/questions/166764/how-long-can-file-names-be
Таккат
@ArmandBozsik, который, кажется, причина. Есть ли способ увеличить ограничение имени файла в зашифрованном каталоге?
BipedalShark
1
Вы используете eCryptfs? EncFS может иметь другой лимит, или контейнер LUKS фиксированного размера может использовать обычные ext ... Или, не используя шифрование имени файла, может изменить лимит
Xen2050

Ответы:

10

Где установлен лимит Ubuntu,

Это предел файловой системы. Все "ext" имеют ограничение в 255 символов. Вот список множества файловых систем . ReiserFS показывает 4032 байта (но он ограничен 255 символами из-за Linux VFS ).

Неверное ограничение в 144 символа для зашифрованного файла. Это 143 ( от создателя утилиты ecryptfs ). Остальные символы необходимы для шифрования, поэтому вы не можете пройти через него (шифрование не работает с файлами с более чем 143 символами).

и есть ли способ его увеличить?

нет


Еще немного информации. Они покажут ограничение размера файла и каталога в символах:

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

Смотрите /usr/include/linux/limits.hдля объявления этих 2 переменных:

#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

Вы можете изменить это значение, но вам нужно будет перекомпилировать хотя бы функцию fopen (), чтобы оно могло быть использовано. И не будет совместимости ни с какими другими операционными системами.

Поэтому я изменяю свой ответ на: Да, вы можете, но, пожалуйста, не надо :)

Rinzwind
источник