Errores al montar el recurso compartido de Windows (cifs) con pam_mount

Errores al montar el recurso compartido de Windows (cifs) con pam_mount

Tengo una PC con Ubuntu 21.10 unida a un controlador de dominio Samba AD. Todo funciona absolutamente bien: Kerberos funciona (puedo obtener tickets con kinit), winbind funciona (puedo obtener información sobre usuarios y grupos), puedo iniciar sesión en el sistema con credenciales de dominio.

Y montar recursos compartidos manualmente también funciona, tanto con autorización Kerberos como 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

Configurar un nombre de usuario como nombre de usuario=USUARIO@DOMINIO también funciona.

¡El problema es que no puedo hacer que pam_mount funcione cuando un usuario inicia sesión a través de gnome!

Usando krb5 en pam_mount.conf.xml así

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

Da un error en auth.conf

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

Usando ntlmssp en pam_mount.conf.xml así

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

Da un error diferente en auth.conf

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

Después de habilitar la depuración en pam_mount, también puedo ver el comando de montaje exacto que se está ejecutando en auth.log y es idéntico a los anteriores que funcionan cuando los ejecuto manualmente.

Intenté lo siguiente:

  • jugado con opciones de montaje en diferentes combinaciones: vers=3.0, _netdev,user,sec
  • obligó a Kerberos a almacenar tickets en archivos en /tmp/krb5cc_%u con la configuración pam_winbind
  • leer un montón de foros

¿Algunas ideas?

Respuesta1

Finalmente lo resolví. Aquí hay una configuración de volumen 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" />

Los requisitos cruciales parecían ser:

  • nombre de dominio del servidor. Kerberos no puede emitir tickets para ips, por lo que debe especificar un nombre de dominio.
  • cruid=%(USERUID)opción. Mount se ejecuta como root y, de forma predeterminada, busca un archivo de ticket que pertenece a root, por lo que tenemos que configurar la identificación de usuario del propietario real del ticket.
  • sgrp="DOMINIO\usuarios del dominio"atributo. pam_mount se ejecuta en cada nueva sesión de autenticación, incluidos los usuarios del sistema como gdm. Una vez que se produce un intento fallido de inicio de sesión al montar el recurso compartido, parece estar almacenándolo en caché y fallando incluso para un usuario autorizado. Por lo tanto, debemos definir explícitamente los usuarios para quienes queremos que se monte el recurso compartido. Se puede hacer con varios atributos de control de usuario disponibles en pam_mount.

información relacionada