读取 cifs 共享失败,权限被拒绝 - cifs samba 目录权限被拒绝

读取 cifs 共享失败,权限被拒绝 - cifs samba 目录权限被拒绝

我正在尝试设置一个 samba 服务器,以便通过 cifs 在客户端之间共享数据。作为测试,我在同一台机器上安装了 samba 共享,并尝试访问目录的内容。安装命令是:

mount -t cifs -o username=sthomaso,workgroup=WORKGROUP //server/scratch /mnt/server/scratch

...输入密码后效果很好。虽然我可以cd /mnt/server/scratch,但当我尝试列出目录的内容时ls,出现错误ls: reading directory .: Permission denied

在服务器上,我的/etc/samba/smb.conf是:

[global]
    security = user
    workgroup = WORKGROUP

[homes]
    writeable = yes

[scratch]
    path = /var/scratch
    valid users = @feausers
    writeable = yes

使用以下命令将用户“sthomaso”添加到 tdbsam:

pdbedit -a -u sthomaso

用户“sthomaso”位于组“feausers”中,已使用“groups sthomaso”命令进行验证。

/bin/ls -lF /var | grep scratch显示:

drwxrwx--T. 2 root feausers 4096 Jun 14 14:40 scratch/

/var/log/samba/log.smbd包含对成功连接的验证:

<snip> smbd/service.c:1070(make_connection_snum)
<snip> connect to service scratch initially as user sthomaso (uid=500, gid=501) (pid 99999)

看起来我成功挂载了共享,但是为什么我无法读取目录并访问文件?

答案1

仅供参考,我从 Red Hat 获得了一些帮助...问题是 SELinux 限制权限。我不需要 SELinux 提供的控制,所以我只是通过编辑 /etc/selinux/config 并重新启动来禁用它。

答案2

该问题的更合适的答案在文件顶部给出/etc/samba/smb.conf.example

Use the samba_export_all_ro or samba_export_all_rw Boolean to share system directories.  To share such directories and only allow read-only permissions:
setsebool -P samba_export_all_ro on
To share such directories and allow read and write permissions:  
setsebool -P samba_export_all_rw on

此外,如果您查看auditd 生成的setroubleshoot 日志,它会为您提供一些关于如何以1-100 的相对置信度潜在地解决问题的建议。

要查看这些日志和建议,请运行:sealert -a /var/log/audit/audit.log

简而言之,要解决此问题,请运行以下命令:setsebool -P samba_export_all_rw on

然后重新启动服务。

编辑:

此外,请确保使用以下命令将适当的 selinux 上下文应用到 samba 共享目录:

semanage fcontext -a -t samba_share_t "/PATH_TO_SHARE(/.*)?"

相关内容