SMB共有に絶対パスを持つシンボリックリンクがある場合、/share/latest/dir -> /share/data/201407
Windowsクライアントは問題なくリンクを介してファイルにアクセスできます。
dir \\smbserver\share\latest\dir\
Directory: \\smbserver\share\latest\dir\
file a ...
ただし、Unixクライアントは同じ共有のcifsマウントでエラーが発生します。
ls /mnt/share/latest/dir/
/mnt/share/latest/dir/ : No such file or directory
Sambaマウントがシンボリックリンクに従わないのはなぜですか? CIFSマウントにシンボリックリンクをたどる方法は?
ベストアンサー1
問題は、SAMBAサーバーにUnix(cifs)クライアントの特別なサポートが組み込まれていることです。 Linuxホストでmount -t cifsを使用すると、すべてのシンボリックリンクがそのままユーザー(cifsクライアント)に渡されます。
ls /mnt/share/latest/dir/ -l
/mnt/share/latest/dir/ -> /opt/share/data/201407
この機能は気に入らないかもしれませんが、メリットのあるデザイン決定です。 eaはバグではなく機能です! :) しかし、解決策があります:
1) 共有ディレクトリの絶対シンボリックリンクを相対シンボリックリンクに置き換えます。
smbserver:~> ln -s ../../data/201407 /opt/share/latest/dir
2) SAMBA サーバーで UNIX クライアントの特別サポートを無効にします。もしUnix拡張パラメータが「no」に設定されている場合、WindowsクライアントとLinuxクライアントは同じ結果を得ます。
smbserver:~# vi /etc/samba/smb.conf
[global]
unix extensions = No
smbserver:~# restart smbd
3) SAMBA クライアントで UNIX の特別サポートを無効にします。使用名詞共有マウント時のオプション。 nounixオプションは、UNIX ACL、ノードID、およびロックが使用されないようにCIFS Unix拡張を無効にします。
client:~$ sudo mount -t cifs -o nounix //smbserver/share /mnt