GNU/Linux >> Tutoriels Linux >  >> Linux

Sous quel utilisateur apache et PHP doivent-ils s'exécuter ? Quelles autorisations les fichiers /var/www doivent-ils avoir ?

  1. pas root
  2. pas root
  3. SuEXEC
  4. Cela dépend. 644 pour les fichiers et 755 pour les dossiers sont une valeur par défaut sûre.

Ne modifiez pas la propriété de quoi que ce soit en www-data à moins que vous ne vouliez que php puisse modifier le contenu de ce fichier/dossier

Indépendamment de tout ce que vous faites d'autre :les dossiers ont besoin d'autorisations de lecture et d'exécution pour que l'utilisateur puisse trouver des fichiers ; les fichiers ont besoin d'autorisations de lecture pour que l'utilisateur puisse les lire. Si vous obtenez des erreurs d'autorisation lorsque vous modifiez des éléments, vous avez réussi à supprimer ces autorisations fondamentalement requises.

Si vous n'écrivez aucun fichier via votre application php, vous pouvez laisser des fichiers vous appartenant :vous. Dans ce cas, la permission mondiale (xx4/5) est celle qui s'applique.

Si vous laissez les fichiers comme vous appartenant :vous avec des autorisations de fichiers de 644 (fichiers), cela signifierait que seulement vous pouvez modifier les fichiers du site Web - www-data n'est pas vous - il ne peut donc pas modifier les fichiers.

Si vous souhaitez restreindre l'accès à apache + vous et bloquer tous les autres accès chown -R you:www-data * . Avec des autorisations de fichier de 640 et des autorisations de dossier de 750, vous pouvez modifier, www-data peut lire - car alors apache lit l'autorisation de groupe (x4/5x).

Limitez au minimum les chemins sur lesquels vous autorisez apache/php à écrire - s'il y a un répertoire tmp dans lequel l'application doit écrire - autorisez-la à écrire dans ce dossier uniquement - et pour tous les emplacements inscriptibles, si possible, assurez-vous qu'il est à l'extérieur la racine du document ou prenez des mesures pour vous assurer que ce chemin d'accès en écriture n'est pas accessible sur le Web.

Notez que "vous" ne devriez pas être root. Autoriser l'accès direct à SSH en tant que root est un indicateur d'autres failles de sécurité (telles que non interdire la connexion par mot de passe), mais c'est tout un tas de questions en soi.


Donc, si je comprends bien, si apache s'exécute en tant que www-data et que je veux qu'apache puisse lire un répertoire, le bit x doit être défini pour le groupe world (other) (o + x), et cela doit également assiégé sur tous les répertoires parents tout au long de la chaîne (www, var). Et si je veux qu'apache puisse lire à partir d'un fichier, alors le bit o+r doit être défini.

Ce n'est pas vrai, vous n'avez pas à définir rwx Pour les autres'. Vous devez changer le propriétaire et/ou le groupe du dossier/fichier particulier que vous essayez de protéger. Ex. :

chown -R cwd:www-data /var/www/cwd.com
chmod 750 /var/www/cwd.com

Maintenant seuls les membres du groupe www-data sait lire /var/www/cwd.com . Et vous seul (cwd) pouvez y écrire. Si vous souhaitez autoriser vos applications (via Apache) à écrire/modifier des fichiers dans ce répertoire également, chmodifiez-le sur 770.

Je pense que cela couvre tous vos problèmes, je ne vois aucune raison de changer l'utilisateur sous lequel Apache s'exécute.


Linux
  1. Que sont les fichiers /dev/zero et /dev/null sous Linux

  2. Que se passe-t-il dans /var ?

  3. Django static_root dans /var/www/... - aucune autorisation pour collectstatic

  4. Quelles tailles devez-vous allouer à /, /boot, /home et swap

  5. autorisation d'écriture refusée via filezilla sftp vers /var/www/html

Différence entre /var/log/messages, /var/log/syslog et /var/log/kern.log ?

Qu'est-ce qu'un Homelab et pourquoi devriez-vous en avoir un ?

Quelle est la différence entre /bin/false et /sbin/nologin en tant que shell de l'utilisateur nologin

Comprendre les fichiers /proc/mounts, /etc/mtab et /proc/partitions

Sous quel utilisateur NGinx et PHP doivent-ils fonctionner ?

Les sites Web doivent-ils vivre dans /var/ ou /usr/ selon l'utilisation recommandée ?