У меня есть внешний жесткий диск USB, на который моя программа резервного копирования должна записывать резервные копии. Программа резервного копирования требует определенных разрешений. Я понимаю, что NTFS в Ubuntu не позволяет мне устанавливать разрешения в стиле unix для каталогов или файлов ... Я должен применить необходимые разрешения к корню жесткого диска во время монтирования. Я хочу, чтобы этот привод и дальше монтировался автоматически. Я узнал о правилах udev и пытался их использовать. Однако я видел серьезные ошибки, когда привод становился недоступным.
Для сопоставителей udev это работает: ATTRS {vendor} == "ASMT", ATTRS {model} == "2105"
. Но я не уверен во всем после этого. Изначально мне удалось изменить название группы на / dev / sd ??
, но (а) я не могу воспроизвести его сейчас и (б) когда это сработало, все равно не получилось. повлиять на разрешения на смонтированном диске ... Я предполагаю, что единственный способ изменить их - это изменить команду mount
.
Что я знаю:
blkid
для получения текущего пути к устройству накопителя. udevadm monitor --environment --udev
для получения информации при подключении или отключении USB-накопителя. udevadm info -a -p $ ( udevadm info -q path -n / dev / sd?)
для получения возможных сопоставлений для устройства sudo udevadm control --reload
для перезагрузки изменений, внесенных мной в правила файлы в /etc/udev/rules.d
RUN + = "echo bingo% k"
в файле правил, это приведет к его отображению в тесте udevadm
, что заставляет меня думать, что мои сопоставители в порядке. Чего я не знаю:
mount
в файл правил. (В какой-то момент у меня была команда монтирования, но это привело к ошибкам, и диск стал недоступен). udevadm control --reload
. (Кажется, я не могу повторить некоторые частичные успехи, которые у меня были при использовании GROUP = "urbackup", MODE = "0666"
.) правила udev
- это способ пойти сюда. Все, что я хочу сделать, это изменить разрешения подключенного диска. 10
, и высокие, такие как 100
. Ubuntu 20.04.
Вот некоторые подробности:
Последнее мое правило - ATTRS {vendor} == "ASMT", ATTRS {model} == "2105", ACTION == "add", GROUP = "urbackup", MODE = "0666", RUN + = "/ usr / bin / mount -o umask = 001, dmask = 007, fmask = 117, gid = 134, uid = 1000 / dev /% k / media / eddie / Интерстеллар »
. - тест udevadm
показывает команду запуска, но после перезагрузки правил и фактического подключения диска, похоже, ничего не изменилось.
Обновление: если я немного изменю команду на:
ATTRS {vendor} == "ASMT", ATTRS {model} == "2105", ACTION == "add", GROUP = urbackup, MODE = "0666", RUN + = "/ usr / bin / mount -o umask = 001, dmask = 007, fmask = 117, gid = 134, uid = 1000 / dev /% k / media / Interstellar"
--- и задайте имя файла, чтобы оно начиналось с 10-
, затем после включения и выключения питания USB-накопителя я получаю сообщение об ошибке Транспортная конечная точка не подключена
. Я не получаю эту ошибку при использовании 70-
в начале имени файла, но тогда это действует так, как если бы я вообще не создавал правило udev.
Краткая версия:
Если изменение группы на автоматически монтируемом внешнем диске - единственная настраиваемая вещь вам нужно, правила udev - неправильное решение. Для этого подойдут правки fstab
. Я выяснил это, попробовав пользовательский интерфейс Disks
, который дает возможность редактировать параметры монтирования в разделе жесткого диска. Поигравшись с ним, я понял, что это просто пользовательский интерфейс для создания записи fstab
. В частности, для этой проблемы мне нужно было добавить gid =
к параметрам монтирования. Я также использовал значения umask
, dmask
и fmask
, а также uid =
, но я не уверен, что из них были строго необходимы. Вот полная строка, которую пользовательский интерфейс Disks
помог мне записать в FSTAB:
LABEL=Interstellar /media/Interstellar auto nosuid,nodev,nofail,x-gvfs-show,umask=001,dmask=007,fmask=117,gid=134,uid=1000,noauto 0 0