Samba 权限被拒绝

Samba 权限被拒绝

我需要在Linux主机(Samba服务器)与Linux(客户端)和Windows(客户端)之间部署Samba共享。现在服务器上的这个文件夹将在 Linux 和 Windows 客户端计算机之间共享文档。在 Samba 服务器上,我创建了两个测试用户,我们称他们为 venice 和 john。现在在 Samba 服务器上,我设置 samba 的文件上下文并启用 RO 和 RW 布尔值,并设置 john 和 venice 的权限

> getfacl: Removing leading '/' from absolute path names
> # file: samba/docs/
> # owner: venice
> # group: venice user::rwx user:venice:rwx user:john:rwx group::r-x mask::rwx other::r-x default:user::rwx default:user:venice:rwx
> default:user:john:rwx default:group::r-x default:mask::rwx
> default:other::r-x

在 samba 配置文件中我做了以下配置

[smbdocs]
        comment = Documents share
        path = /samba/docs
        browseable = yes
        read only = yes
        write list = venice john
        guest ok = no
        printable = no
        hosts allow = 10.8.8.51

在使用 samba 安装时

mount.cifs //10.8.8.50/smbdocs -o username=venice,password=pass /samba/docs/ 

即使系统级别权限和 Samba 级别允许,我也无法使用 venice 和 john 用户创建文件。

现在如果我使用威尼斯的 uid 和 gid 进行挂载

mount.cifs //10.8.8.50/smbdocs -o username=venice,password=pass,uid=1001,gid=1001 /samba/docs/ 

我能够使用 venice 用户创建文件,但 john 仍然无法创建文件或编辑文件

任何建议

主机操作系统版本 RHEL 7.4

答案1

RHEL 7 默认启用 SELinux,并且它将要限制 Samba 对文件系统的访问。当您在自定义路径(例如 )中创建自己的 Samba 共享时/samba/docs,您必须向该路径应用合适的 SELinux 标签。

如果您需要 Samba 和其他服务可以访问的目录,则应使用 SELinux 上下文类型标签public_content_rw_t并设置SELinux 布尔值以允许 Samba 在完全控制文件所有权的上下文smbd_anon_write中对文件和目录进行写访问:public_content_rw_t

setsebool -P smbd_anon_write=1
semanage fcontext -a -t public_content_rw_t "/samba/docs(/.*)?"
restorecon -Rv /samba/docs

如果您不打算/samba/docs通过任何其他服务(例如httpdftpd)进行访问,则可以使用samba_share_tcontext 来代替,然后就不需要布尔设置:

semanage fcontext -a -t samba_share_t "/samba/docs(/.*)?"
restorecon -Rv /samba/docs

semanage fcontext -a...命令会将定义新标签的正则表达式永久添加到 SELinux 配置中,并将restorecon新标签应用到实际文件系统。您还可以用来更改 SELinux 上下文标签,但是无论何时执行(例如恢复备份后),chcon您的更改都会丢失。restorecon首先将标签信息存储到 SELinux 配置中,确保即使您的备份方法不是专门支持 SELinux 的,也可以恢复它 - 只要下面的 SELinux 配置/etc也已备份。

相关内容