![unix 权限(以及 smb 共享的影响)](https://linux22.com/image/226824/unix%20%E6%9D%83%E9%99%90%EF%BC%88%E4%BB%A5%E5%8F%8A%20smb%20%E5%85%B1%E4%BA%AB%E7%9A%84%E5%BD%B1%E5%93%8D%EF%BC%89.png)
我有一个 NAS,几年前(当时我使用的是 Linux 机器),我在上面复制了一些文件,将其挂载为 NFS 共享。
几年后...几天前,我尝试通过 SMB 从 Windows 计算机访问相同的文件/文件夹。结果:权限被拒绝。我无法访问、移动、删除,什么都不能。即使具有管理员权限。我尝试从 Mac 机器(仍然使用 SMB)进行访问,确信它是一个 Unix 引擎......结果相同。即使有根。
然后我在 Linux(仍然使用 SMB)上尝试,再次得到相同的结果。然后我切换到 NFS 挂载,现在就可以完全访问,没有任何问题。
我试图调查原因,但仍然毫无头绪。
我创建了示例文件夹的一些副本:
STUDY
是原始的:请注意它具有扩展属性,我认为这就是问题所在,因为我可以使用 SMB 管理的所有其他文件和文件夹都没有它们。
所以我做的第一件事是创建一个名为“STUDYtest”的副本,并尝试使用以下命令删除属性:
sudo setfacl -Rbk STUDYtest/
事实上,它删除了扩展属性,正如您从上面的屏幕截图中看到的那样,但该文件夹和其中的文件仍然无法通过 SMB 进行管理(在此过程中,它还失去了其他人的写入权限......不要问我为什么! )。
然后,我尝试使用以下命令将该文件夹复制到另一个位置,而不保留属性:
cp -r --no-preserve=mode,ownership STUDY/ /home/alberto/
然后我将其重命名为STUDYnopreserve
并将其复制回 NAS,这一次,我可以从 Windows 通过 SMB 对其进行管理。
我不明白为什么!对我来说它们看起来是一样的:
它们都有扩展属性,唯一的区别是所有者?
我想避免在其他地方复制并返回所有数据(3+TB),最重要的是,我想了解背后的原因。
有人可以指出我正确的方向或建议下一个测试吗?
答案1
我进行了其他测试,发现我之前的解决方法要完全发挥作用,需要将副本(带有选项no-preserve
)复制到不同的位置/驱动器,然后返回到原始位置/驱动器(如果数据需要保留在同一位置)。否则,内容可以访问,但远程 SMB 用户无法修改或删除它们。
我没有进一步调查原因,因为与此同时,我已经找到了我认为的最终解决方案,并且它比我之前尝试过的任何其他方法都简单得多。
简单地:
sudo chmod -R 777 /path