我正在运行带有 Samba 的 CentOS 服务器。LAN 上连接的是一台 Windows 7 PC,其余的是 Mac 和 Linux。Mac 没有这个问题,但在 Windows PC 上,当用户尝试将同一共享上的文件从一个文件夹移动到另一个文件夹时,它不会“移动”它们。它会将文件复制到目标位置,而不会删除源文件。
这种情况并非总是发生,但当文件由其中一台 Mac(均运行 El Capitan)创建时,这种情况似乎更常发生。当 PC 用户移动他们创建的文件时,不会发生此问题。
我可以尝试什么来解决这个问题?
这可能是 smb.conf 文件的问题吗?应如何设置才能使文件服务器的所有用户都对共享上的所有文件具有读/写访问权限?
我发现这很令人困惑,尽管文件具有相同的所有者/组和权限,但这种情况似乎并不总是发生。
我需要在 Windows 7 上做些什么来确保那里的客户端当前正在运行?
CentOS 版本 6.7(最终版)Samba 版本 3.6.23-24.el6_7
该共享具有 0755 权限,归 smbuser 和 smbuser 组所有。
共享中的文件夹具有 0775 的权限,所有者/组与上述相同。
实际文件的权限为 0644,所有者为 root 组。然而在 smb.conf 文件中,所有内容都被强制为 root(我相信):
[global]
workgroup = workgroup
netbios name = SERVER
browseable = no
available = no
wins support = yes
local master = yes
[SERVER]
comment = File Server
browseable = yes
valid users = smbuser,nobody,edward
force user = root
writeable = yes
path = /home/share
available = yes
每个人(在 Mac 上)都可以通过用户 smbuser 使用相同的密码进行访问。
Windows 7 PC(由于设置时间太长,我不太确定)我以为它也在使用 smbuser。但现在我无法在 PC 上找到该信息,无法验证这一点,也无法将其清除并重新输入。但如果每个人都“强制用户 = root”,这是否意味着他们都将以“root”身份运行?
我做过一个测试,其中 PC 在共享上创建了一个文件夹和文件,并且它由 root 和同一个组拥有。
如果我没有正确设置,请告诉我。我们需要所有工作站都能够读取/写入相同的文件。没有理由让它属于特定用户。
答案1
有几种方法可以解决您描述的 Samba 行为问题。
- 启用 Samba 审计。Samba 博客文章 – 使用 full_audit 进行文件审计日志
- 用于
strace
跟踪用户进程的系统调用smbd
。Samba 开发人员指南的第 14 章描述了跟踪 samba 系统调用 - samba 实用程序
smbstatus
将显示当前的 samba 连接和 oplocks。