Como obtenho o SELinux para permitir o Apache e o Samba na mesma pasta?

22

Na configuração que eu tenho, desejo permitir que o samba e o apache acessem / var / www Eu sou capaz de definir um contexto para permitir o acesso ao samba, mas o httpd não tem acesso. Usar o setenforce como 0 elimina problemas, então sei que é o SELinux.

Além disso: Como posso ver o contexto de uma pasta e uma pasta pode ter vários contextos?

(CentOS)

    
por Joshua Enfield 09.04.2010 / 22:47

2 respostas

36

Primeiro, você pode ver o contexto de algo com ls usando ls -Z

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

Segundo, existem duas opções para dar acesso ao Samba e Apache ao mesmo diretório.

A maneira simples é permitir o acesso de leitura / gravação do samba em todos os lugares com:

setsebool -P samba_export_all_rw 1

É simples, fácil e não atrapalha as propriedades estranhas do SELinux.

Se você está preocupado com o acesso completo do Samba a todos os diretórios e apenas deseja alterar o / var / www, tente:

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

Isso permitirá que tanto o Samba quanto o Apache escrevam acesso a quaisquer diretórios com o contexto public_content_rw_t. Note que o chcon está apenas modificando o / var / www. Quaisquer novos diretórios criados em / var / www serão public_content_rw_t, mas não em diretórios existentes, como / var / www / html ou / var / www / manual. Se você quiser mudar tudo, adicione um -R ao chcon:

chcon -R -t public_content_rw_t /var/www

Você pode procurar por esta página wiki do CentOS para obter dicas sobre outros booleanos do SELinux.

    
por 10.04.2010 / 00:39
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

Por exemplo:

semanage fcontext -a -t public_content_rw_t '/var/www(/.*)?'
restorecon -R /var/www
setsebool -P allow_smbd_anon_write 1
    
por 05.01.2012 / 02:33