mount.cifs no puede usar el mismo archivo de credenciales que usa smbclient

mount.cifs no puede usar el mismo archivo de credenciales que usa smbclient

Estoy intentando montar un recurso compartido CIFS de NetApp en uno de nuestros servidores y sigo apareciendo "Permiso denegado" impreso en stderr y NT_STATUS_WRONG_PASSWORDen el archivo dmesg.

root@xxxehpvld05 ~ $ mount.cifs -vv //zhp-nas.xxx.com/perspectives /mnt/secure/cifs -o credentials=/etc/cifs.creds
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
root@xxxehpvld05 ~ $ dmesg | tail
CIFS VFS: cifs_mount failed w/return code = -13
Status code returned 0xc000006a NT_STATUS_WRONG_PASSWORD
CIFS VFS: Send error in SessSetup = -13
CIFS VFS: cifs_mount failed w/return code = -13
Status code returned 0xc000006a NT_STATUS_WRONG_PASSWORD
CIFS VFS: Send error in SessSetup = -13
CIFS VFS: cifs_mount failed w/return code = -13
Status code returned 0xc000006a NT_STATUS_WRONG_PASSWORD
CIFS VFS: Send error in SessSetup = -13
CIFS VFS: cifs_mount failed w/return code = -13

Sin embargo, el smbclientcomando funciona sin problemas, utilizando exactamente el mismo archivo de credenciales:

root@xxxehpvld05 ~ $ smbclient -L //zhp-nas.xxx.com/perspectives -A /etc/cifs.creds
Domain=[XXX] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]

        Sharename       Type      Comment
        ---------       ----      -------
        IPC$            IPC       Remote IPC
        ZHPSubmit-dev   Disk
    [...snip...]

Parece que si uno funciona, el otro también debería funcionar, especialmente porque el archivo de credenciales también especifica el nombre de dominio.

Respuesta1

Sin más información, no puedo decirlo con certeza, pero he visto este problema al conectarme a un servidor de Windows antiguo que ejecutaba una versión de protocolo anterior. Recuerde que CIFS se considera un "dialecto" (tipo) de SMB. Hay otros tipos y las configuraciones más antiguas no utilizan CIFS.

Básicamente es como decir que dos personas están hablando. Uno en español y otro en inglés, y estás intentando obligar al hablante de inglés a entender el español cuando claramente no lo entiende.

SMBclient utiliza un dielecto diferente para las negociaciones de seguridad. (o al menos detecta de manera diferente).

Intentar

mount -t cifs //ruta/cosa/ /montaje/punto -o nombre de usuario=usuario,contraseña=contraseña,seg=ntlm

y mira lo que pasa. (sec=ntlm es la parte importante)

Respuesta2

Jugando con los comandos, encontré una posible razón:

Desde la página de manual de smbclient:

   -A|--authentication-file=filename
       This option allows you to specify a file from which to read the
       username and password used in the connection. The format of the file is

           username = <value>
           password = <value>
           domain   = <value>

       Make certain that the permissions on the file restrict access from
       unwanted users.

Desde la página de manual de mount.cifs:

   credentials=filename
       specifies a file that contains a username and/or password and
       optionally the name of the workgroup. The format of the file is:

          username=value
          password=value
          domain=value

Luego creé dos archivos de credenciales, uno con espacios, como se muestra en el primer fragmento y otro sin ellos, y los nombré credsy creds.spacy.

El gran enfrentamiento:

Con credsarchivo:

mount.cifs -vvv //host/path /local/path -o credentials=/path/creds

Buen silencio, sin errores.

Con creds.spacyarchivo:

# mount.cifs -vvv //host/path /local/path -o credentials=/path/creds.spacy
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

Obviamente, su archivo de credenciales contiene espacios que mount.cifs no entiende.

Además smbclientno importa si hay espacios. credsy creds.spacyno provocó ningún quejido.

Respuesta3

Otra posibilidad que descubrí al intentar montar un recurso compartido hoy es que smbmountadmita la username=DOMAIN\\usersintaxis para proporcionar un usuario en un dominio como credencial.

Para que mount.cifs(y mount -t cifs) funcionen, estos dos deben proporcionarse por separado: -o username=user,password=pass,dom=DOMAIN.

Respuesta4

Como explicó el usuario55518, probablemente tenga espacios en su archivo de credenciales incluso si no los ve. Si editó su archivo de credenciales en Windows, probablemente lo tenga \ral final de sus líneas y eso arroja el error 13.

información relacionada