Por que preciso de privilégios de root para desmontar uma unidade na linha de comando, mas não no Nautilus? Como mudar isso?

19

Quando insiro um pen drive, um cartão de memória ou um disco rígido USB, para desmontá-lo por meio da linha de comando, preciso usar:

sudo umount /media/the_device

Mas, posso desmontar o dispositivo em um gerenciador de arquivos como o Nautilus simplesmente clicando no botão de ejeção ou usando o menu de contexto do botão direito do mouse no dispositivo.

Qual é a razão para a diferença? Como posso alterá-lo para que eu possa desmontar da linha de comando sem precisar de privilégios de root? Está mudando uma má ideia?

Editar: Caso tenha mudado, estou executando 9.04. Eu corri a maioria das versões 5.10--9.04, e tanto quanto me lembro, sempre foi assim.

    
por vanden 29.07.2010 / 19:04

2 respostas

35

O Nautilus não desmonta o dispositivo diretamente; ele fala sobre o DBus para um daemon do sistema (udisks-daemon) e pede para ele desmontar.

O daemon verifica se você tem permissão para fazer isso, entrando em contato com outro daemon do sistema, PolicyKit.

O PolicyKit usa a configuração definida em /usr/share/polkit-1/actions/org.freedesktop.udisks.policy (a menos que o administrador do sistema local o substitua em /etc/polkit-1 ). Esse arquivo informa ao PolicyKit que os usuários com sessões de console ativas podem detectar unidades, assim o PolicyKit fala com um terceiro daemon, o ConsoleKit, para ver se você tem sessões de console ativas. O login através do gdm conta como uma sessão de console; fazer login via ssh não.

Há uma ferramenta de linha de comando udisks que permite desmontar dispositivos sem usar o sudo, usando o mesmo mecanismo:

udisks --unmount /dev/sdb1

que desmonta o sistema de arquivos; Eu também posso pegar o dispositivo inteiro com

udisks --detach /dev/sdb

que faz com que o LED da minha chave USB fique escuro.

    
por Marius Gedminas 30.07.2010 / 14:20
8

A situação pode ter mudado - no atual Ubuntu 10.04 umount funciona sem sudo para drives USB. Geralmente eu acho que o comando

gvfs-mount -u /media/the_device

(o gvfs-mount está no pacote gvfs-bin) deve sempre funcionar.

    
por Marcel Stimberg 30.07.2010 / 14:31