Вопрос или проблема
Я изучаю, как настроить tmpfs в fstab для пользователя www-data, и мне интересно, могу ли я использовать фактические имена пользователя/группы вместо числовых идентификаторов (личное предпочтение)?
Я на Debian с ext4, отформатированным с “msdos” во время установки.
Похоже, это работает, но мне интересно, является ли это особенностью Debian или это будет работать на разных платформах (мне нравится переносимость)?
Вот что у меня есть:
$ vim /etc/fstab
# Временные файлы PHP.
tmpfs /tmpfs/php-session tmpfs defaults,size=512M,mode=1700,uid=www-data,gid=www-data,noexec,nodev,nosuid 0 0
tmpfs /tmpfs/php-upload tmpfs defaults,size=256M,mode=1700,uid=www-data,gid=www-data,noexec,nodev,nosuid 0 0
Программа Linux mount
интерпретирует ненумерические параметры для опций uid
и gid
как имена пользователя и группы соответственно. Это применяется ко всем типам файловых систем. Это работает как в случае, если опции поступают из командной строки, так и если они поступают из /etc/fstab
.
Источник: источник (старый (parse_opt
), новый (mnt_optstr_fix_gid
, mnt_optstr_fix_uid
)).
Если вы используете файловую систему ext
, опции uid
и gid
игнорируются, так как разрешения устанавливаются самой файловой системой.
Для цитаты gilles из другого ответа:
На файловой системе ext4 (как и ext2, ext3 и большинстве других файловых систем, имеющих unix-источник) действительные разрешения файлов не зависят от того, кто смонтировал файловую систему или от опций монтирования, а только от метаданных, хранящихся внутри файловой системы.
Один из способов решить эту проблему – это chown
или chgrp
файловую систему в какой-то момент после монтирования.
На мой взгляд, это своего рода хак, но что я сделал, так это в пути /mnt у меня есть /mnt/somefolder, что я сделал, так это вручную создать эту папку перед монтированием чего-либо, а затем изменить владельца и группу на мой uid/gid. После этого каждый раз, когда fstab монтируется, он сохраняет эти разрешения/право собственности.
то есть.
sudo mkdir /mnt/somefolder
#получить uid и gid
id -u
id -g
#изменить владельца
sudo chown {uid}:{gid} /mnt/somefolder
#теперь монтируйте с тем, что вы настроили в fstab
sudo mount -a
Ответ или решение
Вопрос о том, могут ли параметры uid
и gid
в файле /etc/fstab
в Linux быть указаны в виде имен пользователей и групп, а не только в числовом формате, является актуальным во время настройки системных файлов. Давайте рассмотрим этот вопрос более детально.
Возможные значения для uid и gid
В контексте Linux, когда вы настраиваете файлы системных монтирований, такие как в fstab
, параметры uid
и gid
могут принимать как числовые значения (например, 33 для пользователя www-data
), так и строковые значения (имя пользователя или группы, например, www-data
). Система mount
в Linux интерпретирует несчисловые параметры как имена пользователей и групп. Это относится не только к опциям, заданным в fstab
, но и к тем, что передаются через командную строку. Таким образом, использование имен пользователей и групп является допустимым и поддерживается.
Платформенная совместимость
Это поведение не является особенностью какой-либо конкретной Linux-дистрибутив, такой как Debian, а является частью общего поведения Linux. Следовательно, использование имен пользователей и групп вместо числовых идентификаторов сделает вашу конфигурацию переносимой между различными дистрибутивами Linux.
Хранение прав доступа в файловых системах
Однако важно понимать, что для файловых систем, таких как ext4
, параметры uid
и gid
в некоторых случаях могут игнорироваться. Это происходит потому, что файловая система сама хранит метаданные о разрешениях, и права доступа зависят от этих метаданных, а не от параметров, заданных при монтировании. Как упоминалось в вашем источнике, effective permissions основаны на информации внутри файловой системы, а не на параметрах монтирования. Это означает, что даже если вы укажете идентификаторы в fstab
, они будут игнорироваться при использовании ext4
.
Рекомендации по управлению правами доступа
Для управления правами доступа к временным файловым системам, таким как tmpfs
, вы можете использовать команды chown
и chgrp
для изменения владельца каталога после его монтирования. Это даст вам возможность установить необходимые права доступа. Ваша предложенная стратегия создания каталога предварительно и последующего изменения его владельца является хорошим подходом для гарантии правильных разрешений при каждом монтировании.
Выводы
-
Использование имен пользователей и групп: Возможность использования имен вместо числовых идентификаторов поддерживается и является функциональным на всех дистрибутивах Linux.
-
Игнорирование параметров uid и gid для ext4: Будьте внимательны, что права доступа на файлы, созданные в файловой системе
ext4
, определяются самими метаданными системы, а не параметрами монтирования. -
Управление правами через chown: Рекомендуется использовать
chown
иchgrp
для задания прав на монтируемые системы, чтобы гарантировать, что необходимые права доступа будут установлены.
Эта информация позволит вам более уверенно настраивать временные файловые системы и обеспечивать их правильное функционирование в ваших окружениях Linux.