Erros ao montar o compartilhamento do Windows (cifs) com pam_mount

Erros ao montar o compartilhamento do Windows (cifs) com pam_mount

Eu tenho um PC Ubuntu 21.10 associado a um controlador de domínio Samba AD. Tudo está funcionando perfeitamente bem - Kerberos está funcionando (pode obter tickets com o kinit), winbind está funcionando (pode obter informações sobre usuários e grupos), consigo fazer login no sistema com credenciais de domínio.

E montar compartilhamentos manualmente também funciona, tanto com autorização Kerberos quanto com autorização ntlmssp:

sudo mount -t cifs //server/path /mount/point -o username=USER,domain=DOMAIN,sec=ntlmssp
sudo mount -t cifs //server/path /mount/point -o username=USER,domain=DOMAIN,sec=krb5

Definir nome de usuário como nomedeusuário=USER@DOMAIN também funciona.

O problema é que não consigo fazer o pam_mount funcionar quando um usuário faz login via gnome!

Usando krb5 em pam_mount.conf.xml assim

<volume
      fstype="cifs"
      server="server"
      path="path"
      mountpoint="mount/point"
      options="sec=krb5"
  />

Dá um erro no auth.conf

(mount.c:72): mount error(126): Required key not available

Usando ntlmssp em pam_mount.conf.xml assim

<volume
      fstype="cifs"
      server="server"
      path="path"
      mountpoint="mount/point"
      options="sec=ntlmssp"
  />

Dá um erro diferente em auth.conf

(pam_mount.c:173): conv->conv(...): Conversation error 

Depois de habilitar a depuração em pam_mount, também posso ver o comando de montagem exato que ele está executando em auth.log e é idêntico aos acima que funcionam, quando os executo manualmente.

Eu tentei o seguinte:

  • jogado com opções de montagem em diferentes combinações: vers=3.0, _netdev,user,sec
  • forçou o Kerberos a armazenar tickets em arquivos em /tmp/krb5cc_%u com configuração pam_winbind
  • leia uma tonelada de fóruns

Alguma ideia?

Responder1

Eu finalmente descobri. Aqui está uma configuração de volume pam_mount funcional:

<volume sgrp="DOMAIN\domain users" fstype="cifs" server="my.server.com" path="path/to/share" mountpoint="/mount/point" options="sec=krb5,cruid=%(USERUID),noexec,rw,nofail" />

Os requisitos cruciais pareciam ser:

  • nome de domínio do servidor. O Kerberos não pode emitir tickets para IPs, então você precisa especificar um nome de domínio.
  • cruid=%(USERUID)opção. Mount é executado como root e por padrão procura um arquivo de ticket que pertence ao root, então temos que definir o ID do usuário do proprietário real do ticket.
  • sgrp="DOMÍNIO\usuários do domínio"atributo. pam_mount é executado em cada nova sessão de autenticação, incluindo usuários do sistema como gdm. Uma vez que houve uma falha na tentativa de login ao montar o compartilhamento, ele parece estar armazenando-o em cache e falhando até mesmo para um usuário autorizado. Portanto, precisamos definir explicitamente os usuários para os quais queremos que o compartilhamento seja montado. Isso pode ser feito com vários atributos de controle de usuário disponíveis em pam_mount.

informação relacionada