Définir le groupe par défaut pour l'utilisateur quand ils créent de nouveaux fichiers?

37

Je me trouve souvent en chown-ing lorsque je les ai créés par SSH et qu'ils appartiennent par jm:jmexemple à.

Ensuite, pour permettre à Apache d'y accéder, je dois par exemple le faire chown jm:www-data.

Je suis sûr que je peux spécifier que lorsque je crée des fichiers, au lieu d'utiliser le groupe sous mon nom, spécifiez un autre?

Ou existe-t-il un meilleur moyen de gérer les utilisateurs / groupes?

JM au travail
la source

Réponses:

75

Si vous voulez que tous les nouveaux fichiers d'un répertoire particulier appartiennent à un groupe particulier, appliquez simplement le setgidbit dessus:

chgrp www-data /some/dir
chmod g+s /some/dir

Si vous souhaitez appliquer ce comportement à une arborescence de répertoires existante, vous pouvez le faire avec find:

find /some/dir -type d -exec chgrp www-data {} +
find /some/dir -type d -exec chmod g+s {} +

(Si les répertoires appartiennent déjà au groupe concerné, vous pouvez omettre la première commande dans ces deux exemples).

James Henstridge
la source
1
Bonne réponse! Pourriez-vous préciser la signification des symboles ... {} +?
Alexander Lomia
3
Ce sont des arguments à la findcommande, couverts dans la page de manuel. Lors de la première invocation, la commande sera exécutée en chgrp www-dataajoutant un certain nombre de résultats sous forme d'arguments (plutôt que d'appeler la commande une fois pour chaque résultat obtenu avec {} \;).
James Henstridge
6
Pourquoi ne pas utiliser chmod g+s /some/dir -R? Juste testé et cela semble fonctionner.
Cragmonkey
13
@Cragmonkey: cela définira également le bit setgid sur les fichiers normaux. S'il s'avère que l'un d'entre eux est exécutable, cela permettrait à un autre utilisateur du système d'obtenir les privilèges du groupe propriétaire du fichier.
James Henstridge