Файловая система, хранящаяся на диске, не хранит разрешения для файлов, но драйвер файловой системы должен предоставлять их операционной системе, поскольку они являются неотъемлемой частью концепции файловой системы Unix, а интерфейсы системных вызовов не могут представить, что разрешения отсутствует.
Также подумайте, что произойдет, если у файла вообще не будет битов разрешения? Будет ли это так же, как 0777
, то есть доступ ко всем; или так же, как 0000
, т.е. нет доступа ни к кому? Но оба они имеют права доступа к файлам, так почему бы не показать их? Или сделайте что-нибудь более полезное и у вас есть возможность установить разумные разрешения.
Таким образом, драйвер подделывает некоторые разрешения, одинаковые для всех файлов. Разрешения вместе с владельцем и группой файлов настраиваются во время монтирования. Они описаны в разделе «Опции монтирования для сала» на странице руководства mount (8) :
Параметры монтирования для fat (Примечание: fat - это не отдельная файловая система, а общая часть файловых систем msdos, umsdos и vfat.)
uid=value
и gid=value
установите владельца и группу всех файлов. (По умолчанию: UID и GID текущего процесса.)
umask=value
Установите umask (битовая маска разрешений, которых нет). По умолчанию используется umask текущего процесса. Значение дано в восьмеричном виде.
dmask=value
Установите umask, примененный только к каталогам. По умолчанию используется umask текущего процесса. Значение дано в восьмеричном виде.
fmask=value
Установите umask, примененный только к обычным файлам. По умолчанию используется umask текущего процесса. Значение дано в восьмеричном виде.
Обратите внимание, что разрешения представлены в виде масок, поэтому окончательные разрешения являются отрицанием маски. fmask=0133
приведет ко всем файлам, имеющим разрешения 0644
, или rw-r--r--
.
Кроме того, значения по умолчанию наследуются от вызова процесса mount()
, поэтому, если вы вызываете mount
из командной строки, оболочки umask
будут применяться.