web-dev-qa-db-fra.com

Bash Scripting - Comment définir le groupe avec lequel les nouveaux fichiers seront créés?

Je fais un script Shell bash et je veux changer le groupe par défaut sous lequel les nouveaux fichiers sont créés. Je sais que vous utilisez umask pour modifier les autorisations. Y a-t-il quelque chose pour le groupe?

67
Rory

La commande newgrp est utilisée pour modifier l'ID de groupe actuel pendant une session de connexion.

Les nouveaux répertoires créés dans cette session auront l'ID de groupe défini par la commande.

newgrp (1)

12
moonshadow

Il existe plusieurs façons de procéder:

  1. Vous pouvez modifier le groupe par défaut pour tous les fichiers créés dans un répertoire particulier en définissant l'indicateur setgid sur le répertoire (chmod g+s _dir_). De nouveaux fichiers dans le répertoire seront alors créés avec le groupe du répertoire (défini à l'aide de chgrp <group> <dir>). Cela s'applique à tout programme qui crée des fichiers dans le répertoire.

    Notez que ceci est hérité automatiquement pour les nouveaux sous-répertoires (à partir de Linux 3.10), cependant, si des sous-répertoires étaient déjà présents, cette modification ne leur sera pas appliquée (utilisez le -R drapeau pour cela).

  2. Si l'indicateur setgid n'est pas défini, le groupe par défaut sera défini sur l'ID de groupe actuel du processus de création. Bien que cela puisse être défini à l'aide de la commande newgrp, cela crée un nouveau Shell qui est difficile à utiliser dans un script Shell. Si vous souhaitez exécuter une commande particulière (ou un ensemble de commandes) avec le groupe modifié, utilisez la commande sg <group> <command>.

    sg n'est pas une commande standard POSIX mais est disponible sur Linux.

166
mark4o