У меня есть кард-ридер /dev/sdb
.
Что я делаю, так это даю все разрешения владельцу, группе и остальному миру, используя:
sudo chmod 777 /dev/sdb
Могу ли я просто использовать другую комбинацию, позволяющую только владельцу (мне) использовать кард-ридер?
Существует только одна учетная запись пользователя.
linux
permissions
block-device
Мохамед Ахмед
источник
источник
ls -l /dev/sdb
. Я предполагаю, что это принадлежит root, но было бы хорошо убедиться.Ответы:
Есть несколько способов сделать это.
1. Добавьте своего пользователя в группу, которой принадлежит устройство
Обычно в большинстве дистрибутивов блочные устройства принадлежат определенной группе. Все, что вам нужно сделать, это добавить вашего пользователя в эту группу.
Например, в моей системе:
Таким образом мне нужно добавить моего пользователя в
disk
группу.2. Измените права доступа к устройству
Идея состоит в том, чтобы создать правило udev для запуска команды при обнаружении устройства.
Для начала нужно найти способ идентифицировать устройство. Вы используете
udevadm
для этого. Например:Затем создайте новый файл
/etc/udev/rules.d
, например99-cardreader.rules
:Здесь я использовал вывод
udevadm info
команды, чтобы найти некоторую идентифицирующую информацию для устройства. Я использовалSUBSYSTEM="block"
запись для самой первой записи, а затемATTRS
значения из 6-й записи. Это в основном найдет USB-устройство с этим продуктом и серийным номером, а затем найдет блочное устройство, полученное с этого USB-устройства.Команда
RUN
изменит разрешения на устройстве на777
. Однако я не считаю это очень хорошим решением, так как оно открывает устройство для всего мира. Вместо этого лучшим решением может быть:Это предоставит пользователю
patrick
доступ для чтения / записи к устройству.Примечание. Важно помнить, что при написании правил udev вы можете использовать параметры только верхнего устройства и одного другого устройства в цепочке. Таким образом, я могу использовать
SUBSYSTEM="block"
параметр иATTRS
параметры. Но я не мог использовать какие-либо параметры с любого другого устройства в цепочке, иначе правило не соответствовало бы.Еще одно примечание: (поскольку системе требуется более 6 символов для редактирования, а у меня нет репутации для добавления комментария) для соответствия udev необходимо использовать оператор равенства (
==
), а не assignment (=
)! Этот ответ ранее былSUBSYSTEM="block"
не работает (invalid SUBSYSTEM operation
).источник
$name
в письменном правиле? я должен заменить этоsdb
?