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
diskgrupo.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
udevadmpara esto. Por ejemplo:Luego cree un nuevo archivo en
/etc/udev/rules.d, como99-cardreader.rules:Aquí utilicé el resultado del
udevadm infocomando para encontrar información de identificación para el dispositivo. Usé laSUBSYSTEM="block"entrada para la primera entrada, y luego losATTRSvalores 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
RUNcomando 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
patrickacceso 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 losATTRSpará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
$nameen la regla escrita? ¿Debería reemplazarlo porsdb?