J'ai un lecteur de carte connecté /dev/sdb
.
Ce que je fais, c'est donner toutes les autorisations au propriétaire, au groupe et au reste du monde, en utilisant:
sudo chmod 777 /dev/sdb
Puis-je simplement utiliser une autre combinaison, permettant uniquement au propriétaire (moi) d'utiliser le lecteur de carte?
Il n'y a qu'un seul compte utilisateur.
linux
permissions
block-device
Mohamed Ahmed
la source
la source
ls -l /dev/sdb
. Je suppose que cela appartient à root, mais ce serait bien de s'en assurer.Réponses:
Il existe plusieurs façons d'y parvenir.
1. Ajoutez votre utilisateur au groupe propriétaire de l'appareil
Généralement, dans la plupart des distributions, les périphériques de bloc appartiennent à un groupe spécifique. Il vous suffit d'ajouter votre utilisateur à ce groupe.
Par exemple, sur mon système:
J'ai donc besoin d'ajouter mon utilisateur au
disk
groupe.2. Modifiez les autorisations de l'appareil
L'idée est de créer une règle udev pour exécuter une commande lorsque le périphérique est détecté.
Vous devez d'abord trouver un moyen d'identifier l'appareil. Vous utilisez
udevadm
pour cela. Par exemple:Créez ensuite un nouveau fichier dans
/etc/udev/rules.d
, tel que99-cardreader.rules
:Ici, j'ai utilisé la sortie de la
udevadm info
commande pour trouver des informations d'identification pour le périphérique. J'ai utilisé l'SUBSYSTEM="block"
entrée pour la toute première entrée, puis lesATTRS
valeurs de la 6e entrée. Cela va essentiellement trouver le périphérique USB avec ce produit et numéro de série, puis trouver le périphérique de bloc qui résulte de ce périphérique USB.La
RUN
commande modifiera les autorisations sur le périphérique en777
. Cependant, je ne considère pas cela comme une très bonne solution car cela ouvre l'appareil au monde. Au lieu de cela, une meilleure solution pourrait être:Cela accordera à l'utilisateur un
patrick
accès en lecture / écriture à l'appareil.Remarque: Il est important de se rappeler que lors de l'écriture de règles udev, vous ne pouvez utiliser que les paramètres du périphérique supérieur et d'un autre périphérique de la chaîne. Ainsi, je peux utiliser le
SUBSYSTEM="block"
paramètre et lesATTRS
paramètres. Mais je ne pouvais utiliser aucun paramètre d'un autre appareil de la chaîne, sinon la règle ne correspondrait pas.Autre remarque: (puisque le système nécessite plus de 6 caractères pour une modification et que je n'ai pas la réputation d'ajouter un commentaire) la correspondance udev doit utiliser l'opérateur d'égalité (
==
), pas d'affectation (=
)! Cette réponse avait précédemmentSUBSYSTEM="block"
qui ne fonctionne pas (invalid SUBSYSTEM operation
).la source
$name
contient la règle écrite? dois-je le remplacer parsdb
?