![我可以从 Windows 安装 Samba 共享并查看其内容,但无法创建文件或目录](https://linux22.com/image/753283/%E6%88%91%E5%8F%AF%E4%BB%A5%E4%BB%8E%20Windows%20%E5%AE%89%E8%A3%85%20Samba%20%E5%85%B1%E4%BA%AB%E5%B9%B6%E6%9F%A5%E7%9C%8B%E5%85%B6%E5%86%85%E5%AE%B9%EF%BC%8C%E4%BD%86%E6%97%A0%E6%B3%95%E5%88%9B%E5%BB%BA%E6%96%87%E4%BB%B6%E6%88%96%E7%9B%AE%E5%BD%95.png)
[新手警告!这是我第一次设置 Samba。我快完成了,但是...]
服务器运行的是 Centos 8,Samba V4.10.4 共享文件系统是 xfs,我已启用扩展属性并进行了测试,因此它可以正常工作。我还测试了 samba 保存 dos 属性的能力,但我认为问题可能是 ACL 或扩展属性中的某些配置有误。
我想使用这台服务器来备份 Windows 10 Pro PC。
情况是,我可以浏览服务器并安装其共享,但无法从客户端创建文件或目录。我在本地共享上创建了一个目录,我可以从客户端看到它。
如果我尝试从 Windows 创建新文件夹,则会收到“目标文件夹访问被拒绝”的信息。在服务器 /var/logs/log.smbd 上,显示为
[2020/06/04 17:39:06.739107, 2] ../../source3/smbd/open.c:4057(open_directory)
open_directory: unable to create New folder. Error was NT_STATUS_ACCESS_DENIED
[2020/06/04 17:39:13.790033, 2] ../../source3/smbd/server.c:837(remove_child_pid)
Could not find child 28630 -- ignoring
[2020/06/04 17:39:15.092117, 2] ../../lib/util/tevent_debug.c:66(samba_tevent_debug)
samba_tevent: EPOLL_CTL_DEL EBADF for fde[0x556b012716b0] mpx_fde[(nil)] fd[15] - disabling
我已经定义了 [homes] 共享,但浏览服务器时它没有显示出来。不必在意这个。我关心的是 Windows ACL。
我已定义两个 samba 帐户和关联的 Linux 帐户。“hank”与我在 Windows 客户端上的用户 ID 相同,它使用 smbusers 映射到我的 Linux 帐户。“hankwin”未映射,在 Linux 上没有登录 shell。我可以使用其中任何一个将其相应的共享安装到 Windows 机器上。
当我在安全下的 Windows 中查看文件夹属性时,它显示没有人有权限对共享或子文件夹执行任何操作。
客户端上的 icacls 针对安装在 y: 的共享 [hankwin] 和子文件夹 y:\stuff 给出以下报告
icacls y:
y: S-1-5-21-1897013661-3875350279-343821458-1021:(F)
S-1-22-2-1003:(RX)
Everyone:(RX)
CREATOR OWNER:(OI)(CI)(IO)(F)
CREATOR GROUP:(OI)(CI)(IO)(F)
Everyone:(OI)(CI)(IO)(F)
Successfully processed 1 files; Failed processing 0 files
>icacls y:\stuff
y:\stuff S-1-5-21-1897013661-3875350279-343821458-1021:(F)
S-1-22-2-1003:(RX)
Everyone:(RX)
CREATOR OWNER:(OI)(CI)(IO)(F)
CREATOR GROUP:(OI)(CI)(IO)(F)
Everyone:(OI)(CI)(IO)(F)
Successfully processed 1 files; Failed processing 0 files
以下是 Linux 文件权限
drwxrws---. 3 hankwin winshare 35 Jun 4 16:52 hankwin
drwxrws---. 2 root winshare 6 Jun 4 16:29 hank
ls -l *
hank:
total 0
hankwin:
total 0
drwxr-sr-x. 2 hankwin winshare 6 Jun 4 16:52 stuff
-rw-rwxr--+ 1 hankwin winshare 0 Jun 4 12:02 test.txt
文件 test.txt 从客户端来说是不可见的。
这是 smb.conf 文件
[global]
path = /srv/smb
writeable = yes
printing = cups
security = user
netbios name = konishiki
load printers = yes
sync always = yes
create mode = 777
os level = 20
socket options = TCP_NODELAY
cups options = raw
passdb backend = tdbsam
printcap name = cups
workgroup = WORKGROUP
directory mode = 777
encrypt passwords = yes
log level = 2
unix password sync = yes
vfs objects = acl_xattr
map acl inherit = yes
wins support = yes
username map = /etc/samba/smbusers
admin users = hank, hankwin hcohe
[homes]
inherit acls = Yes
browseable = no
valid users = %S, %D%w%S
writable = yes
path = /home
comment = Home Directories
[hankwin]
path = /srv/smb/hankwin/
read only = no
store dos attributes = yes
[hank]
path = /srv/smb/hank
read only = no
store dos attributes = yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
感谢所有坚持不懈地完成这一切的人。任何建议都将不胜感激。
汉克·科恩
答案1
解决了!问题在于 selinux 没有授予 samba 导出共享所需的权限。此方法已修复此问题。
setsebool -P -V samba_export_all_rw=on samba_export_all_rw=on
此解决方案可能特定于 Centos 或 RHEL 8。此外,如果您想允许用户挂载主目录,还有另一个布尔值。