0

J'ai ce problème avec PHP et SELinux sur Red Hat Enterprise Linux (RHEL) pour AWS. Lorsque j'utilise le tableau _FILES pour obtenir le fichier (jpg) de POST, le type SELinux est user_tmp_t au lieu de httpd_sys_content_1, ce qui est nécessaire lorsque move_uploaded_file déplace le fichier dans le répertoire de téléchargement qui se trouve dans le répertoire var/www/html/ standard. Parce que move_uploaded_file ne modifie jamais le type SELinux sur le fichier, le fichier jpg devient interdit à utiliser. Comment résoudre ce problème?Tableau PHP _FILES et SELinux - accès au fichier interdit

move_uploaded_file($_FILES['file']['tmp_name'], $uploaddir) est ce que j'utilise.

J'ai essayé de changer le php.ini sys_upload_dir et upload_tmp_dir mais le problème persiste. J'ai également essayé de créer un nouveau dossier pour stocker des fichiers tmp et en utilisant sudo semanage fcontext -a -t httpd_sys_content_t "/phptmp(/.*)?" mais ne fonctionne toujours pas.

semanage fcontext -a -t httpd_sys_content_t '/var/www/html(/.*)?' et restorecon -R -v /var/www/html/ résout le problème pour les fichiers existants, mais cela ne fonctionne pas dans le futur car PHP le fait user_tmp_t à chaque fois.

Je voudrais utiliser SELinux mais c'est très frustrant car je ne connais pas vraiment le moyen de modifier les propriétés de SELinux sur PHP.

Je sais que c'est un problème SELinux parce que si je fais setenforce 0 il "résout" le problème.

+0

Il semble que vous ne pouvez pas écrire ici. Essayez ceci d'une manière supplémentaire pour votre dossier cible 'chcon -Rht httpd_sys_rw_content_t/var/www/html /' –

+0

@A. Blub Non, le fichier arrive à destination, mais je ne peux pas y accéder car le type n'est pas httpd. Je reçois une erreur "interdite". C'est toujours user_tmp_t car il provient d'un dossier tmp que je suppose. – John61590

+0

Pls l'essayer au début. Votre dossier n'est pas marqué pour l'écriture, c'est seulement marqué pour le contenu HTTP –

Répondre

0

je fini par « résoudre » en changeant les répertoires php.ini dans un autre répertoire tmp j'ai fait sur la racine et en utilisant semanage fcontext -a -t httpd_sys_content_t '/phptmp(/.*)?' ainsi que restorecon -R -v /phptmp/ et en veillant à redémarrage exemple après restorecon ou bien elle ne fonctionnera pas. Toujours pas sûr de la façon de le faire sur le côté de la programmation PHP, mais je doute que vous pourriez faire beaucoup avec lui.