Fundo
Estou tentando executar automaticamente um comando que monta um compartilhamento Samba protegido por senha quando meu usuário faz login. O problema é que compartilho meu laptop com outro usuário enãoquero que o compartilhamento do Samba seja montado quando ela fizer login. Eu só quero que ele seja montadoquando eu logar. Isso exclui a edição do meu arquivo fstab porque quero que seja específico do usuário.
Pesquisa anterior
Pesquisei e revisei muitas perguntas e respostas relacionadas à montagem de compartilhamentos do Samba, incluindo "Montando compartilhamentos Samba na inicialização/login e usando script" e "Entrada fstab adequada para montar um compartilhamento samba na inicialização," mas a maioria das respostas envolve a edição do fstab, que funciona muito bem para a maioria das pessoas, mas não é isso que estou procurando aqui.
O que eu fiz até agora
Posso montar manualmente o compartilhamento Samba na linha de comando fazendo o seguinte:
sudo mount -t cifs //centaroo.local/Me /media/Me -o uid=scott,gid=scott,credentials=/home/scott/.smbcredentials,iocharset=utf8,sec=ntlm,file_mode=0600,dir_mode=0700
Declaração do problema
O comando anterior funciona muito bem quando eu o executo na linha de comando - ele solicita minha senha para obter permissão sudo, eu a digito e o comando é executado. O problema é que quando adiciono exatamente o mesmo comando ao campo "Comando" em Preferências de aplicativos de inicialização > Editar programa de inicialização, salvo minhas alterações, reinicio e efetuo login novamente, o compartilhamento do Samba não é montado como eu esperava. Suspeito que seja porque preciso de permissão de root para executar como sudo e, com o script nas Preferências dos programas de inicialização, não há como inseri-lo, então o script simplesmente falha.
Como posso contornar isso?
Responder1
Ok, consegui resolver isso sozinho (com a ajuda de outras pessoas). O problema subjacente era, como eu suspeitava, o fato de eu estar tentando executar um comando que exigia privilégios de root sem fornecer uma senha. Resolvi esse problema seguindo as instruções do tópico "Como faço para sudo um comando em um script sem que uma senha seja solicitada". Resumindo, criei um script de shell chamado "script-mount-samba-share.sh" que contém nada além de uma única linha com o comando de montagem que desejo executar:
mount -t cifs //centaroo.local/Me /media/Me -o uid=scott,gid=scott,credentials=/home/scott/.smbcredentials,iocharset=utf8,sec=ntlm,file_mode=0600,dir_mode=0700
Em seguida, alterei a propriedade do arquivo para root:root e alterei suas permissões para 700. Em seguida, configurei o sudo para permitir a execução desse script sem inserir uma senha e, em seguida, alterei o campo "Comando" em Preferências de aplicativos de inicialização > Editar inicialização Programe para "sudo /home/scott/script-mount-samba-share.sh" (sem as aspas) e pronto. Da próxima vez que reiniciei e fiz login com meu usuário, o compartilhamento do Samba foi montado sem que eu levantasse um dedo. Também testei que quando reinicio e faço login com um usuário diferente, o compartilhamento do Samba não é montado, que é o que eu quero.
O único pequeno problema que estou tentando superar agora é que, quando já estou logado e troco de usuário para outra pessoa, meu compartilhamento do Samba ainda aparece na barra de navegação esquerda do Nautilus, o que faz sentido, pois era montado quando fiz login com meu próprio usuário, mas não quero que o compartilhamento montado seja exibido no Nautilus para o outro usuário, então minha próxima tarefa é descobrir como fazer essa parte acontecer.
Responder2
É importante adicionar o nome de usuário e a senha para o comando mount, caso contrário ele poderá solicitar a senha. para mim isso funcionou:
sudo mount -t cifs //centaroo.local/Me /media/Me -o uid=scott,gid=scott,user=,password=,iocharset=utf8,sec=ntlm,file_mode=0600,dir_mode=0700
claro, com todas as mudanças em /etc/sudoers