我有一台 Linux 服务器 (Linux1),我已经在其中配置了要共享的文件夹。它运行在 RHEL 7.2 上。我的配置/etc/samba/smb.conf
如下:
[sharing]
path = /home/share
guest ok = yes
browseable = yes
read only = no
一切运行正常,我可以从我的另一台 Linux 服务器 (Linux2) 访问共享文件夹中的所有子文件夹和文件。共享文件夹之前已安装cifs
为/mnt/share
。
然后我重新启动了 Linux1,禁用了防火墙,并重新启动了 smb 服务。
从 Linux2,我可以看到我的共享文件夹和子文件夹,但是当我尝试ls
进入子文件夹时,它显示ls: reading directory /mnt/share/subfolder: Permission denied
。
我不明白为什么它现在不起作用。
答案1
我刚刚意识到我的 SELinux 已设置Enforcing
为 Linux1,这导致了权限问题。禁用它后,我就能再次访问子文件夹和文件。
答案2
您不应禁用 SELinux。更好的办法是更改 SELinux 设置以允许访问您的共享。
运行类似的操作chcon -t samba_share_t /home/share
应该可以解决问题。
答案3
不要禁用 selinux,而是设置正确的布尔值和安全上下文值,如下所示。(我假设“共享”是 samba 共享名称)
setsebool -P samba_export_all_ro=1 samba_export_all_rw=1
getsebool -a | grep samba_export
semanage fcontext -at samba_share_t "/sharing(/.*)?"
restorecon /sharing
您可能还需要添加一些规则来允许 Samba 流量。
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload