10 jeux amusants à jouer dans le terminal Linux
Agence web » Actualités du digital » Comment répertorier tous les utilisateurs d’un groupe sous Linux

Comment répertorier tous les utilisateurs d’un groupe sous Linux

Sous Linux, les fichiers ont trois ensembles d’autorisations. Un ensemble est pour le groupe du fichier. Avant d’attribuer un fichier à un groupe, vous souhaiterez peut-être vérifier qui sont les membres du groupe.

Autorisations de fichiers et de répertoires

Les fichiers et répertoires sous Linux ont un ensemble d’autorisations pour le propriétaire, un autre ensemble pour le groupe auquel le fichier est attribué et des autorisations pour tous ceux qui ne font pas partie de l’une des deux catégories précédentes.

Chaque ensemble d’autorisations définit si les membres de cette catégorie peuvent lire, écrire ou exécuter le fichier. Dans le cas d’un répertoire, l’action d’exécution équivaut à pouvoir cd dans le répertoire.

Le groupe par défaut d’un fichier ou d’un répertoire est le groupe par défaut du propriétaire. C’est généralement la personne qui l’a créé. Les autorisations de groupe sont utilisées pour permettre à un ensemble d’utilisateurs d’avoir un accès contrôlé aux fichiers et répertoires des autres membres de ce groupe.

Par exemple, vous pouvez avoir une équipe de développeurs, une équipe de documentation, une équipe de recherche, etc. Les membres de chaque équipe peuvent être ajoutés à un groupe nommé de manière appropriée, pour faciliter la collaboration. Les utilisateurs peuvent appartenir à plusieurs groupes à la fois.

C’est un schéma simple mais robuste. Mais si vos fichiers sont sensibles, vous vous sentirez peut-être plus heureux de vérifier qui sont les membres du groupe avant de partager votre travail avec eux. il y a différentes facons de faire cela. Mais prenez note. Les deux méthodes les plus fréquemment recommandées posent problème.

Le fichier /etc/groups

Le fichier « /etc/group » contient deux-points «:” liste délimitée des groupes et des membres du groupe. Chaque ligne comporte quatre champs.

  • Nom: Le nom unique du groupe.
  • Mot de passe: Non utilisé. Cela tiendra toujours « x ».
  • ID de groupe: L’identifiant unique du groupe.
  • Utilisateurs: Une liste délimitée par des virgules des membres du groupe. La liste est généralement vide pour les comptes système et démon.

Pour vider le contenu du fichier dans la fenêtre du terminal, vous pouvez utiliser catmais il est plus pratique de pouvoir faire défiler le contenu du fichier avec less.

less /etc/group

Utiliser cat pour voir le contenu du fichier /etc/group

La plupart des entrées en haut de la liste n’ont pas de membres, bien que le groupe « adm » en ait deux, et le groupe « cdrom » en ait un.

La première partie du fichier /etc/groups dans le visualiseur de fichiers less

Si nous voulons découvrir les groupes dans lesquels se trouve un utilisateur spécifique, nous pouvons utiliser grep pour rechercher des entrées avec leur nom de compte d’utilisateur. Ce n’est pas notre tâche à accomplir. Nous voulons voir tous les membres d’un groupe, pas les groupes auxquels appartient une personne. Mais il est instructif pour nous d’y jeter un coup d’œil.

grep "dave" /etc/group

La liste des groupes dont l'utilisateur dave est membre

Les entrées qui contiennent la chaîne « dave » sont répertoriées pour nous. Et caché parmi eux se trouve un signe que les choses ne sont peut-être pas aussi simples que nous le pensions.

Lorsqu’un utilisateur est ajouté à Linux, l’action par défaut consiste à le placer dans un groupe portant le même nom que son compte d’utilisateur. C’est leur primaire groupe. Tous les autres groupes auxquels ils sont ajoutés sont appelés secondaire groupes.

Le problème est que les utilisateurs ne sont pas répertoriés comme membres de leurs groupes principaux. C’est pourquoi le groupe « dave » n’affiche aucun membre, bien que l’utilisateur « dave » soit membre de ce groupe.

Bien sûr, les administrateurs système peuvent remplacer le groupe principal de n’importe quel utilisateur par celui de n’importe quel autre groupe. Cela signifie qu’un utilisateur peut être membre de n’importe quel groupe mais qu’il ne sera pas répertorié comme tel dans le fichier « /etc/group ». C’est un problème.

Le deuxième problème est que le fichier « /etc/group » n’est pas une source unique de vérité. Les installations Linux modernes peuvent stocker des informations sur les utilisateurs et les groupes dans plus d’endroits que « /etc/passwd » et « /etc/group », en particulier dans les situations d’entreprise où des services tels que le protocole d’accès à un répertoire léger sont déployés. En ne regardant qu’à un seul endroit, vous n’aurez peut-être pas une vue d’ensemble.

Dans notre scénario de test, nous avons créé quatre groupes pour un service de développement. Elles sont:

  • Restamer: L’équipe de recherche.
  • équipe de développement: L’équipe de développement.
  • pvqteam: L’équipe de vérification et de qualité des produits.
  • docteam: L’équipe de documentation.

