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


26

Dans la configuration que j'ai configuré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)


Avez-vous essayé d'utiliser l'option booléenne de system-config-selinux?

Réponses:


39

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 est de permettre un 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 souhaitez que Samba ait 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 parcourir cette page wiki CentOS pour obtenir des conseils sur d'autres booléens SELinux.


J'ai essayé cela et il se plaint qu'un contexte est déjà défini.
— Joshua Enfield

Vous avez raison, il semble que les choses ont changé depuis la dernière fois que j'ai joué avec SELinux. Je mettrai à jour ma réponse avec quelques autres options.
— David

3
@Avez-vous sauvé mes fesses. Rendez-vous au travail demain.
— Joel E Salas du

Je voulais mentionner que si votre racine Web est imbriquée dans un partage samba, vous devrez également définir le contexte sur les répertoires parents. Par exemple:chcon -t public_content_rw_t /mnt/share/webroot(/.*)? chcon -t public_content_rw_t /mnt/share
— Greg Sheremeta

1
Merci, je me débattais avec quelque chose de similaire mais avec ftp, et tout fonctionne après l'avoir faitsetsebool -P ftpd_full_access=1
— giorgiline

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

Par exemple:

semanage fcontext -a -t public_content_rw_t '/var/www(/.*)?'
restorecon -R /var/www
setsebool -P allow_smbd_anon_write 1
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.