Tengo un lector de tarjetas conectado /dev/sdb
.
Lo que hago es otorgar todos los permisos al propietario, al grupo y al resto del mundo, usando:
sudo chmod 777 /dev/sdb
¿Puedo usar otra combinación, permitiendo que solo el propietario (yo) use el lector de tarjetas?
Solo hay una cuenta de usuario.
linux
permissions
block-device
Mohamed Ahmed
fuente
fuente
ls -l /dev/sdb
? Supongo que esto es propiedad de root, pero sería bueno asegurarse.Respuestas:
Hay múltiples formas de lograr esto.
1. Agregue su usuario al grupo que posee el dispositivo
Generalmente en la mayoría de las distribuciones, los dispositivos de bloque son propiedad de un grupo específico. Todo lo que necesita hacer es agregar su usuario a ese grupo.
Por ejemplo, en mi sistema:
Por lo tanto, necesito agregar mi usuario al
disk
grupo.2. Cambiar los permisos del dispositivo
La idea es crear una regla udev para ejecutar un comando cuando se detecta el dispositivo.
Primero necesita encontrar una manera de identificar el dispositivo. Usas
udevadm
para esto. Por ejemplo:Luego cree un nuevo archivo en
/etc/udev/rules.d
, como99-cardreader.rules
:Aquí utilicé el resultado del
udevadm info
comando para encontrar información de identificación para el dispositivo. Usé laSUBSYSTEM="block"
entrada para la primera entrada, y luego losATTRS
valores de la sexta entrada. Básicamente, esto encontrará el dispositivo USB con ese producto y número de serie, y luego encontrará el dispositivo de bloque que resulta de ese dispositivo USB.El
RUN
comando cambiará los permisos en el dispositivo a777
. Sin embargo, no considero que sea una muy buena solución, ya que abre el dispositivo al mundo. En cambio, una mejor solución podría ser:Esto otorgará al usuario
patrick
acceso de lectura / escritura al dispositivo.Nota: Es importante recordar que al escribir reglas de udev, solo puede usar parámetros del dispositivo superior y otro dispositivo de la cadena. Por lo tanto, puedo usar el
SUBSYSTEM="block"
parámetro y losATTRS
parámetros. Pero no pude usar ningún parámetro de ningún otro dispositivo en la cadena, o la regla no coincidiría.Otra nota: (dado que el sistema requiere más de 6 caracteres para una edición y no tengo reputación para agregar un comentario), la coincidencia de udev debe usar el operador de igualdad (
==
), no la asignación (=
). Esta respuesta tenía anteriormenteSUBSYSTEM="block"
que no funciona (invalid SUBSYSTEM operation
).fuente
$name
en la regla escrita? ¿Debería reemplazarlo porsdb
?