Je souhaite une commande permettant de répertorier tous les utilisateurs disposant des privilèges root, à savoir 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 groupe Sudo
, je pense que la meilleure façon de le faire serait d’exécuter cette commande (qui devrait est plus légère en calcul que toutes les autres commandes de cette commande. réponse):
grep -Po '^Sudo.+:\K.*$' /etc/group
Aussi, comme suggéré dans les commentaires de muru, le format des entrées dans /etc/group
peut être facilement géré par cut
:
grep '^Sudo:.*$' /etc/group | cut -d: -f4
De même, comme suggéré dans les commentaires de muru, on peut utiliser getent
à la place de grep
:
getent group Sudo | cut -d: -f4
Chacune de ces commandes imprimera tous les utilisateurs répertoriés dans le groupe Sudo
dans /etc/group
(le cas échéant).
Répartition de la commande n ° 1:
grep
: Imprime toutes les lignes correspondant à une expression régulière dans un fichier-P
: fait correspondre grep
aux expressions rationnelles de style Perlo
: permet à grep
d’imprimer uniquement la chaîne correspondante'^Sudo.+:\K.*$'
: fait en sorte que grep
corresponde à l'expression régulière entre les guillemetsRépartition regex # 1:
^
: début de la ligne.+
: un ou plusieurs caractères\K
: ignorer la correspondance précédente.*
: zéro ou plusieurs caractères$
: fin de ligneRépartition de la commande n ° 2:
grep
: Imprime toutes les lignes correspondant à une expression régulière dans un fichier'^Sudo.+:\K.*$'
: fait en sorte que grep
corresponde à l'expression régulière entre les guillemetscut
: n'imprime qu'une section spécifiée de chaque ligne d'un fichier-d:
: permet à cut
d'interpréter :
en tant que délimiteur de champ-f4
: permet à cut
d'imprimer uniquement le quatrième champRépartition regex # 2:
^
: début de la ligne.*
: zéro ou plusieurs caractères$
: fin de ligneComme indiqué ici Je considère la méthode la plus simple pour découvrir les options -l
& -U
ensemble, il vous suffit de taper users
pour obtenir la liste, par exemple: John
name__, puis:
Si l'utilisateur a un accès Sudo
name__, il affichera le niveau d'accès 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 accès à Sudo, il indiquera qu'un utilisateur est non autorisé à exécuter Sudo
sur localhost:
Sudo -l -U John
User John is not allowed to run Sudo on localhost.
Comme cela a déjà été dit, la réponse peut être trouvée sur nix & 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 versions antérieures d'Ubuntu). Alors la commande devient:
getent group Sudo
En développant le test Sudo -l -U
, on peut utiliser getent passwd
pour déterminer les utilisateurs pouvant utiliser Sudo
. L'utilisation de getent
nous permet d'accéder aux utilisateurs qui ne figurent peut-être pas dans le fichier passwd
, tels que les utilisateurs LDAP:
getent passwd | cut -f1 -d: | Sudo xargs -L1 Sudo -l -U | grep -v 'not allowed'
Sudo -U
ne renvoie pas une valeur de sortie non nulle dont nous pourrions tirer parti, nous sommes donc réduits à greper la sortie.
Cette commande renvoie la liste des utilisateurs dotés des droits Sudo:
awk -F ":" '{ system("groups " $1 " | grep -P \"[[:space:]]Sudo([[:space:]]|$)\"") }' /etc/passwd
La sortie est (par exemple):
<username> : <username> adm cdrom Sudo dip plugdev lpadmin sambashare docker
Si seul le nom d'utilisateur à afficher, alors cette commande:
awk -F ":" '{ system("groups " $1 " | grep -P \"[[:space:]]Sudo([[:space:]]|$)\"") }' | awk -F ":" '{ print $1 }' /etc/passwd
Commande -
cat group | grep Sudo
Sortie -
Sudo:x:27:Tom,Stacy
Tom, Stacy sont les utilisateurs avec les privilèges Sudo
Sur la plupart des systèmes de type Unix, qui ont la commande Sudo et un fichier de configuration Sudo; lancer visudo en tant que root:
:~$ Sudo bash
ou
:~$ su
:~# visudo
permettra à un administrateur d'inspecter et de modifier les privilèges des groupes pouvant utiliser la commande Sudo.
Sur les systèmes de type Unix basés sur Debian, comme Ubuntu, les groupes 4 et 27 ont généralement des droits d’accès aux privilèges Sudo.
Le groupe 4 est le groupe d'administrateurs (adm) et le groupe 27 est le gid Sudo.
Pour voir quels utilisateurs sont actuellement affectés à ces groupes, tapez le fichier/etc/group comme indiqué ci-dessous:
:~$ cat /etc/group
Un exemple de sortie, sur Ubuntu (mais pas sur Redhat, sur Oracle Solaris/Solaris ou sur des systèmes BSD) donnerait ceci:
adm:x:4:youruser
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:youruser,mybrother
floppy:x:25:
tape:x:26:
Sudo:x:27:youruser,mybrother
Comme nous pouvons le constater, votre utilisateur est l'administrateur du système et membre du groupe 4 (adm). Mais votre utilisateur et mon frère sont tous deux membres du groupe 27, qui est le numéro de groupe (IDG) du groupe Sudo. Donc, mon frère peut également atteindre les privilèges root (super utilisateur).
De nombreux systèmes Linux comme Fedora et Slackware intègrent le groupe de roues gid = 10. Qui autorise les privilèges d'administrateur lorsque la commande Sudo est appliquée. Sur les systèmes basés sur BSD (par exemple FreeBSD), l'utilisateur root est membre du groupe de roues qui est gid 0.
De plus, en utilisant la commande id, tout utilisateur peut trouver les informations de groupe d'un autre utilisateur connu du système.
Par exemple:
:~$ id mybrother
Échantillon de sortie
uid=1001(mybrother) gid=1001(mybrother) groups=1001(mybrother),24(cdrom),27(Sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare)