Je ne commenterais que si je le pouvais. Je n'ai pas assez de karma sur ce site.
Je n'ai aucune idée de la raison pour laquelle quelqu'un a voté contre @callaginn, car il soulève un point valable.
Les méthodes suivantes sont valables (et probablement les meilleures options pour les scripts shell) :
id -u # returns UID
id -un # returns username
id -g # returns primary (a.k.a. effictive) GID
id -gn # returns primary Group Name
Voir man id
pour plus d'options.
Pour répondre à cette question spécifique, si j'écrivais un script qui fonctionnerait dans n'importe quel environnement, je ne supposerais pas que le groupe par défaut staff
est utilisé et je ferais plutôt ce qui suit si j'écrivais un script qui pourrait être exécuté pour n'importe quel utilisateur (qu'il modifie ou non son système) :
chown "$(id -un):$(id -gn)" some_file
Il est toujours préférable d'être agnostique à la plate-forme chaque fois que cela est possible (si cela ne demande pas trop de temps), car vous aurez moins de dettes techniques plus tard.
Veuillez noter que le drapeau chown
doit être utilisé avec la plus grande confiance. Vous risqueriez vraiment d'abîmer votre système (même s'il est à noter qu'Apple a rendu la chose difficile depuis qu'ils ont implémenté -R
).
Considérez, par exemple, que si vous deviez utiliser System Integrity Protection
au lieu de chown -R 755 /var
en tant que root avec chown -R 755 /var/www
désactivé, je pense que vous seriez dans le pétrin. Je ne peux pas vous dire ce qui se casserait en premier, mais ce serait le cas sur un système Darwin, mais croyez-moi, ce ne serait pas joli.
J'espère que quelqu'un trouvera cela utile.