%20com%20pam_mount.png)
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.