Mam podłączony czytnik kart /dev/sdb
.
To, co robię, to udzielanie wszystkich uprawnień właścicielowi, grupie i reszcie świata, używając:
sudo chmod 777 /dev/sdb
Czy mogę po prostu użyć innej kombinacji, pozwalając tylko właścicielowi (mnie) korzystać z czytnika kart?
Istnieje tylko jedno konto użytkownika.
linux
permissions
block-device
Mohamed Ahmed
źródło
źródło
ls -l /dev/sdb
. Zgaduję, że jest to własność root, ale dobrze byłoby się upewnić.Odpowiedzi:
Istnieje wiele sposobów osiągnięcia tego celu.
1. Dodaj użytkownika do grupy, która jest właścicielem urządzenia
Zasadniczo w większości dystrybucji urządzenia blokowe są własnością określonej grupy. Wszystko, co musisz zrobić, to dodać użytkownika do tej grupy.
Na przykład w moim systemie:
Dlatego muszę dodać mojego użytkownika do
disk
grupy.2. Zmień uprawnienia urządzenia
Pomysł polega na utworzeniu reguły udev w celu uruchomienia polecenia po wykryciu urządzenia.
Najpierw musisz znaleźć sposób na identyfikację urządzenia. Używasz
udevadm
do tego. Na przykład:Następnie utwórz nowy plik
/etc/udev/rules.d
, na przykład99-cardreader.rules
:Tutaj użyłem danych wyjściowych
udevadm info
polecenia, aby znaleźć informacje identyfikujące urządzenie. Użyłem tegoSUBSYSTEM="block"
wpisu dla pierwszego wpisu, a następnieATTRS
wartości z szóstego wpisu. To w zasadzie znajdzie urządzenie USB z tym produktem i numerem seryjnym, a następnie znajdzie urządzenie blokowe, które wynika z tego urządzenia USB.RUN
Polecenie zmiany uprawnień do urządzenia777
. Jednak nie uważam tego za bardzo dobre rozwiązanie, ponieważ otwiera to urządzenie na świat. Zamiast tego lepszym rozwiązaniem może być:Umożliwi to użytkownikowi
patrick
dostęp do odczytu / zapisu do urządzenia.Uwaga: Ważne jest, aby pamiętać, że pisząc reguły udev, możesz używać parametrów tylko z górnego urządzenia i jednego innego urządzenia w łańcuchu. W ten sposób mogę użyć
SUBSYSTEM="block"
parametru iATTRS
parametrów. Ale nie mogłem użyć żadnych parametrów z żadnego innego urządzenia w łańcuchu, w przeciwnym razie reguła nie byłaby zgodna.Kolejna uwaga: (ponieważ system wymaga więcej niż 6 znaków do edycji, a nie mam reputacji, aby dodać komentarz) w dopasowaniu udev należy używać operatora równości (
==
), a nie przypisania (=
)! Ta odpowiedź miała wcześniej,SUBSYSTEM="block"
która nie działa (invalid SUBSYSTEM operation
).źródło
$name
w zapisanej regule? powinienem to zastąpićsdb
?