简而言之:如果目录在 Linux 机器上的权限为 700,而所有者是目录所有者,则不允许从 Windows 打开该目录。如果我将其更改为 750 或 770,它就可以正常工作。文件也会发生同样的情况(但权限为 600,而不是 640/660)。
更长的描述: 我正在 CentOS7 下重新安装我们的服务器。我们使用 samba 进行简单的目录共享。SELinux 已关闭,防火墙允许连接。
more /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
uname -r
3.10.0-862.2.3.el7.x86_64
sestatus
SELinux status: disabled
firewall-cmd --zone=public --list-all |grep samba
rule family="ipv4" source address="XXX.YYY.ZZ.1/24" service name="samba" log prefix="samba" accept
rpm -qa |grep samba-4
samba-4.7.1-6.el7.x86_64
属于testuser
testgroup
id
uid=1001(testuser) gid=1000(testgroup) groups=1000(testgroup),100(users)
Samba 的配置文件(某些选项如 write_list 不是必需的;valid_users 应该足够了 - 我很绝望):
[global]
# ...usual staff like master, group, netbios-name...
load printers = no
printing = cups
veto files = /*.[mM][pP]3
interfaces = lo enp3s0f0
security = user
[TestUser]
path = /home/testuser
writeable = yes
browseable = yes
read only = no
valid users = testuser
write list = testuser
read list = testuser
printable = no
create mask = 0640
directory mask = 710
force create mode = 0640
force directory mode = 0710
inherit acls = no
inherit permissions = no
我测试了所有有问题的文件/目录,getfacl /home/testuser/SOME/PATH
它们都具有 600/700 或 660/770 权限。
现在的问题是:
在 Windows 计算机上提供服务器的 IP 地址后,系统会询问我用户名/密码对,然后我从 Windows 计算机上看到 Linux 服务器上所有可用的共享 - 到目前为止一切正常。Samba 日志表明已testuser
成功连接到服务TestUser
。我选择自己的共享,然后...
...如果组对文件没有读取权限(或对目录没有读取权限),则不允许我从 Windows 打开文件/目录,但使用 登录后,我可以在 Linux 机器上执行任何操作ssh
。如果我将权限更改为 644/750,那么我也可以从 Windows 处理这些文件。
如果强制 samba 使用 600/700 写入文件/目录,则会创建空文件/目录,并且 Windows 应用程序会立即告诉我,我无权对其进行操作。
我测试了许多不同的文件和目录掩码设置、创建等,/etc/samba/smb.conf
但无法让它运行。
我不知道该如何解决这个问题。如能得到任何帮助我将不胜感激。
答案1
请尝试更改文件夹的所有权。还请用以下基本配置进行测试。我希望这能奏效。
[TestUser]
path = /home/testuser
browsable =yes
writable = yes
guest ok = yes
chown -R testuser:testgroup /home/testuser/
chmod -R 700 /home/testuser/