Fichier toujours non-lisible dans / var / www / html après la commande chmod

2

J'ai quelques problèmes en essayant d'installer des applications sur mon système Linux. On dit que les fichiers de mon répertoire / var / www / html / xxx, où je les ai mis, ne sont pas inscriptibles. La commande chmod 777 xxxa été essayée pour le faire fonctionner, mais l'erreur persiste lorsque j'ai rouvert les applications.

Pour être précis, je veux installer phpFreeChat sur mon système, alors je mets ces fichiers dans le répertoire / var / www / html / freechat, cdlà-bas et tapés chmod 777 data/private, chmod 777 data/publicsur bash. Voici le résultat de list -al data:

drwxr-xr-x.  4 root root 4096  Jun 17 15:07 .
drwxr-xr-x. 13 root root 4096  Jun 17 15:22 ..
drwxrwxrwx.  2 root root 4096  Jun 17 15:07 private
drwxrwxrwx.  3 root root 4096  Jun 17 15:07 public

Tout cela me semblait correct jusqu'à ce que je tape http://localhost/freechatdans mon navigateur. Voici le résultat:

phpFreeChat ne peut pas être initialisé, veuillez corriger ces erreurs:

/var/www/html/freechat/src/../data/private n'est pas accessible en écriture /var/www/html/freechat/src/../data/private/cache ne peut pas être créé / var / www / html /freechat/src/../data/private/cache n'est pas accessible en écriture /var/www/html/freechat/src/../data/private/cache n'est pas lisible ne peut pas créer / var / www / html / freechat / src /../data/public/themes/default ne peut pas créer /var/www/html/freechat/src/../data/public/themes/default /var/www/html/freechat/src/../data/ private / chat ne peut pas être créé /var/www/html/freechat/src/../data/private/chat n'est pas accessible en écriture /var/www/html/freechat/src/../data/private/chat est illisible /var/www/html/freechat/src/../data/prata/private/chat/s_d0ba868e1391b6c0d897996049a68ada ne peut pas être créé / var / www / html / freechat / src / ../ data / private / chat / s_d0ba868e1391b6c0d897996049a68ada n'est pas accessible en écriture

Je suis assez confus avec cela parce que cette situation ne s’est pas produite uniquement lors de l’installation de cette application. Les erreurs doivent être commises par moi, mais de quoi s'agit-il?

Lastland
la source
Faire chmod 777 est une erreur. Je vous suggère de regarder mod_userdir et les répertoires utilisateur.
vtest

Réponses:

1

Ce problème a été résolu par commande setenforce 0, ce qui arrêterait SELinux.

Comme je suis bête! Je n'ai jamais pensé à ça.

Merci Flimzy et njd quand même.

Lastland
la source
0

Vous devez faire un chmod récursif pour affecter tous les fichiers et sous-répertoires contenus dans data / private et data / public:

chmod -R 777 /var/www/html/freechat/private
chmod -R 777 /var/www/html/freechat/public

Cela dit, vous ne devez PAS utiliser le mode 777. Surtout si quelqu'un d'autre que vous possède un compte de connexion sur ce serveur. 777 signifie monde en lecture, en écriture et exécutable. Essentiellement, tout utilisateur de votre système peut lire, écrire, supprimer ou manipuler ces fichiers.

Au minimum, vous devriez changer cela en mode 774, ce qui signifie que seuls l'utilisateur et le groupe (qui sont tous deux root à l'heure actuelle) peuvent écrire les fichiers, mais tout utilisateur peut les lire.

Idéalement, vous feriez en sorte que tous les fichiers appartiennent au même utilisateur non root que celui qui exécute le logiciel freechat et que vous donniez uniquement les autorisations de lecture / écriture à cet utilisateur / groupe.

Au minimum, modifiez votre mode sur 770, de sorte que seuls l'utilisateur racine et le groupe racine aient accès.

Flimzy
la source
Merci, mais l'erreur reste, même si j'utilise la méthode récursive pour le rendre en mode 777.
Lastland
Eux non plus la chmodcommande n'a pas fonctionné, car vous l'avez exécutée en tant qu'utilisateur normal, et non en tant que root; ou vous devez vous assurer que les répertoires précédents (/ var / www / html / freechat et ainsi de suite jusqu'à /) sont au moins consultables (indicateur d'exécution) par le compte utilisé pour le service httpd.
njd
Il y a une raison de croire que la chmodcommande a bien fonctionné pour ces répertoires drwxrwxrwx, à moins de ls -alme tromper. :)
lastland
Et j'ai essayé chownces répertoires à apache.apache, qui est défini par /etc/httpd/conf/httpd.conf. Le résultat n'a pas changé le moins du monde.
lastland
0

Si vous regardez les autorisations sur chaque répertoire:

ls -ld / /var /var/www /var/www/html /var/www/html/freechat

et notez la première colonne, vous devriez voir les lignes commençant comme ceci:

drwxr-xr-x  

Au minimum, il devrait y avoir un x à la fin de la première colonne: sans cela, le serveur Web ne pourra pas accéder au contenu du répertoire freechat.

Donc vous devrez peut-être

chmod o+x /var/www/html

et même

chmod o+x /var/www
njd
la source
dr-xr-xr-xest le /répertoire et drwxr-xr-xsont les autres. Aucun x manquant dans aucun répertoire.
Lastland
0

La bonne façon de faire cela sans tuer SE est de le faire

semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/freechat/data(/.*)'

restorecon -R / var / www / html / freechat / data Explication rapide:

Le premier bit dit "tout ce qui commence par / var / www / html / freechat / data devrait avoir le contexte par défaut 'httpd_sys_rw_content_t'"

L'autre dit "définir tous les contextes sur les fichiers / répertoires de httpd_sys_rw_content_t (de manière récursive) sur les valeurs par défaut (qui viennent d'être modifiées)"

KJ4IPS
la source