web-dev-qa-db-fra.com

Comment obtenir SELinux pour autoriser Apache et Samba sur le même dossier?

Dans la configuration que j'ai installée, je souhaite autoriser samba et Apache à accéder à/var/www. Je peux définir un contexte pour autoriser l'accès à samba, mais httpd n'y a pas accès. L'utilisation de setenforce à 0 élimine les problèmes, donc je sais que c'est SELinux.

En outre: Comment puis-je afficher le contexte d'un dossier et un dossier peut-il avoir plusieurs contextes?

(CentOS)

26
Joshua Enfield

Tout d'abord, vous pouvez afficher le contexte de quelque chose avec ls en utilisant ls -Z

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

Deuxièmement, il existe deux options pour donner à Samba et Apache l'accès au même répertoire.

Le moyen le plus simple consiste à autoriser l'accès en lecture/écriture à Samba partout avec:

setsebool -P samba_export_all_rw 1

C'est simple, facile et ne dérange pas les propriétés étranges de SELinux.

Si vous pensez que Samba a un accès complet à tous les répertoires et que vous souhaitez uniquement modifier/var/www, essayez:

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

Cela permettra à la fois à Samba et à Apache d'accéder en écriture à tous les répertoires avec le contexte public_content_rw_t. Notez que chcon modifie uniquement/var/www. Tout nouveau répertoire créé sous/var/www sera public_content_rw_t, mais pas les répertoires existants comme/var/www/html ou/var/www/manual. Si vous voulez tout changer, ajoutez un -R à chcon:

chcon -R -t public_content_rw_t /var/www

Vous pouvez consulter cette page wiki CentOS pour obtenir des conseils sur d'autres booléens SELinux.

39
David
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

Par exemple:

semanage fcontext -a -t public_content_rw_t '/var/www(/.*)?'
restorecon -R /var/www
setsebool -P allow_smbd_anon_write 1
9
hm2k