2 votes

CentOS7, SELinux, Apache, PHP-FPM : Accès refusé pour file_put_contents à un utilisateur dir

J'ai une configuration CentOS7/Apache multi-utilisateurs (userdir) avec SELinux activé et la structure de répertoire suivante :

/home/USER/public_html/resources/css

L'ensemble /home/USER et tout ce qui se trouve en dessous est la propriété de USER. Tous les fichiers et répertoires ont un contexte SELinux de httpd_user_content_t à l'exception du répertoire susmentionné que j'ai configuré pour httpd_user_rw_content_t . Le serveur apache fonctionne sous l'utilisateur apache et l'utilisateur apache est membre du groupe USER. Tout ce qui se trouve sous /home/USER a les permissions 0775 (groupe en écriture). Un de mes scripts utilise la méthode de php file_put_contents pour créer un fichier nommé test_fpc.txt im /home/USER/public_html/resources/css mais seulement si le répertoire appartient à apache:apache le file_put_contents réussir. Si le répertoire appartient à USER:USER el file_put_contents échoue avec failed to open stream: Permission denied avertissement. Le journal d'audit indique :

type=SYSCALL msg=audit(1483602823.639:155208): arch=c000003e syscall=2 success=no exit=-13 a0=7f0e5d9f1478 a1=241 a2=1b6 a3=73656372756f7365 items=2 ppid=855 pid=992 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="php-fpm" exe="/usr/sbin/php-fpm" subj=system_u:system_r:httpd_t:s0 key="apache_user_access"
type=CWD msg=audit(1483602823.639:155208):  cwd="/home/USER/public_html"
type=PATH msg=audit(1483602823.639:155208): item=0 name="/home/USER/public_html/resources/css/" inode=65290545 dev=08:12 mode=040775 ouid=1002 ogid=1002 rdev=00:00 obj=system_u:object_r:httpd_user_rw_content_t:s0 objtype=PARENT
type=PATH msg=audit(1483602823.639:155208): item=1 name="/home/USER/public_html/resources/css/test_fpc.txt" objtype=CREATE

Lorsque je me connecte avec l'utilisateur apache avec sudo -u apache bash et exécute echo "test" > /home/USER/public_html/resources/css/test_bash.txt cela fonctionne et la sortie du journal d'audit est :

type=SYSCALL msg=audit(1483602552.156:155207): arch=c000003e syscall=2 success=yes exit=3 a0=f607c0 a1=241 a2=1b6 a3=0 items=2 ppid=13539 pid=13540 auid=0 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=pts0 ses=207 comm="bash" exe="/usr/bin/bash" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="apache_user_access"
type=CWD msg=audit(1483602552.156:155207):  cwd="/home/USER/public_html"
type=PATH msg=audit(1483602552.156:155207): item=0 name="/home/USER/public_html/resources/css/" inode=65290545 dev=08:12 mode=040775 ouid=1002 ogid=1002 rdev=00:00 obj=system_u:object_r:httpd_user_rw_content_t:s0 objtype=PARENT
type=PATH msg=audit(1483602552.156:155207): item=1 name="test_bash.txt" inode=65273889 dev=08:12 mode=0100644 ouid=48 ogid=48 rdev=00:00 obj=unconfined_u:object_r:httpd_user_rw_content_t:s0 objtype=CREATE

J'ai également essayé de définir le contexte de la fonction /home/USER/public_html/resources/css pour httpd_sys_rw_content_t mais cela ne fait aucune différence.

Je n'ai pas essayé de régler setsebool -P httpd_unified 1 car j'aimerais vraiment conserver la configuration SELinux restrictive actuelle et j'ai l'impression que SELinux n'est pas le vrai problème ici. Quelle pourrait être la cause du fait que le répertoire accessible en écriture par le groupe n'est pas accessible en écriture par l'utilisateur apache qui EST membre du groupe USER ?

0voto

user682180 Points 21

Je devais me déconnecter et me reconnecter ou redémarrer le système. J'ai trouvé l'indice ici Les permissions de groupe Linux ne sont pas appliquées correctement.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X