Je veux une commande pour lister tous les utilisateurs qui ont les privilèges root, c'est-à-dire sudo ?
Supposons que je suis un utilisateur sudoer. Comment pourrais-je connaître tous les autres utilisateurs sudoer ?
Je veux une commande pour lister tous les utilisateurs qui ont les privilèges root, c'est-à-dire sudo ?
Supposons que je suis un utilisateur sudoer. Comment pourrais-je connaître tous les autres utilisateurs sudoer ?
Si vous avez juste besoin de lister les sudoers listés dans le fichier sudo
je pense que la meilleure façon de procéder serait d'exécuter cette commande (qui devrait être plus légère sur le plan informatique que toutes les autres commandes de cette réponse) :
grep -Po '^sudo.+:\K.*$' /etc/group
De plus, comme suggéré dans les commentaires de muru, le format des entrées dans la rubrique /etc/group
peuvent être facilement traitées par cut
:
grep '^sudo:.*$' /etc/group | cut -d: -f4
De même, comme suggéré dans les commentaires par muru, on peut utiliser getent
à la place de grep
:
getent group sudo | cut -d: -f4
N'importe laquelle de ces commandes imprimera tous les utilisateurs listés dans le fichier sudo
groupe en /etc/group
(le cas échéant).
Commandement n°1 en panne :
grep
: Imprime toutes les lignes correspondant à une expression rationnelle dans un fichier.-P
: fait grep
correspond aux regex de style Perlo
: fait grep
n'imprime que la chaîne trouvée'^sudo.+:\K.*$'
: fait grep
correspond à l'expression entre les guillemetsVentilation de la Regex #1 :
^
: début de la ligne.+
: un ou plusieurs caractères\K
: rejeter la correspondance précédente.*
: zéro ou plusieurs caractères$
: fin de la ligneCommandement n°2 en panne :
grep
: Imprime toutes les lignes correspondant à une expression rationnelle dans un fichier.'^sudo.+:\K.*$'
: fait grep
correspond à l'expression entre les guillemetscut
: Imprime seulement une section spécifiée de chaque ligne dans un fichier-d:
: fait cut
interpréter :
comme délimiteur de champ-f4
: fait cut
n'imprimer que le quatrième champRépartition de la Regex #2 :
^
: début de la ligne.*
: zéro ou plusieurs caractères$
: fin de la ligneComme il l'a déclaré ici Je considère que le moyen le plus simple de découvrir avec -l
& -U
ensemble, il suffit de taper users
il énumérera par exemple : John
alors :
Si l'utilisateur a sudo
l'accès, il imprimera le niveau de sudo
pour cet utilisateur particulier :
sudo -l -U John
User John may run the following commands on this host:
(ALL : ALL) ALL
Si l'utilisateur n'a pas l'accès sudo, il imprimera qu'un utilisateur est pas autorisé à exécuter sudo
sur localhost :
sudo -l -U John
User John is not allowed to run sudo on localhost.
En développant le sudo -l -U
on peut utiliser getent passwd
pour déterminer les utilisateurs qui peuvent utiliser sudo
. Utilisation de getent
nous permet d'accéder à des utilisateurs qui peuvent ne pas être présents dans l'entreprise. passwd
comme les utilisateurs LDAP :
getent passwd | cut -f1 -d: | sudo xargs -L1 sudo -l -U | grep -v 'not allowed'
sudo -U
ne renvoie pas de valeur de sortie non nulle dont nous pourrions tirer parti, nous en sommes donc réduits à parcourir la sortie.
Comme cela a déjà été dit, la réponse peut être trouvée sur Unix & Linux Stack Exchange :
Cela montre que l'utilisateur "saml" est membre du groupe "wheel".
$ getent group wheel wheel:x:10:saml
La seule différence est que le groupe dans Ubuntu n'est pas wheel
mais sudo
(ou admin
dans les anciennes versions d'Ubuntu). La commande devient donc :
getent group sudo
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.