用例:我尝试在系统中设置单个 Samba 共享(A)应该可以从另一个系统自由访问(乙) 位于同一网络中。
- A正在运行带有 Samba 4 守护进程的 CentOS 7。
- 乙运行Windows 7 Professional。
我设置了共享A使用以下参数:
path = /home/MYUSER/dir
force user = MYUSER
force group = MYUSER
read only = No
create mask = 0644
force creater mode = 0644
force directory mode = 0755
guest ok = Yes
并映射到 guest = 坏用户。我添加了正确的 SELinux 上下文(或禁用了 SELinux,这无所谓)。
现在,在共享路径中,只有我的用户具有写入权限,并且这也是配置的所有子目录所需的权限掩码。但由于我强制将文件写入为我的用户:我的用户通过 samba(即使我们以访客身份访问),这应该没问题,对吧?
错误。当我将共享挂载到乙我毫无困难地查看、浏览或读取其中的文件。但是,所有写入操作均被拒绝,因为不允许。
如果我 chmod o+w 共享路径,那么 samba 突然就可以写入它了……而且我在其中创建的所有文件/目录都正确归我的用户:我的用户!(尽管使用权限 0755 创建的目录将不可写入)。
为什么会发生这种情况?samba 是否先以 nobody(或其他用户)身份创建文件和目录,然后再将其 chown 到我的用户?
我是否可以以某种方式设置 Samba 来解决此问题,而不需要我的共享和所有子目录可由“其他人”写入?