SELinux导致的Samba匿名访问配置问题

配好一个CentOS+Nginx+PHP+MySQL的虚拟机,为了实现Linux虚拟机和Windows的文件共享,准备在虚拟机上安装Samba服务并配置为匿名访问。以前从没接触过SELinux,没想到它也能影响到文件夹的访问权限,通过今天这一天的折腾,又学到了一些新东西,呵呵。下面记录一下这一天折腾的过程。

先是使用yum安装好Samba,并修改好配置文件后,共享文件夹不能匿名访问。一直报错:

\\192.168.128.128\phpdoc 无法访问。您可能没有权限使用网络资源。请与这台服务器的管理员联系以
查明您是否有权限。
找不到网络名

以下为我用testparm /etc/samba/smb.conf得到的精简后的Samba配置:

[global]
server string = Elmer Zhang's Samba Server
security = SHARE
passdb backend = tdbsam
load printers = No
cups options = raw

[phpdoc]
comment = phpdoc folder
path = /home/elmerzhang/phpdoc
write list = +staff
read only = No
guest ok = Yes

最后从Samba官方网站查配置手册,把配置一项项仔细检查,仍然查不出任何问题。无奈之下只好上Chinaunix论坛求助。

先是有人提出是目录权限问题,可以把path换成/tmp来测试。赶紧试验了一下,果然,path换成/tmp后可以匿名访问。确认是目录权限问题。

但是,phpdoc文件夹的权限已经设成了777,为什么还是不能访问呢?继续在论坛求助,有人提示是SELinux安全限制的原因,setenforce 0试试。

试了一下setenforce 0,仍然权限不够。怀疑是phpdoc在用户目录下的原因,把phpdoc移到var下,再测试,共享文件夹终于可以访问了。

但是使用setenforce 1恢复enforce设置之后,又提示权限不足了。看来每个文件夹都可以拥有属于自己的SELinux权限的,Google了一下,chcon可以改变文件夹的SELinux属性。最后通过

chcon system_u:object_r:public_content_t /var/phpdoc -R

设置phpdoc的SELinux属性之后,终于一切正常了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/wyyyfz.html