Nous avons ajouté des personnes à ces équipes. Certaines personnes sont dans plus d’une équipe. Si nous ouvrons le fichier « /etc/group » dans less et faites défiler vers le bas du fichier, nous verrons les nouveaux groupes et les membres du groupe. Au moins, autant de membres que le fichier « /etc/group » connaît.

Le bas du fichier /etc/group dans le visualiseur de fichiers less

Si nous voulons extraire un seul groupe, nous pouvons rechercher en utilisant grep. Le caret « ^” représente le début d’une ligne.

grep "^devteam" /etc/group

Utilisation de grep pour extraire les membres d'un seul groupe

Cela extrait l’entrée « devteam » du fichier et répertorie tous les membres du groupe. Ou le fait-il?

La commande getent

La getent La commande vérifie plusieurs bases de données pour les informations de groupe d’utilisateurs, pas seulement « /etc/group ». Nous utiliserons getent pour nous montrer les groupes d’utilisateurs.

getent group

Utilisation de getent pour lister tous les groupes définis

Utilisant getent avec le group L’option produit, sur cette machine de test, les mêmes résultats que l’utilisation du fichier « /etc/group ». C’est parce que nous n’utilisons pas LDAP ni aucun autre service de nommage centralisé. Il n’y a donc pas d’autres sources pour getent se référer à.

La sortie du groupe getent montrant les groupes et les membres

Il n’est donc pas surprenant que les résultats correspondent à ceux du fichier « /etc/group ». Peut-être que ce que nous voyons est vraiment la réalité de la situation. Peut-être que tout est simple et, sur cet ordinateur, ce que vous voyez est ce que vous obtenez ? Réservons notre jugement là-dessus.

La getent commande peut regarder un seul groupe pour nous. Nous allons regarder le groupe « devteam ».

getent group devteam

Utilisation du groupe getent pour extraire les détails d'un seul groupe

Nous obtenons exactement les mêmes résultats que précédemment. Il existe cependant un moyen de creuser plus profondément.

La commande du couvercle

La lid commande fait partie du libuser ensemble d’outils. Il était déjà installé sur notre ordinateur de test Fedora 36 mais devait être installé sur ceux d’Ubuntu 22.04 et de Manjaro 21.

De plus, la commande s’appelle lid sur Fedora et Manjaro, mais sur Ubuntu, vous devez utiliser libuser-lid.

Pour installer la commande sur Ubuntu, tapez :

sudo apt install libuser

Installer libuser sur Ubuntu

Sur Manjaro, libuser est installé à partir de l’AUR, vous devrez donc utiliser votre assistant AUR préféré. Nous avons utilisé yay.

yay libuser

Installer libuser sur Manjaro

Vous pouvez utiliser libuser-lid pour afficher des informations sur les groupes ou les utilisateurs. Pour afficher les groupes auxquels appartient un individu, transmettez son nom de compte d’utilisateur sur la ligne de commande. Sur Fedora et Manjaro, n’oubliez pas d’utiliser lid à la place de libuser-lid.

sudo libuser-lib dave

Utilisation de libuser-lid pour afficher les groupes dont l'utilisateur dave est membre

Pour voir les membres d’un groupe, utilisez le -g (groupe) avec le nom du groupe.

sudo libuser-lid -g devteam

utiliser libuser-lid pour lister les membres du groupe devteam

Et voilà, un utilisateur appelé « francis » est apparu en tant que membre de la liste. C’est la première fois que nous le voyons. Il n’est pas listé dans « /etc/group » et getent ne l’a pas découvert non plus.

Regardons quelques utilisateurs avec le groups commande.

groups abigail
groups hayden
groups francis

Utilisation de la commande groups sur une sélection d'utilisateurs

  • L’utilisateur « abigail » appartient à un groupe appelé « abigail » et à deux autres groupes, « resteam » et « devteam ».
  • L’utilisateur « hayden » appartient à un groupe appelé « hayden » et à deux autres groupes, « pvqteam » et « docteam ».
  • L’utilisateur « francis » est dans un seul groupe, le groupe « devteam ». Il est à noter qu’ils sont ne pas dans un groupe nommé « francis ».

Nous savons que chaque utilisateur doit être membre d’un groupe principal et que, par défaut, le groupe principal a un GID et un nom qui correspondent à l’UID et au nom de compte de l’utilisateur. Il semblerait qu’il y ait quelque chose de différent à propos de l’utilisateur « francis ».

Utilisons le id commande et voyez ce que l’UID et les GID nous disent.

id abigail
id francis

Utilisation de la commande id sur les utilisateurs abigail et francis

L’utilisateur « abigail » a un UID de 1002 et un GID de 1002. Ils sont répartis en trois groupes, dont l’un est appelé « abigail ». Il a un GID de 1002. C’est leur défaut groupe primaire.

L’utilisateur « francis » a un GID de 1019, qui correspond au GID du groupe « devteam ». Cet utilisateur s’est soit vu attribuer un nouveau groupe principal, soit le groupe « devteam » a été défini comme groupe principal lorsque cet utilisateur a été ajouté au système.

Quel qu’il soit, seulement libuser-lid les a détectés et signalé leur présence dans le groupe « devteam ».

Le diable est dans les détails

Il est donc important de voir les détails authentiques.

Les groupes sont un excellent moyen de mettre en place une collaboration, tant que vous savez avec qui vous l’ouvrez.

★★★★★