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

24

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

sudo umount /media/the_device

Porém, posso desmontar o dispositivo em um gerenciador de arquivos como o Nautilus simplesmente clicando no botão ejetar ou usando o menu de contexto do dispositivo.

Qual é a justificativa para a diferença? Como posso alterá-lo para poder desmontar da linha de comando sem precisar de privilégios de root? Mudar isso é uma má ideia?

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

Vanden
fonte
2
Huh, eu não tinha pensado nisso. Isso é estranho, não é?
DLH
Sim, e há as montagens misteriosas. Eu venho tentando há muito tempo descobrir como o nautilus localiza e monta a rede local do Windows em que os computadores da casa funcionam. Posso acessar as pastas compartilhadas de qualquer lugar através do nautilus, mas seria realmente bacana saber como chegar lá de um terminal.
Campadrenalin
Qualquer unidade de rede no Nautilus pode ser acessada em ~ / .gvfs. Além disso, eu recomendo o nautilus-open-terminalplugin.
Marius Gedminas

Respostas:

40

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

O daemon verifica se você tem permissão para fazer isso, entrando em contato com outro daemon do sistema, o 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 a substitua /etc/polkit-1). Esse arquivo informa ao PolicyKit que os usuários com sessões de console ativas podem desconectar unidades, portanto o PolicyKit conversa com um terceiro daemon, o ConsoleKit, para verificar se você possui sessões de console ativas. O login via gdm conta como uma sessão do console; o login via ssh não.

Existe uma ferramenta de linha de comando udisksque permite desmontar dispositivos sem usar o sudo, usando o mesmo mecanismo:

udisks --unmount /dev/sdb1

que desmonta o sistema de arquivos; Também posso destacar o dispositivo inteiro com

udisks --detach /dev/sdb

o que escurece o LED da minha chave USB.

Marius Gedminas
fonte
3
Quero agradecer muito por me instigar a fazer esta pesquisa. Eu queria uma ferramenta de linha de comando para desmontar dispositivos sem usar o sudo por um longo tempo.
Marius Gedminas
1
Bem-vindo por tê-lo provocado a dar uma resposta muito boa à minha pergunta. :-)
vanden
1
Os direitos para fazer isso não estão mais presentes (a partir de Ubuntu 12.10) - no entanto a resposta abaixo com gvfs-mountagora trabalha
David Fraser
9

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

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

Marcel Stimberg
fonte
2

As respostas atuais estão obsoletas. Experimentar:

gio mount --unmount *mounted location*

obtenha as partições montadas atuais com, por exemplo:

lsblk | grep media
Pablo A
fonte