我正在尝试设置一个 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(/.*)?"