1 votes

Permissions de fichiers sans signification (Linux, Apache)

J'ai un problème de permissions de fichiers qui me rend fou. J'ai une application web en Perl qui s'installe toute seule, en copiant quelques fichiers, en créant une base de données, etc. Tout fonctionne bien, à l'exception de quelques fichiers images. Ces images ne sont pas accessibles par Apache :

(13) Permission denied: access to /path/to/image.gif denied

Mais le fichier est 644. J'ai essayé le chmod 777, et le chown vers l'utilisateur Apache, sans résultat positif.

Et ce qui me rend fou : si je copie le fichier, puis renomme l'ancien fichier et renomme le nouveau fichier, cela fonctionne !

mv image.gif image.gif.bak
cp image.gif.bak image.gif

Les fichiers sont identiques, de même taille, avec les mêmes autorisations, le même propriétaire et le même groupe. Je peux voir les deux dans une visionneuse d'images. Mais si je restaure le fichier d'origine (en supprimant le "nouveau" fichier et en renommant l'"ancien" fichier à son nom d'origine), j'obtiens à nouveau un "permission denied" (autorisation refusée) :

rm image.gif
mv image.gif.bak image.gif

Ce problème se produit avec tous les fichiers images, mais pas avec les fichiers textes (html statique, css...).

Quelle peut être la cause de ce comportement étrange ?

J'utilise Apache 2.2.3 sous CentOs 5.5. Les scripts Perl (Perl 5.8.8) fonctionnent avec Suexec.

2voto

JeffG Points 1174

Je pense que SELinux est peut-être à l'origine du problème. Désactivez-le et vous verrez que les choses commencent à fonctionner :

su -
/sbin/setenforce 0

Si les choses ont fonctionné après l'avoir désactivé, essayez restorecon et réactivez SELinux pour voir si vos contextes SELinux n'ont pas été perturbés.

1voto

Déjà vu Points 5368

Il semble que vous ayez un problème d'autorisation dû à

  • Utilisation suexec Cela signifie que le CGI script et Apache ne tournent pas/ne peuvent pas tourner sous le même utilisateur/groupe.
  • Je ne vois pas dans votre description que vous avez vérifié le chemin d'accès au fichier image, et pas seulement le fichier lui-même.

suexec fera exécuter le script sous l'utilisateur et les groupes propriétaires du script. Apache lui-même continuera à charger les fichiers en utilisant son propre utilisateur/groupe tel que défini dans httpd.conf (ou apache[2].conf, conf.d/...).

  • Effectuer un ls -d des répertoires de chemin jusqu'aux fichiers d'images, pour s'assurer qu'Apache dispose au moins d'un fichier --x accès (pas de vue, mais accès au fichier nommé).
  • Vous pouvez donner accès à un répertoire à Apache en changeant le groupe en groupe Apache (rechercher Group dans les fichiers de configuration) avec chgrp apache-group directory et en ajoutant le x l'accès à ce même répertoire chmod g+x directory .

0voto

AliGibbs Points 2273

Avez-vous des types de mime dans la configuration d'Apache pour les fichiers d'image ? Pouvez-vous exécuter la commande ls -l dans le répertoire que vous regardez et coller le résultat ici.

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