Meilleures autorisations / propriété pour la racine du document Apache

14

J'ai besoin d'aide pour définir les autorisations ou la propriété correctes de la racine du document Apache. Voici ce dont j'ai besoin:

  • différents sites Web stockés dans /var/www/html/<site>
  • deux utilisateurs doivent mettre à jour / gérer les sites Web via ssh
  • la propriété doit être différente de celle de l'utilisateur apache (pour des raisons de sécurité)

Comment puis-je faire ceci? Pour le moment, tous les fichiers sont accessibles en écriture mondiale, ce qui n'est pas bon. Le serveur exécute CentOS 5.5

Merci

Marco
la source
Pour une réponse plus détaillée avec d'autres options pour sécuriser un docroot, voir serverfault.com/questions/357108/…
Quinn Comendant
Je pense qu'il est préférable de stocker chaque site Web dans un emplacement distinct (ne placez pas les deux sur DocumentRoot, utilisez 2 hôtes virtuels), puis chaque utilisateur sysadmin ne possède que son propre site Web et définit le propriétaire du groupe des deux répertoires de sites Web comme le groupe Apache
le comptable

Réponses:

22

Créer un nouveau groupe

groupadd webadmin

Ajoutez vos utilisateurs au groupe

usermod -a -G webadmin user1
usermod -a -G webadmin user2

Changer la propriété du répertoire des sites

chown root:webadmin /var/www/html/

Modifier les autorisations du répertoire des sites

chmod 2775 /var/www/html/ -R

Maintenant, n'importe qui peut lire les fichiers (y compris l'utilisateur apache) mais seuls root et webadmin peuvent modifier leur contenu.

Andy
la source
Ça à l'air bon. Mais que se passe-t-il si un utilisateur crée de nouveaux fichiers ou copie des fichiers mis à jour. Ces autorisations sont-elles appliquées automatiquement? Ou at-il besoin de chown et chmod à chaque fois?
Marco
Les fichiers copiés conservent les autorisations / la propriété. Les autorisations de fichiers par défaut pour les nouveaux fichiers sont gérées par la umaskcommande. Plus d'informations ici osr507doc.sco.com/en/OSUserG/_default_perms_new_file.html
Andy
3
vous pouvez faire le dir setgid webadmin pour aider avec les nouveaux fichiers
covener
1
^ +1. Le moyen rapide serait: >> chmod 2775 -R / var / www / html /
James Broadhead
@James ta, mis à jour
Andy
2

Je préfère monter la partition avec -o acl. Cela vous permet d'utiliser la commande setfacl pour accorder des autorisations à granularité fine sur les fichiers et les dossiers, au lieu de spécifier uniquement les autorisations d'autres groupes d'utilisateurs.

Mettez donc acl sur votre ligne de partition dans / etc / fstab, ou remontez avec mount -o remount, acl / mnt / xy, puis donnez la propriété de votre répertoire web à personne: personne. Chmod à 770, et utilisez setfacl pour donner des autorisations d'écriture uniquement sur les dossiers qui en ont besoin, par exemple. accordez à www-data (ou à l'utilisateur sur lequel votre serveur Web s'exécute) des autorisations d'écriture pour le dossier de téléchargement et accordez des autorisations d'écriture à votre propre utilisateur pour l'ensemble du répertoire.

mkdir dir
chown nobody:nobody dir
setfacl -m u:www-data:r-x,d:u:www-data:r-x dir
setfacl -m u:www-data:rwx,d:u:www-data:rwx dir/upload
setfacl -m u:youruser:rwx,d:u:youruser:rwx dir

Désormais, personne ne peut lire vos fichiers, à part votre serveur Web et votre propre utilisateur. Vous pouvez écrire dans chaque fichier du dossier et le serveur Web ne peut écrire que dans le dossier de téléchargement.

K. Norbert
la source