it-swarm-es.com

¿Por qué necesito privilegios de root para desmontar una unidad en la línea de comandos, pero no en Nautilus? ¿Cómo cambiar eso?

Cuando inserto una memoria USB, una tarjeta de memoria o un disco duro USB, para desmontarla a través de la línea de comando, necesito usar:

Sudo umount /media/the_device

Pero, puedo desmontar el dispositivo en un administrador de archivos como Nautilus simplemente haciendo clic en el botón de expulsión o usando el menú contextual del botón derecho en el dispositivo.

¿Cuál es la razón de la diferencia? ¿Cómo puedo cambiarlo para poder desmontar desde la línea de comandos sin necesidad de privilegios de root? ¿Cambiarlo es una mala idea?

Editar: en caso de que haya cambiado, estoy ejecutando 9.04. He ejecutado la mayoría de las versiones 5.10--9.04, y hasta donde recuerdo, siempre ha sido así.

22
vanden

Nautilus no desmonta el dispositivo directamente; habla sobre DBus con un demonio del sistema (udisks-daemon) y le pide que desmonte.

El demonio verifica si se le permite hacer eso, contactando a otro demonio del sistema, PolicyKit.

PolicyKit usa la configuración definida en /usr/share/polkit-1/actions/org.freedesktop.udisks.policy (a menos que el administrador del sistema local la anule en /etc/polkit-1). Ese archivo le dice a PolicyKit que los usuarios con sesiones de consola activas pueden desconectar unidades, por lo que PolicyKit habla con un tercer demonio, ConsoleKit, para ver si tiene sesiones de consola activas. Iniciar sesión a través de gdm cuenta como una sesión de consola; iniciar sesión a través de ssh no lo hace.

Hay una herramienta de línea de comandos udisks que te permite desmontar dispositivos sin usar Sudo, usando el mismo mecanismo:

udisks --unmount /dev/sdb1

que desmonta el sistema de archivos; También puedo desconectar todo el dispositivo con

udisks --detach /dev/sdb

lo que hace que el LED de mi llave USB se apague.

39
Marius Gedminas

La situación podría haber cambiado: en Ubuntu 10.04 actual umount funciona sin Sudo para unidades USB. Generalmente creo que el comando

gvfs-mount -u /media/the_device

(gvfs-mount está en el paquete gvfs-bin) siempre debería funcionar.

9
Marcel Stimberg