Ano, můžete napsat pravidlo udev.
V /etc/udev/rules.d
vytvořte soubor 30-mydevice.rules
(číslo musí být od 0 do 99 a rozhoduje pouze o pořadí běhu skriptu; na názvu nezáleží, musí být pouze popisný; .rules
rozšíření je však vyžadováno)
V tomto příkladu předpokládám, že vaše zařízení je založeno na USB a vy znáte jeho dodavatele a ID produktu (lze zkontrolovat pomocí lsusb -v
) a používáte mydevice
skupina, ve které musí být váš uživatel, aby mohl zařízení používat. V tomto případě by to měl být obsah souboru:
SUBSYSTEM=="usb", SYSFS{idVendor}=="0123", SYSFS{idProduct}=="4567", ACTION=="add", GROUP="mydevice", MODE="0664"
MODE
rovná 0664 umožňuje, aby do zařízení zapisoval jeho vlastník (pravděpodobně root) a definovaná skupina.
Jedním ze způsobů je přidat uživatele do odpovídající „skupiny zařízení“. V Linuxu existuje celá řada skupin pro různé druhy zařízení (disk, disketa, tty, video, cdrom, ...), takže uživatele můžete přidat do odpovídající skupiny v /etc/group
.
Dalším způsobem je vytvořit "pseudo-uživatele" (např. herního uživatele). Tohoto uživatele přidáte do skupin zařízení, které by měl mít. Nakonec změníte vlastníka určitých programů (např. programu pro skenování obrázků) na tohoto uživatele a nastavíte chmod u+s
. To způsobí, že program bude spuštěn jako pseudouživatel – nikoli skutečný uživatel, a bude tak mít přístup k zařízením. Pomocí skupiny programů můžete omezit, který uživatel může program spustit.
Nakonec můžete nastavit skupinu programů, které potřebují konkrétní zařízení, do skupiny zařízení a nastavit chmod g+s
. To způsobí, že program poběží s právy skupiny (kromě práva běžného uživatele, který jej spouští), a umožní tak rozšířený přístup k zařízení.