Опции монтирования udisks2 (dmask, fmask) не применяются при монтировании с помощью udisksctl (файловая система exfat)

Вопрос или проблема

У меня есть съемная 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

Объяснение конфигурации

  1. Секции и ключи: Все параметры должны находиться под соответствующей секцией с использованием квадратных скобок. В примере выше используется секция [defaults].

  2. Параметры _defaults и _allow: Следует помнить, что параметры _defaults всегда должны быть подмножеством параметров _allow. Например, если вы хотите настроить возможность dmask и fmask, вам необходимо убедиться, что они указаны в exfat_allow.

  3. Применение параметров: После изменения файла конфигурации не требуется перезапускать службу udisks2. Вместо этого, достаточно смонтировать устройство снова с помощью команд:

    udisksctl unmount -b /dev/sdb1
    udisksctl mount -b /dev/sdb1
  4. Проверка: После повторного монтирования проверьте ваш журнал или статус службы udisks2 с помощью:

    systemctl status udisks2.service
    journalctl -u udisks2

    Если настройки применяются корректно, в логе будет строка, подтверждающая использование переопределенных параметров монтирования.

Вывод

Правильная настройка файла конфигурации для udisks2 является ключевым фактором для успешного применения параметров монтирования файловых систем. Убедитесь, что используете корректный формат конфигурации, четко указывая секции и ключи. Это позволит вам контролировать права доступа на вашей exfat файловой системе, соблюдая требования безопасности.

Оцените материал
Добавить комментарий

Капча загружается...