Résumé mis à jour
Le répertoire / var / www est la propriété de root:root
ce qui signifie que personne ne peut l’utiliser et qu’il est totalement inutile. Puisque nous voulons tous un serveur Web qui fonctionne réellement (et que personne ne devrait se connecter en tant que "root"), nous devons résoudre ce problème.
Seules deux entités ont besoin d'un accès.
PHP / Perl / Ruby / Python ont tous besoin d'accéder aux dossiers et aux fichiers car ils en créent beaucoup (c'est-à-dire
/uploads/
). Ces langages de script devraient fonctionner sous nginx ou apache (ou même quelque chose comme FastCGI pour PHP).Les développeurs
Comment ont-ils accès? Je sais que quelqu'un, quelque part, a déjà fait cela auparavant. Cependant, avec des milliards de sites Web, on pourrait penser qu'il y aurait plus d'informations sur ce sujet.
Je sais que 777 est une autorisation complète de lecture / écriture / exécution pour le propriétaire / groupe / autre. Cela ne semble donc pas nécessaire, car il donne aux utilisateurs aléatoires des autorisations complètes.
Quelles sont les autorisations à utiliser /var/www
pour que:
- Contrôle de source tel que git ou svn
- Utilisateurs appartenant à un groupe tel que "sites Web" ( ou même ajoutés à "www-data" )
- Des serveurs comme Apache ou Lighthttpd
- Et PHP / Perl / Ruby
tous peuvent lire, créer et exécuter des fichiers (et des répertoires) là-bas?
Si je ne me trompe pas, les scripts Ruby et PHP ne sont pas "exécutés" directement, mais transmis à un interpréteur. Il n’est donc pas nécessaire d’exécuter une autorisation sur les fichiers dans /var/www
...? Par conséquent, il semble que la bonne permission serait celle chmod -R 1660
qui ferait
- tous les fichiers partageables par ces quatre entités
- tous les fichiers non exécutables par erreur
- bloquer tout le monde du répertoire entièrement
- définir le mode d'autorisation sur «collant» pour tous les fichiers futurs
Est-ce correct?
Mise à jour 1: Je viens de me rendre compte que les fichiers et les répertoires peuvent nécessiter des autorisations différentes - je parlais des fichiers ci-dessus, donc je ne suis pas sûr de ce que les autorisations de répertoire devraient être.
Mise à jour 2: la structure de dossiers des /var/www
modifications est drastique, car l’une des quatre entités ci-dessus ajoute toujours (et parfois supprime) des dossiers et des sous-dossiers à plusieurs niveaux. Ils créent et suppriment également des fichiers pour lesquels les 3 autres entités peuvent avoir besoin d'un accès en lecture / écriture. Par conséquent, les autorisations doivent effectuer les quatre opérations ci-dessus pour les fichiers et les répertoires. Puisqu'aucun d'entre eux ne devrait avoir besoin d'une permission d'exécution (voir la question à propos de ruby / php ci-dessus), je suppose que cette rw-rw-r--
permission suffirait et qu'elle était totalement sûre, ces quatre entités étant gérées par un personnel de confiance (voir n ° 2) et par tous les autres utilisateurs. le système n'a qu'un accès en lecture.
Mise à jour 3: Ceci concerne les machines de développement personnel et les serveurs de sociétés privées. Pas de "clients Web" aléatoires comme un hôte partagé.
Mise à jour 4: Cet article de slicehost semble être le meilleur moyen d’expliquer ce qui est nécessaire pour configurer les autorisations pour votre dossier www. Cependant, je ne sais pas quel utilisateur ou groupe apache / nginx avec PHP OU svn / git est exécuté et comment le modifier.
Mise à jour 5: J'ai enfin (je pense) trouvé un moyen de faire fonctionner tout cela (réponse ci-dessous). Cependant, je ne sais pas si c'est la manière correcte et SÉCURISÉE de le faire. Par conséquent, j'ai commencé une prime. La personne qui dispose de la meilleure méthode pour sécuriser et gérer le répertoire www gagne.