NetApp CIFS共有をいずれかのサーバーにマウントしようとしていますが、 "Permission Denied"がstderrに出力され、NT_STATUS_WRONG_PASSWORD
が実行中の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
ただし、smbclient
コマンドは、まったく同じ資格情報ファイルを使用して問題なく機能します。
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...]
資格情報ファイルにはドメイン名も指定されているため、特に、一方が他方で機能するように見えます。
詳細は不明ですが、確かに言うことはできませんが、古いプロトコルバージョンを実行していた古いWindowsサーバーに接続すると、この問題が発生しました。 CIFSはSMBの「方言」(タイプ)と見なされることを忘れないでください。他のタイプがあり、古いセットアップではCIFSを使用しません。
基本的には、2人が話していると言っているようなものです。 1人のスペイン語と1人の英語、そしてあなたが英語を話す人にスペイン語を明確に理解させないように強制しようとするあなた。
SMBclientは、セキュリティネゴシエーションに別の方言を使用します。 (または少なくとも別の方法で検出します)。
試す
mount -t cifs // path/thing// mount/point -o username = user、password = pass、sec = ntlm
何が起こるか見てください。 (sec = ntlmは重要な部分です)
コマンドをいじって、考えられる理由を見つけました:
Smbclientのmanページから:
-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.
Mount.cifsのmanページから:
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
次に、2つの認証情報ファイルを作成しました。最初のスニペットに示されているように1つはスペースがあり、もう1つはcreds
とcreds.spacy
がないものです。
大きな対決:
creds
ファイル:
mount.cifs -vvv //Host/path /local/path -o credentials=/path/creds
良い沈黙、エラーなし。
creds.spacy
ファイルの場合:
# 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)
したがって、認証情報ファイルにはスペースが含まれていますが、これらはmount.cifsでは認識されません。
さらにsmbclient
の場合、スペースがあってもかまいません。 creds
およびcreds.spacy
はライチョウを引き起こしませんでした。
Sec = ntlmを追加すると、問題が修正されました。古いNAS(netgear stora)です。最近のカーネルのCIFSのデフォルトセキュリティはntlmsspです。
今日共有をマウントしようとしたときに私が発見したもう1つの可能性は、smbmount
がusername=DOMAIN\\user
構文をサポートし、資格情報としてドメイン内のユーザーを提供することです。
mount.cifs
(およびmount -t cifs
)が機能するためには、次の2つを別々に提供する必要があります:-o username=user,password=pass,dom=DOMAIN
。
User55518が説明したように、クレデンシャルファイルが表示されない場合でも、クレデンシャルファイルにスペースが含まれている可能性があります。 Windowsで認証情報ファイルを編集した場合は、おそらく\r
行の最後に置くと、エラー13がスローされます。
私はしばらくこれに苦労しています。
次のエラーが発生しました:
mount error(112): Host is down
ここでvers = 1.0オプションを設定するのに役立ち、それが報告されました
mount error(13): Permission denied
資格情報ファイルに余分な "文字が含まれていることがわかりました
もともと私が持っていた場所:
# cat /etc/samba/cred-file
username="john"
password="secret"
どこにあるべきか
# cat /etc/samba/cred-file
username=john
password=secret
私の場合、オプションvers=3.0
を追加するだけで済みました(CIFSはバージョン1であり、カーネル4.13以降はサポートされなくなったため、サーバーでSMBv3に切り替えました)。それでも、再起動する必要がありました。これが/etc/fstab
の私のマウント行です:
auto,rw,credentials=/usr/local/etc/smb.credentials,vers=3.0,file_mode=0664,dir_mode=0775,uid=myuser,gid=users
私の資格情報ファイル:
username=myuser
password=****
domain=mydomain
実際には、domain
は必要ありませんが、mount.cifsのマニュアルページで使用する正しいオプションです。
みんなに感謝したい!!!この問題については、それは本当に私を助けてくれます!また、パラメーター "sec = ntlm"に関するいくつかの重要な情報を見つけました。
私はWindows 7デスクトップから共有ディレクトリをマウントしようとしていましたが、パラメーター "sec = ntlm"を追加するまで不可能であり、それは機能し、いくつかの重要な詳細は、私のWindows 7デスクトップがドメインなので、私が考慮すべき最も重要な詳細だったと思います。したがって、それは機能します!、本当にあなたに感謝します!そしていい感じ! :D