我试图从同一共享名挂载两个子目录,但无法使其工作。
# Mount the two different subfolders:
# $server and $share are the same - the subfolder differs:
$ subfolderA=a/b/c
$ subfolderB=x/y/z
$ mount -t cifs //$server/$share/$subfolderA /mnt/dirA
$ mount -t cifs //$server/$share/$subfolderB /mnt/dirB
# Traverse the directories - I see the same file in both directories (should only be be in dirA)
$ find /mnt/dir[AB] -name fda.txt -ls
707409139 1024 -rwxr-xr-x 1 root root 15 May 28 08:50 /mnt/dirA/fda.txt
707409139 1024 -rwxr-xr-x 1 root root 15 May 28 08:50 /mnt/dirB/fda.txt
# Mount in opposite order:
$ umount /mnt/dirA
$ umount /mnt/dirB
$ mount -t cifs //$server/$share/$subfolderB /mnt/dirB
$ mount -t cifs //$server/$share/$subfolderA /mnt/dirA
# Traverse the directories - I do not see the file fda.txt at all
$ find /mnt/dir[AB] -name fda.txt -ls
<nothing>
我已经使用 smbclient 验证了对不同子文件夹的访问权限,它给了我预期的结果。
之所以要有两个单独的挂载点而不是一个,是因为我无法访问共享本身,而只能访问子文件夹。
答案1
为了深入理解问题,尝试使用--verbose
选项挂载,即
mount -t cifs //$server/$share/$subfolderB /mnt/dirB --verbose
问题的可能原因可能是错误的 inode 编号或缓存。作为 inode 编号问题的解决方法,请尝试以下选项(其中之一):
--serverino
--noserverino
还可以尝试不同的缓存方法(其中之一):
--cache=none
--cache=strict
--cache=loose
读挂载.cifs(8)此外。