Je suis plus une personne Windows, alors veuillez excuser mon ignorance avec cette question Linux de base.
Je m'occupe d'un serveur Linux (Debian) sur lequel seulement Apache2 et vsftp sont installés.
Ce qui se passe, c'est que je me bats constamment contre qui possède les fichiers et les dossiers et que je n'arrive pas à faire les choses correctement.
Voici ma compréhension jusqu'à présent:
- L'utilisateur www-data doit posséder les dossiers et les fichiers car tous les fichiers sous / var / www / html exécutent des scripts qui les obligent à écrire dans leur dossier. Et bien sûr, il doit être en mesure de servir les pages via http.
- Mon utilisateur ftp (appelons-le ftpuser ) a également besoin d'une autorisation pour écrire dans le dossier / var / www / html (récursif) car j'ai besoin de pouvoir télécharger de nouveaux fichiers.
Dans cet esprit, j'ai créé un groupe appelé ftpandwww et j'ai regroupé tous les dossiers et fichiers de ce groupe. Cela a fonctionné dans une certaine mesure ...
Je suis presque au bon endroit, sauf pour le fait que tous les nouveaux dossiers créés à l'aide de mon client FTP ont les mauvaises autorisations (que je peux corriger en les modifiant sous le client FTP), mais www-data ne peut pas y écrire car ils appartiennent à ftpuser et je finis par devoir SSH et exécuter un chown au groupe ftpandwww afin qu'ils soient tous les deux heureux.
Comment puis-je faire en sorte que tous les nouveaux dossiers que je crée sous FTP aient les autorisations correctes (774) et appartiennent automatiquement au groupe ftpandwww pour que je puisse les télécharger et les servir via le Web (avec des autorisations d'écriture) sans avoir à entrer et à chown tous les de nouveaux dossiers et fichiers à chaque fois?
la source
Réponses:
Utilisez les autorisations SetGID sur le répertoire racine Web et propagez-les aux enfants.
Lorsque vous appliquez SetGID sur un répertoire, tous les nouveaux éléments de ce répertoire seront créés avec le même groupe que leur parent, indépendamment de l'appartenance au groupe par défaut de l'utilisateur.
Pour appliquer SetGID à un objet de système de fichiers, utilisez
chmod
avec un 2 devant le code d'autorisation.(par exemple: 740 => 2740).
J'utilise SetGID sur un grand nombre de mes partages Samba, afin que les fichiers aient toujours le groupe propriétaire
Users
et que tout membre du groupe puisse lire les fichiers (j'utilise généralement2750
pour que seul l'utilisateur propriétaire puisse écrire dans le fichier).Dans votre cas, exécutez quelque chose comme ceci (remplacez XXX par les autorisations souhaitées):
Ensuite, les nouveaux fichiers et dossiers sortiront avec la propriété comme
ftpuser:ftpandwww
.Éditer:
En fonction de votre cas d'utilisation, SetGID est probablement suffisant pour résoudre votre problème, mais si vous rencontrez des problèmes persistants où l'un ou l'autre utilisateur est refusé en écriture, en raison d'une autorisation de groupe incorrecte (mais la propriété est correcte), votre meilleur pari est de définir un UMASK personnalisé pour l'utilisateur qui crée les fichiers .
Si vous avez des difficultés à définir l'UMASK pour l'utilisateur (car il s'agit d'un démon), consultez ce fil sur les options de configuration de l'UMASK d'un utilisateur démon .
Je recommanderais le masque
007
si vous voulez que les membres du groupe puissent écrire et supprimer des fichiers, et aucun privilège pour les non-propriétaires.la source