我使用 /etc/fstab 中的以下内容安装网络驱动器:
$ sudo nano /etc/fstab
//XXX.XXX.XXX.XXX /mnt/bilder cifs auto,username=XXXX,password=XXXX,vers=3.0,uid=1000,gid=1000,file_mode=0777,dir_mode=0777 0 0
这很完美。当我现在检查 /mnt 上的权限时
$ ls -la /mnt
total 8
drwxr-xr-x 3 root root 4096 Jun 23 13:37 .
drwxr-xr-x 22 root root 4096 Jul 12 14:16 ..
drwxrwxrwx 2 pi pi 0 Aug 1 15:04 bilder
那么看起来 pi 用户(我登录的用户)作为所有者拥有 rwx 权限。事实上,每个人都应该拥有 rwx 权限。
但是当我尝试触摸 /mnt/bilder 时,我被拒绝了
$ touch /mnt/bilder/test
touch: cannot touch '/mnt/bilder/test': Permission denied
这是怎么回事?为什么会这样?
答案1
挂载 SMB 共享时不会显示真正的 Windows 文件权限。您看到的只是 fstabfile/dir_mode
选项告诉 CIFS 客户端展示,但这些选项不允许您绕过安全性。
(Windows/SMB 文件权限比单纯的权限更广泛一些rwx
,需要不同的工具(如“getcifsacl”)才能正确显示。)
但是,实际的访问检查仍然由服务器根据通过 Windows 设置的文件权限完成,并根据username=
您用于挂载共享的用户帐户()进行检查。
即使服务器在 Linux 上运行 Samba,情况也是如此:所有访问检查都是基于帐户的,尽管客户端可以显示真正的 Linux 文件权限(如果它具有足够新的内核并且支持此 SMBv3 扩展),它就无法覆盖它们。