J'ai essayé de chercher sur Google mais je ne suis allé nulle part. Comment puis-je lister tous les membres d'un groupe appelé à mygroup
partir de la ligne de commande sous OS X?
$ dscl . list /groups
va me chercher tous les groupes ... mais comment puis-je voir les membres de chaque groupe?
macos
command-line
user-accounts
Meltemi
la source
la source
dscacheutil -q group -a name admin
m'a seulement donné 1 résultat, alors que le script shell de la réponse acceptée m'a donné 2 résultats.Il n'y a pas de commande standard qui répertorie tous les membres d'un groupe dans OS X, alors voici une fonction shell qui le fait:
Copiez la ligne de commande ci-dessus sur le terminal, puis tapez (où groupe est le nom d'un groupe existant).
members mygroup
Quelques explications pour ceux qui sont intéressés:
À ma connaissance, un utilisateur peut appartenir à un groupe sous OS X de cinq manières différentes. La commande ne permet pas de générer tous les membres, ni même aucun des membres de mon groupe, car leur appartenance provient également d'utilisateurs. ' ID de groupe principal , appartenance par UUID de l'utilisateur , héritage de l'appartenance d'un groupe à un autre et appartenances calculées par le système, telles que le groupe tout le monde .
dscl . -read /Groups/mygroup GroupMembership
Donc, plutôt que d'essayer de garder une trace de tous ceux-ci, il semble être une meilleure idée de simplement vérifier l'adhésion de chaque utilisateur du système (en utilisant dsmemberutil ), et c'est ce que font la fonction shell et le script ci-dessous.
Ce script de membres est équivalent à la fonction shell, mais permet une gestion plus agréable des entrées non valides:
Informations complémentaires:
Les cinq façons d'être membre du groupe sont:
Ceux-ci peuvent être explorés avec des commandes comme
dscl . -read /Groups/somegroup
Exemple 4 : les membres du groupe Print Administrator __lpoperator_ héritent de l'appartenance au groupe d'opérateurs d'impression, tandis que les membres du groupe admin héritent de l'appartenance à ce groupe.
Exemple de 5 :
VOIR AUSSI
id (1) , dscl (1) , dsmemberutil (1) , dseditgroup (8) , DirectoryServiceAttributes (7) , uuid (3)
la source
Remarque: C'était ma réponse initiale, écrite avant que je réalise que cette réponse donne toujours un résultat incomplet . (Par exemple, il ne trouve pas les membres du tout groupe!) J'ai donc écrit une meilleure réponse, qui comprend un script qui répertorie tous les membres d'un groupe dans OS X .
La propriété GroupMembership de mygroup peut être imprimée avec dscl comme ceci:
Mais cela ne garantit pas la sortie de tous (ou même de tous) des membres du groupe. Ce qui manque, ce sont les utilisateurs qui sont membres du groupe uniquement en l'ayant comme identifiant de groupe principal .
Un exemple courant de ceci dans OS X est les comptes de connexion classiques, qui ont un personnel (groupe 20) comme groupe principal, mais ne sont pas répertoriés dans la propriété GroupMembership du groupe de personnel .
Ces utilisateurs peuvent être trouvés en recherchant l' ID numérique du groupe principal (gid) comme dans cet exemple pour le groupe de personnel (gid 20):
et le gid numérique (PrimaryGroupID) de mygroup est trouvé par:
la source
Pour obtenir tous les groupes dans lesquels se trouve un utilisateur , vous pouvez utiliser les éléments suivants:
Exemple de sortie:
En utilisant la commande ci-dessus, il est possible d’obtenir tous les utilisateurs appartenant à un groupe :
OSX :
Unix :
la source
ATTENTION: La commande ci-dessus n'affiche pas toujours la liste complète de TOUS les membres du groupe. Par exemple, pour le groupe "staff", vous n'obtenez que "root" en tant que membre du groupe, ce qui est incomplet. Pour le vérifier, utilisez l'une des commandes suivantes en tant qu'utilisateur par défaut (PAS "root"):
id -Gn
OUgroups
En conséquence, tous les groupes dont l'utilisateur connecté par défaut est membre s'affichent. L'un d'entre eux devrait être "personnel". Ainsi, outre "root", il y a plus de membres du groupe "staff", qui ne sont pas listés par la commande
dscl . -read /Groups/[groupname] | grep GroupMembership
. Il en va de même pour la commandedscacheutil -q group -a name staff
qui vous suggère également que seul "root" est un membre du groupe "staff", ce qui est évidemment incomplet.Arne Stenström a déjà fourni la seule méthode fiable pour obtenir réellement TOUS les membres d’un groupe dans le terminal sous OSX. Ceci utilise sa fonction shell resp. son script shell. Les deux fonctionnent très bien!
la source
Commander
Semblable à la réponse de @ duperuser, ce qui suit n’imprimera que les utilisateurs du groupe
admin
avec des espaces entre eux:Sortie
L'exécution de la commande ci-dessus produira quelque chose comme ceci:
Panne
Cette
dscacheutil
commande permet d’interroger des informations sur différentes catégories du cache du service d’annuaire du système. L'-q
option vous permet de spécifier la catégorie que vous souhaitez interroger. Les catégories disponibles sont groupe, hôte, montage, protocole, rpc, service et utilisateur. Nous interrogeons ensuite cette catégorie en spécifiant une paire clé-valeur avec l'-a
option. Dans ce cas, nous voulons lister le groupe dont la clé estname
égale à la valeuradmin
. Ladscacheutil
commande ci-dessus produit une sortie comme ceci:Ensuite, nous canalisons ce texte
grep
et choisissons la ligne contenant la chaîneusers:
au début. L'-e
option permet à grep de reconnaître les expressions régulières . Le^
caractère spécifie que nous voulonsusers:
être au début de la ligne.Cela nous donne
Enfin, nous passons cela dans sed et remplaçons le texte
users:
par la chaîne vide. Dans sed , la première lettres
signifie substituer./users: /
Nous voulons remplacer le texte entre la première paire de barres obliques ( ) et la deuxième paire de barres obliques (//
) que nous voulons remplacer (dans ce cas, rien).la source
Voici une implémentation de ce problème dérivée d'une implémentation dans une discussion connexe . La routine est quelque peu générique, avec un point d’accès au service d’annuaire pour toute plate-forme / architecture spécifique, de sorte qu’elle peut être utilisée sans modification sur un réseau hétérogène. Nous avons installé un lien symbolique vers cet utilitaire nommé
zed
. Les autres origines de cette implémentation sont mentionnées dans la section d'attribution du script. Cet outil est conçu pour être exécuté au moins sur OSX, HP-UX, Linux et SunOS, mais n'a pas encore été mis à jour.testé sur SunOS et HP-UX. Le script a été testé autant que possible sur Ubuntu Linux 12.04 et Mavericks OSX 10.9.1. La sortie de ce script correspond à la sortie de la première implémentation de script shell pour ce problème et est donc considérée comme correcte.la source