我可以从 Windows 安装 Samba 共享并查看其内容,但无法创建文件或目录

我可以从 Windows 安装 Samba 共享并查看其内容,但无法创建文件或目录

[新手警告!这是我第一次设置 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。此外,如果您想允许用户挂载主目录,还有另一个布尔值。

相关内容