Como faço para enganar o Nautilus para usar “sudo mount” em vez de apenas “mount”?

3

Graças a novas "correções de segurança" em mount ou mount.cifs (não sei ao certo), não é mais possível que usuários comuns montem qualquer coisa, mesmo que sejam explicitamente autorizados a usar user , users ou owner sinalizadores. Por esse motivo, mudei a configuração do sudo para permitir que meu usuário execute os comandos de montagem específicos para meus compartilhamentos de rede sem uma senha. Em seguida, criei um script em $HOME/bin chamado mount , que contém:

sudo /usr/bin/mount "$*"

Então agora eu posso basicamente usar o mount como eu costumava, sem ter que digitar uma senha. O problema é que não consigo montar meus compartilhamentos de rede usando o Nautilus, o que é muito mais conveniente. Estou usando o sinalizador noauto no fstab porque, caso contrário, a montagem ocorrerá antes de eu estabelecer uma conexão de rede sem fio e falhar imediatamente.

Os compartilhamentos aparecem no Nautilus como pastas esmaecidas, e quando eu clico na pasta, o Nautilus tenta montar o compartilhamento usando um comando como este (eu acho):

/usr/bin/mount "/media/My Network Share"

Qual falha, porque não usa sudo . Eu tentei fazer:

PATH="$HOME/bin:$PATH" nautilus

Mas o erro ainda ocorre, presumivelmente porque o Nautilus usa o caminho absoluto para mount .

Então, minha pergunta é: existe alguma maneira de eu enganar o Nautilus para usar sudo /usr/bin/mount , ou mesmo apenas mount sem o caminho absoluto?

Meu último recurso é basicamente mover o mount binary para outro lugar e substituí-lo por um script bash. O script bash verificaria qual usuário o está executando e, se for meu usuário, ele anexará sudo na frente do comando. Caso contrário, seria apenas chamar o executável de montagem real normalmente. Espero evitar ir a medidas tão drásticas, já que eu poderia facilmente destruir o meu sistema além da minha capacidade de reparo.

    
por Hubro 31.01.2015 / 21:34

1 resposta

1

Você pode tornar os binários do Linux executáveis com permissões de root definindo o atributo setuid no executável que você precisa chamar. Você também pode querer criar um grupo que tenha acesso somente para montar coisas (a menos que seja uma única instalação, então você pode simplesmente usar seu grupo de usuários). Então, algo como o seguinte em um shell de raiz:

# groupadd mounters
# usermod -a -G mounters yourusername
# chgrp mounters /bin/mount
# chmod g+s /bin/mount

Assim, cria um grupo chamado "mounters", adiciona seu usuário a esse grupo, altera o grupo em / bin / mount para "mounters" e, em seguida, define o atributo setuid apenas para esse grupo em / bin / mount. Se você, então, executar esse binário, você deve estar efetivamente executando-o como root.

Confira o link para obter mais informações.

    
por 13.03.2015 / 12:14