![无法设置用户对 SMB 安装目录中的文件的写入权限](https://linux22.com/image/11458/%E6%97%A0%E6%B3%95%E8%AE%BE%E7%BD%AE%E7%94%A8%E6%88%B7%E5%AF%B9%20SMB%20%E5%AE%89%E8%A3%85%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%E7%9A%84%E5%86%99%E5%85%A5%E6%9D%83%E9%99%90.png)
我已经安装了 Windows 10 目录,以便可以在我的 Windownz 计算机上编辑一些文件。
sudo mount -t cifds //W10/Users ~/public/ -o username=bobby
检查目录时,它们都有所有者root
,而作为用户,bobby
我只有读取权限。
我已经使用chown
并chmod
更改了所有者和权限。详细的输出都告诉我所有者已更改,但事实并非如此。我无法使用 user 编辑其中的文件bobby
。
在这种情况下我做错了什么?
答案1
Unix 文件系统和Windows 文件系统是不同的。您必须向所有者提供该uid
选项,因为 SMB 客户端将无法从 Windows 文件系统中提取所有者。由于向 Linux 程序提供的所有者不存在,因此无法更改所有者。这为系统调用留下了两种可能性,例如chown
.
- 它们可以返回失败,因为它们无法成功,但这会导致许多警告消息,甚至在失败后编程停止。
- 或者他们可以假装他们成功了。许多程序运行顺利,认为一切都按预期进行,但当您期望操作实际成功时,它也可能会令人困惑。
所以你没有做错什么,软件不支持它。
您可以使用uid
和gid
选项为已挂载的文件系统中的所有文件指定用户和组。您还可以使用file_mode
anddir_mode
作为文件和目录的权限。
编辑
看man mount.cifs
。
示例:
这将为每个人提供读/写访问权限。谨慎使用。
mount -t cifs //W10/Users ~/public/ -o username=bobb,dir_mode=777,file_mode=666
这会将文件系统挂载
user
为group
mount -t cifs //W10/Users ~/public/ -o username=bobb,uid=user,gid=group