1 votes

Pourquoi ces autorisations ne font-elles pas ce que je souhaite ?

J'essaie de faire en sorte que mon dossier appartienne à "apache", puis d'attribuer un chmod à ce dossier afin que seuls le propriétaire et le groupe puissent y accéder. J'essaie de faire cela pour empêcher les visiteurs d'exécuter directement les fichiers téléchargés par l'utilisateur. Voici les commandes que j'utilise :

chown -R apache uploads
chmod -R 770 uploads

Source : http://www.mysql-apache-php.com/fileupload-security.htm

Au lieu de cela, il semble que, bien qu'il empêche les visiteurs de voir les fichiers, il ne permet pas à Apache de les servir. Avez-vous des idées ?

0 votes

Vous pouvez essayer chown pour apache:apache aussi

1 votes

Vous ne voulez vraiment pas rendre exécutable tout ce qui se trouve sous votre répertoire uploads ; vous ne voulez que la permission d'exécuter sur les répertoires.

1voto

RedOculus Points 95

Comme indiqué plus haut :

  • Vos commandes ont l'air correctes, donc je pense qu'il y a un problème avec les hypothèses qui entourent ce que vous faites.
  • assurez-vous que l'utilisateur et le groupe apache s'appellent "apache" et non "apache2", "httpd" ou "www-data" ou un autre nom de ce type.
  • chmod -R 770 met le bit d'exécution sur les répertoires y dans ces répertoires. Vous ne devez mettre le bit "x" que sur les répertoires pour permettre le dir-traversal.

si vous voulez exclure tous les utilisateurs du groupe "users" de l'accès au répertoire "upload", vous pouvez attribuer ce répertoire explicitement au groupe "users" et ensuite définir des autorisations de groupe restrictives :

# group permissions override permissions for "others"
chown -R www-data:users /mydir
# group has no permissions, "others" can read and traverse
chmod 0705 /mydir
# change permissions on subdirs only
find /mydir -type d -exec chmod 0705 {} \;
# files should by default not be executeable anyway
find /mydir -type f -exec chmod a-x,o-w {} \;

Si vous voulez trouver l'utilisateur apache, faites (sur linux seulement)

ps axu | grep apache | grep -v root 

et regardez la colonne la plus à gauche. Remplacez peut-être apache par httpd dans la commande grep. Merci,

Nik.

0voto

churnd Points 3902

Le bit de monde doit être en lecture seule. Essayez chmod -R 774 uploads .

J'aurais dû lire le document avant. :) Il semble que 770 devrait fonctionner. Assurez-vous que l'utilisateur et le groupe du démon apache possèdent des téléchargements. La partie groupe est importante pour servir les fichiers via le navigateur web.

0 votes

Merci :) comment puis-je savoir quel est l'utilisateur du démon apache ? Je suis un peu confus quant à la commande à exécuter

2 votes

Regardez dans votre fichier httpd.conf (généralement /etc/apache2/httpd.conf) et recherchez l'entrée User and Group, généralement comme ceci : # Si vous souhaitez que httpd fonctionne sous un utilisateur ou un groupe différent, vous devez exécuter # httpd en tant que root initialement et il basculera. # # Utilisateur/Groupe : Le nom (ou #numéro) de l'utilisateur/groupe sous lequel httpd doit être exécuté. # Il est généralement recommandé de créer un utilisateur et un groupe # dédiés à l'exécution de httpd, comme pour la plupart des services système. # Utilisateur www Groupe www Dans ce cas, cela indique que l'utilisateur est www et le groupe est www, donc la propriété des téléchargements devrait être <code>chown -R www:www uploads</code>.

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