Auto-montagem de compartilhamentos de rede por usuário

3

Eu tenho um servidor que possui vários compartilhamentos CIFS que precisam ser acessados por usuário. Por exemplo, tenho um compartilhamento Música ao qual tenho acesso total, mas minha esposa tem acesso somente leitura.

Quando eu ou minha esposa fizermos login no nosso laptop Ubuntu 11.04, eu gostaria que esses compartilhamentos fossem montados automaticamente por usuário. Agora eu entendo que se eu montar como -t cifs sem especificar um usuário, ele usará a variável de ambiente USER . No entanto, eu também preciso especificar uma senha, então como posso fazer isso quando cada usuário tem uma senha diferente?

Acho que minhas perguntas são:

  1. Existe uma maneira de eu ter um / etc / fstab por usuário?
  2. Se não, existe uma maneira de especificar que uma montagem é aplicável apenas a um determinado usuário?
  3. Além disso, a senha do compartilhamento é sempre igual à senha local. Existe uma maneira de especificar que essa senha deve passar apenas do cliente para o servidor, em vez de precisar especificá-la em um arquivo de credenciais em algum lugar?

Ou talvez eu esteja sentindo falta de algo e haja uma solução completamente diferente. Alguém pode ajudar?

    
por Kent Boogaart 16.10.2011 / 11:43

2 respostas

3

Existem provavelmente várias soluções possíveis; aqui está como eu faria isso. (Aviso: não testado!)

O mount.cifs comando pode ler o nome de usuário e senha do USER e PASSWD de variáveis ambientais, mas também pode lê-las a partir de um "credenciais", que você especifica na linha de comando com a opção -o cred=/path/to/credentials/file .

A abordagem de arquivo de credenciais é mais simples de implementar pela IMHO.

  1. Crie um arquivo de texto $HOME/.Music.cred para armazenar as credenciais; o arquivo deve ter este formato:

    user=your-username-on-cifs-server
    password=the-password
    domain=leave-this-blank-unless-really-using-windows-domains
    
  2. Proteja o arquivo $HOME/.Music.cred ; execute este comando em um terminal:

    chmod go-rw $HOME/.Music.cred
    
  3. Agora você deve conseguir montar o compartilhamento CIFS //server/music on diretório MyMusicFolder usando este comando:

    sudo mount -t cifs -o cred=$HOME/.Music.cred //server/music $HOME/MyMusicFolder
    

    Você pode permitir que cada usuário execute isso com sudo sem senha por adicionando uma linha a /etc/sudoers : (uma linha por usuário)

    # replace every occurence of 'user' with the actual account name
    user ALL= NOPASSWD: /bin/mount -t cifs -o cred=/home/user/.Music.cred //server/music /home/user/MyMusicFolder
    
  4. Se o comando da etapa 3 funcionou corretamente, você pode torná-lo automática de várias maneiras:

    • salve-o em um shell script no seu diretório inicial e faça esse script é um aplicativo auto-iniciado (você tem que fazer isso para todos os usuários que precisam montar compartilhamentos CIFS);
    • salve-o em um script de shell /etc/X11/Xsession.d/30mount-cifs-shares para que funcione para qualquer usuário.

Alternativamente, você pode substituir as etapas 3 e 4. acima com o uso de pam-mount :

  1. pacote de instalação libpam-mount

  2. configure /etc/security/pam_mount.conf.xml com:

    <debug enable="1" />
    <volume server="server" path="music" mountpoint="~/MyMusicFolder" options="cred=/home/%(USER)/.Music.cred" />
    

Referências:

  • a página de manual do mount.cifs
  • a página do manual pam_mount.conf
por Riccardo Murri 16.10.2011 / 12:11
0

Como uma nota para mim mesmo e para os outros, o motivo pelo qual a libpam-mount estava falhando:

CIFS VFS: Error connecting to socket. Aborting operation
CIFS VFS: cifs_mount failed w/return code = -101

foi devido ao fato de que minha rede sem fio ainda não tinha iniciado quando a libpam estava tentando as montagens. Para corrigir isso, eu tive que definir a conexão sem fio como "Disponível para todos os usuários" nas configurações de conexão sem fio. Isso permite que a conexão seja ativada antes do login do usuário.

Depois de definir essa propriedade, a montagem da libpam funcionou bem.

    
por Kent Boogaart 19.10.2011 / 00:02