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_PASSWORD
en 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 smbclient
comando 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é creds
y creds.spacy
.
El gran enfrentamiento:
Con creds
archivo:
mount.cifs -vvv //host/path /local/path -o credentials=/path/creds
Buen silencio, sin errores.
Con creds.spacy
archivo:
# 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 smbclient
no importa si hay espacios. creds
y creds.spacy
no provocó ningún quejido.
Respuesta3
Otra posibilidad que descubrí al intentar montar un recurso compartido hoy es que smbmount
admita la username=DOMAIN\\user
sintaxis 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 \r
al final de sus líneas y eso arroja el error 13.