如何使SELinux允许Apache和Samba放在同一文件夹中?


26

在配置中,我希望允许samba和apache访问/ var / www,我可以设置上下文以允许samba访问,但是httpd没有访问权限。将setenforce设置为0可消除问题,因此我知道它是SELinux。

另外:如何查看文件夹的上下文,并且文件夹可以具有多个上下文?

(CentOS的)


您是否尝试过使用system-config-selinux的boolean选项?

Answers:


39

首先,您可以使用ls -Z使用ls查看事物的上下文

[root@servername www]# ls -dZ /var/www
drwxr-xr-x  root root system_u:object_r:httpd_sys_content_t /var/www

其次,有两个选项可让Samba和Apache访问同一目录。

简单的方法是通过以下方式仅允许samba读/写访问:

setsebool -P samba_export_all_rw 1

它很简单,容易,并且不会与SELinux的任何怪异属性混为一谈。

如果您担心Samba具有对所有目录的完全访问权限,而只想更改/ var / www,请尝试:

chcon -t public_content_rw_t /var/www
setsebool -P allow_smbd_anon_write 1
setsebool -P allow_httpd_anon_write 1

这将允许Samba和Apache对具有public_content_rw_t上下文的任何目录进行写访问。请注意,chcon仅修改/ var / www。在/ var / www下创建的任何新目录都将是public_content_rw_t,但不会是/ var / www / html或/ var / www / manual等现有目录。如果要更改所有内容,请在chcon中添加-R:

chcon -R -t public_content_rw_t /var/www

您可以浏览此CentOS Wiki页面,以获得有关其他SELinux布尔值的提示。


我试过了,它抱怨已经定义了上下文。
约书亚·恩菲尔德

没错,自从我上次使用SELinux以来,情况似乎已经发生了变化。我将使用其他一些选项来更新我的答案。
David

3
@戴夫,你救了我的屁股。明天见。
乔尔·萨拉斯

我想提到的是,如果您的webroot嵌套在samba共享中,则还需要在父目录上设置上下文。例如:chcon -t public_content_rw_t /mnt/share/webroot(/.*)? chcon -t public_content_rw_t /mnt/share
Greg Sheremeta'4

1
谢谢,我在为ftp做些类似的事情而苦苦挣扎,事后一切正常setsebool -P ftpd_full_access=1
giorgiline 2014年

9
SHARING FILES
   If you want to share files with multiple domains (Apache,  FTP,  rsync,
   Samba),  you can set a file context of public_content_t and public_content_rw_t.
   These context allow any of the above domains  to  read  the
   content.   If  you want a particular domain to write to the public_con‐
   tent_rw_t   domain,   you   must   set   the    appropriate    boolean.
   allow_DOMAIN_anon_write.  So for samba you would execute:

       setsebool -P allow_smbd_anon_write=1

例如:

semanage fcontext -a -t public_content_rw_t '/var/www(/.*)?'
restorecon -R /var/www
setsebool -P allow_smbd_anon_write 1
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.