Automatize uma montagem sem a senha do Linux para montar um sistema de arquivos cifs remoto

2

Eu tenho um diretório em meu Debian home: / home / myuser / pchome / que eu quero usar como um ponto de montagem para um sistema de arquivos cifs remoto. Então eu tenho um script bash, que é executado em cada login do myuser. Este script contém o comando:

mount -t cifs //192.168.1.2/myuser -o username=myuser,password=mypassword,uid=1000,gid=1000 /home/myuser/pchome

O comando funciona como um charme usando-se em um console. Mas, o problema é que o mount requer sudo e introdução de senha (ou ser executado com privilégios de root).

sudoers

A primeira abordagem que pensei foi configurar os sudoers para permitir o uso de mount para myuser. Algo como:

myuser ALL=(ALL)    NOPASSWD: /bin/mount, /bin/umount

O problema é que myuser poderia usar o mount sem limites, mesmo para montar sistemas de arquivos em / etc, por exemplo. Não estou interessado em permitir ao myuser o uso do comando mount livremente.

fstab

Segunda abordagem que eu pensei, está usando fstab para permitir a montagem. Eu não testei isso, mas acho que, com essa solução, tanto o ponto de montagem quanto o sistema de arquivos para montar poderiam ser consertados, e nenhuma outra montagem poderia ser feita. Mas, cada usuário poderia executar a montagem (se estiver usando a opção "user" para a linha fstab).

Do meu ponto de vista, nenhuma das duas ideias é correta, então eu gostaria que algum de vocês soubesse a abordagem válida para esse problema. Eu só quero ter permissão para montar um sistema de arquivos remoto público usando um ponto de montagem dentro de minha casa sem qualquer preocupação com segurança, senhas ou expondo o sistema a montagens mal-intencionadas. Deve ser mais fácil, já que o ponto de montagem está dentro da minha própria casa.

Obrigado antecipadamente.

    
por Alberto Jiménez 28.11.2014 / 19:02

1 resposta

1

Uma possibilidade é salvar o comando de montagem como um script (modificável apenas pelo root) E definir os privilégios sudo para o script.

/home/bin/mymount :

#!/bin/sh
mount -t cifs //192.168.1.2/myuser -o username=myuser,password=mypassword,uid=1000,gid=1000 /home/myuser/pchome

sudoers :

myuser ALL=(ALL)    NOPASSWD: /home/bin/mymount # and maybe , /home/bin/myumount

Como participante, você também pode salvar essa senha do CIFS em um arquivo de credenciais .

Você pode conceder a permissão a vários usuários definindo um alias ou concedendo a permissão a um grupo.

Usando um alias:

User_Alias CIFSUSERS = myuser, user2, user3 #, more users
CIFSUSERS ALL=(ALL)    NOPASSWD: /home/bin/mymount # ...

Ou dando permissão para um grupo, por exemplo grupo floppy :

%floppy ALL=(ALL)    NOPASSWD: /home/bin/mymount # ...
    
por 28.11.2014 / 19:18