J'ai récemment créé de nouveaux utilisateurs et les ai assignés à certains groupes. Je me demandais s'il y avait une commande qui montre tous les utilisateurs assignés à un certain groupe? J'ai essayé d'utiliser la commande 'groups', mais chaque fois que je l'utilise, il est écrit 'groupes: non trouvé'
68
groups
commande. Il est peu probable que vous ne l’ayez pas sous Linux, car il fait partie de coreutils.Réponses:
Vous pouvez utiliser grep:
Cela répertorie uniquement les membres supplémentaires du groupe, pas l'utilisateur qui a ce groupe comme groupe principal. Et il ne trouve que les groupes locaux, pas les groupes d'un service réseau tel que LDAP.
la source
sudo lid -g {group}
.J'ai un système où cette réponse répertorie 8 utilisateurs d'un groupe alors que lessudo lid -g {group}
listes 10.getent
réponse de @Murray Jensen ciJe préfère utiliser la commande getent ...
Donc, pour un groupe, vous devriez utiliser ce qui suit ...
où name_of_group est remplacé par le groupe que vous souhaitez rechercher. Notez que cela ne retourne que les membres supplémentaires du groupe, il n'inclut pas les utilisateurs qui ont ce groupe comme groupe principal.
Il y a beaucoup d'autres recherches que vous pouvez faire ...
passwd
étant une autre utile, vous aurez besoin de lister les groupes principaux.la source
sudo lid -g {group}
.J'ai un système où cette réponse répertorie 8 utilisateurs d'un groupe alors que lessudo lid -g {group}
listes 10.Plus facile à faire
groups [username]
Si vous voulez lister tous les utilisateurs locaux et leurs groupes locaux, vous pouvez faire
cat /etc/passwd | awk -F':' '{ print $1}' | xargs -n1 groups
Si vous obtenez "groupes: commande non trouvée", il est probable que vous ayez modifié votre chemin d'accès environnemental pour le pire, pour le réinitialiser
PATH=$(getconf PATH)
la source
| grep {group}
est ajouté et donne la réponse correcte contrairement àgetent group name_of_group
ougrep '^group_name_here:' /etc/group
cat /etc/passwd
, vous devriez utilisergentent passwd
pour que les utilisateurs de nis / ldap soient toujours listés. Le seul inconvénient est que cela peut prendre un certain temps.répertorie tous les utilisateurs du groupe nommé.
la source
groupmems
fait partie des ombres utiles utilisées sur la plupart des distributions Linux, maisgroupmems
est actuellement absent de Debian et de ses dérivés (un bogue corrigé mais non inclus dans aucune version à ce jour (à la date de nov 2016))groupmems
ne traite que les groupes présents/etc/group
(pas ceux de LDAP ou d’une autre base de données d’utilisateurs) et nécessite les privilèges de superutilisateur car il essaie d’ouvrir / etc / gshadow.cut
et amis).sudo lid -g {group}
. J'ai un système où cette réponse répertorie 8 utilisateurs d'un groupe alors que lessudo lid -g {group}
listes 10.Je suis surpris personne n'a mentionné
Cette commande donnera une liste des groupes dans lesquels se trouve l'utilisateur.
la source
groups
La commande imprime les appartenances à un groupe pour un utilisateur. Vous pouvez utiliser lalid
commande pour lister les utilisateurs dans un groupe tel que:la source
lid
fait partie de libuser, qui n'est pas installé par défaut sur de nombreuses distributions.OP a formulé la question pour exclure la possibilité d'utiliser la commande groups . Comme cela fait partie de coreutils sur Linux, soit (a) il a été supprimé, soit (b) OP saisit le nom de façon incorrecte.
OP aurait pu utiliser
groups
comme ceci, par exemple:Une réponse suggérée juste grep pour le nom du groupe dans
/etc/group
. Parfois, cela fonctionne comme prévu.Une utilisation légèrement meilleure de grep prend en compte la syntaxe de
/etc/group
:de sorte que seule la partie précédant les deux points est un nom de groupe valide. Un simple grep sans égard à la syntaxe peut (et va) chercher des correspondances trompeuses dans le fichier. Utilisez des expressions régulières pour que le grep corresponde exactement à ce qui est nécessaire:
ou en utilisant une variable shell:
Cependant, cela ne répertorie que ceux qui ne font pas partie d'un groupe par défaut . Pour ajouter ceux , vous devez prendre en compte le fichier de mot de passe, par exemple, en extrayant le numéro ID de groupe à partir
/etc/group
, et l' impression des utilisateurs dont le groupe par défaut correspond à partir/etc/passwd
, par exemple,Vous pouvez faire la même chose en utilisant seulement grep et sed, mais c'est plus de travail que d'utiliser awk.
Une autre réponse suggérée a proposé d’utiliser
getent
, qui est probablement aussi sur une machine Linux (avec Debian, cela fait partie de GNU libc). Cependant, une vérification rapide montre que seul le/etc/group
contenu est fourni .Je (comme la plupart des gens) n’ai pas
libusers
ou n’ai pas étélid
installé, je ne peux donc pas dire s’il répond aux conditions d’OP.Il y a aussi le
id
programme, qui donne des informations sur le groupe. Quelqu'un pourrait développer cela comme une réponse possible.la source
sed -n "s/^$groupname:.*://p" /etc/group
mais cela pourrait quand même générer des résultats erronés si le nom de groupe contient des opérateurs RE (.
par exemple, ce n'est pas rare dans les noms de groupe).getent
interrogera également LDAP / NIS ... mais peut-être pas quand l'énumération est explicitement désactivée pour la base de données du groupe.groups
cela n’aidera pas, car il répertorie les groupes dont un utilisateur est membre, par opposition à la liste des membres d’un groupe donné.Fonctionne comme un charme:
la source
sudo lid -g
listes sont 8. @Bhavik La réponse acceptée n'est pas correcte non plus.Certains vous diront d'installer libuser (pour 'lid') ou des membres (pour 'membres'). Mais en s’appuyant sur la réponse https://unix.stackexchange.com/a/349648/77959 qui traitait ce problème d’appartenance à un groupe de connexion, j’ai trouvé un autre groupe non couvert par ce script. Alors, voici le meilleur des deux approches combinées:
la source
getent
ou grep'^group_name_here:' /etc/group
Cette modification de l'approche user3717722 listera les membres du groupe dans une base de données NIS:
la source