Вопрос или проблема
У меня есть съемная SD-карта, отформатированная в exfat, которую я хотел бы смонтировать с помощью udisksctl
через механизм udisks2
.
Что я хочу сделать, так это воспроизвести опцию noexec
, используя dmask=0002
и fmask=0113
.
У меня есть следующая строка в /etc/udisks2/mount_options.conf
:
exfat_defaults=uid=$UID,gid=$GID,iocharset=utf8,errors=remount-ro,dmask=0002,fmask=0113
Когда я проверяю с помощью ls -al
, эти параметры не применяются. Файлы имеют разрешения .rwxr-xr-x
(0755), а директории имеют drwxr-xr-x
(0755).
Что мне нужно сделать, чтобы udisks2
принял файл конфигурации и не игнорировал его? Параметры были записаны в соответствии с последними спецификациями storaged.org.
Все существующие вопросы на https://unix.stackexchange.com не имеют решения. Я надеюсь, что коллективный разум теперь обладает лучшими знаниями.
После некоторых экспериментов я смог найти ответ.
Строка
exfat_defaults=uid=$UID,gid=$GID,iocharset=utf8,errors=remount-ro,dmask=0002,fmask=0113
самостоятельно недостаточна. Она должна следовать синтаксису .ini-файла с именем раздела, предшествующим ключевому слову, в противном случае служба udisks2 выдает сообщение об ошибке (с помощью systemctl status udisks2.service
или journalctl -u udisks2
):
Ошибка чтения глобального файла конфигурации параметров монтирования /etc/udisks2/mount_options.conf: Файл ключей не начинается с группы.
Корректный .conf файл будет выглядеть так:
### Монтирование устройств exfat и vfat с опцией noexec, ntfs3 не влияет (!)
[defaults]
exfat_defaults=uid=$UID,gid=$GID,iocharset=utf8,errors=remount-ro,dmask=0002,fmask=0113
# exfat_allow=uid=$UID,gid=$GID,dmask,errors,fmask,iocharset,namecase,umask
vfat_defaults=uid=$UID,gid=$GID,dmask=0002,fmask=0113,shortname=mixed,utf8=1,flush
# vfat_allow=uid=$UID,gid=$GID,flush,utf8,shortname,umask,dmask,fmask,codepage,iocharset,usefree,showexec
ntfs:ntfs3_defaults=uid=$UID,gid=$GID,dmask=0002,fmask=0113
# ntfs:ntfs3_allow=uid=$UID,gid=$GID,umask,dmask,fmask,iocharset,discard,nodiscard,sparse,nosparse,hidden,nohidden,sys_immutable,nosys_immutable,showmeta,noshowmeta,prealloc,noprealloc,hide_dot_files,nohide_dot_files,windows_names,nocase,case
Нет необходимости перезагружать службу с помощью systemctl restart udisks2.service
, файл конфигурации считывается при каждом монтировании.
Чтобы наблюдать эффект изменений в .conf файле, достаточно использовать udisksctl unmount -b /dev/sdb1
, а затем udisksctl mount -b /dev/sdb1
.
Когда файл правильно оформлен, в журнале файла/статусе службы теперь есть строка
Используются переопределенные параметры монтирования: uid=$UID,gid=$GID,iocharset=utf8,errors=remount-ro,dmask=0002,fmask=0113
и изменения действуют для вновь смонтированного устройства. Закомментированные строки ‘allow’ содержат параметры по умолчанию, из которых можно выбирать. Их можно дополнительно ограничить для ручного монтирования, удалив опции и раскомментировав.
На данный момент (2024-10-26, udisks2 2.10.1, ядро 6.11.0) это работает для vfat и exfat. По неизвестным причинам драйвер ntfs3 все еще игнорирует это и монтирует молча с параметрами по умолчанию (ntfs:ntfs3_defaults=uid=$UID,gid=$GID
).
Из документации, на которую вы ссылались:
Параметры _defaults всегда должны быть подмножеством параметров _allow. Параметры _defaults также объединяются с любыми дополнительными параметрами, переданными через метод Mount()
Выделенное выше – это мое добавление.
Как выглядит ваш exfat_allow
?
Ответ или решение
Установка параметров монтирования udisks2
для файловой системы exfat
Если вы столкнулись с проблемой применения таких параметров монтирования, как dmask
и fmask
, при использовании udisksctl
для файловой системы exfat
, данная статья даст вам полное представление о том, как правильно настроить файл конфигурации и устранить возникшие ошибки.
Проблема
Вы хотите использовать параметры dmask=0002
и fmask=0113
для управления правами доступа к файлам и директориям на вашей съемной SD-карте, отформатированной в формате exfat
. После изменения конфигурации в файле /etc/udisks2/mount_options.conf
вы заметили, что они не применяются, и права доступа остаются по умолчанию (0755
для файлов и директорий).
Решение
Решение заключается в правильно оформленной конфигурации. Опции монтирования должны быть указаны в формате .ini
с именами секций перед ключами. Вот пример правильной конфигурации:
### Монтирование устройств exfat и vfat с опцией noexec
[defaults]
exfat_defaults=uid=$UID,gid=$GID,iocharset=utf8,errors=remount-ro,dmask=0002,fmask=0113
# exfat_allow=uid=$UID,gid=$GID,dmask,errors,fmask,iocharset,namecase,umask
vfat_defaults=uid=$UID,gid=$GID,dmask=0002,fmask=0113,shortname=mixed,utf8=1,flush
# vfat_allow=uid=$UID,gid=$GID,flush,utf8,shortname,umask,dmask,fmask,codepage,iocharset,usefree,showexec
ntfs:ntfs3_defaults=uid=$UID,gid=$GID,dmask=0002,fmask=0113
# ntfs:ntfs3_allow=uid=$UID,gid=$GID,umask,dmask,fmask,iocharset,discard,nodiscard,sparse,nosparse,hidden,nohidden,sys_immutable,nosys_immutable,showmeta,noshowmeta,prealloc,noprealloc,hide_dot_files,nohide_dot_files,windows_names,nocase,case
Объяснение конфигурации
-
Секции и ключи: Все параметры должны находиться под соответствующей секцией с использованием квадратных скобок. В примере выше используется секция
[defaults]
. -
Параметры
_defaults
и_allow
: Следует помнить, что параметры_defaults
всегда должны быть подмножеством параметров_allow
. Например, если вы хотите настроить возможностьdmask
иfmask
, вам необходимо убедиться, что они указаны вexfat_allow
. -
Применение параметров: После изменения файла конфигурации не требуется перезапускать службу
udisks2
. Вместо этого, достаточно смонтировать устройство снова с помощью команд:udisksctl unmount -b /dev/sdb1 udisksctl mount -b /dev/sdb1
-
Проверка: После повторного монтирования проверьте ваш журнал или статус службы
udisks2
с помощью:systemctl status udisks2.service journalctl -u udisks2
Если настройки применяются корректно, в логе будет строка, подтверждающая использование переопределенных параметров монтирования.
Вывод
Правильная настройка файла конфигурации для udisks2
является ключевым фактором для успешного применения параметров монтирования файловых систем. Убедитесь, что используете корректный формат конфигурации, четко указывая секции и ключи. Это позволит вам контролировать права доступа на вашей exfat
файловой системе, соблюдая требования безопасности.