Quiero un comando para enumerar todos los usuarios que tienen privilegios de root, es decir, sudo?
Supongamos que soy un usuario sudoer. ¿Cómo podría conocer a todos los demás usuarios de sudoer?
command-line
sudo
Maythux
fuente
fuente

sudopermiso y quién no ... si un usuario está en elsudogrupo pero elsudoersarchivo no tiene nada mencionado para elsudogrupo, ¿entonces?Respuestas:
Si solo necesita enumerar los sudoers enumerados en el
sudogrupo, creo que la mejor manera de hacerlo sería ejecutar este comando (que debería ser computacionalmente más ligero que cualquiera de los otros comandos en esta respuesta):Además, como se sugiere en los comentarios de muru, el formato de las entradas
/etc/grouppuede ser manejado fácilmente porcut:También de nuevo como se sugiere en los comentarios de muru, uno puede usar
getenten lugar degrep:Cualquiera de estos comandos imprimirá a todos los usuarios enumerados en el
sudogrupo/etc/group(si corresponde).Desglose del comando n. ° 1:
grep: Imprime todas las líneas que coinciden con una expresión regular en un archivo-P: hacegrepcoincidir las expresiones regulares de estilo Perlo: hacegrepimprimir solo la cadena coincidente'^sudo.+:\K.*$': hacegrepcoincidir la expresión regular entre las comillasDesglose de la expresión regular n. ° 1:
^: inicio de línea.+: uno o más personajes\K: descartar el partido anterior.*: cero o más caracteres$: fin de la líneaDesglose del comando n. ° 2:
grep: Imprime todas las líneas que coinciden con una expresión regular en un archivo'^sudo.+:\K.*$': hacegrepcoincidir la expresión regular entre las comillascut: Imprime solo una sección específica de cada línea en un archivo-d:: hacecutinterpretar:como un delimitador de campo-f4: hace que lacutimpresión sea solo el cuarto campoDesglose de Regex # 2:
^: inicio de línea.*: cero o más caracteres$: fin de la líneafuente
getent group sudo | cut -d: -f4, o use awk, pero recuerde que group y passwd tienen formatos fijos, con delimitadores.getent group: no necesita el grep en absoluto.getent group fooes comogrep foo /etc/group, pero más capaz.getentnada, ¿alguna idea sobre cómogrepy cómogetentcomparar computacionalmente? ¿Sería más ligero corrergetent?sudogrupo. Algunos unixes tienen otros grupos comowheel. La respuesta de @muru incluirá a todos los sudoers sin importar en qué grupos se encuentren.Como se indica aquí , considero la forma más sencilla de descubrir con
-l&-Uopciones juntas, solo tipee unauserslista, por ejemplo:Johnluego:Si el usuario tiene
sudoacceso, imprimirá el nivel desudoacceso para ese usuario en particular:Si el usuario no tiene acceso a sudo, se imprimirá que un usuario no puede ejecutar
sudoen localhost:fuente
for u in $(awk -F'[/:]' '{if($3>=1000&&$3!=65534) print $1}' /etc/passwd); do sudo -lU "$u" ; done. pirateo rápido nada garantizado :)"%domain [email protected]" ALL=(ALL) ALLfunciona. Me ahorró mucho tiempo, porque no sabía que esto también funciona para usuarios no locales.Como ya se ha dicho, la respuesta se puede encontrar en Unix & Linux Stack Exchange :
La única diferencia es que el grupo en Ubuntu no es
wheel, perosudo(oadminen versiones anteriores de Ubuntu). Entonces el comando se convierte en:fuente
geten groupy veo muchos números diferentes. Mi pregunta original es cómo averiguar si un usuario es un usuario del sistema (creado conuseradd -r)Ampliando la
sudo -l -Uprueba, se puede usargetent passwdpara determinar los usuarios que pueden usarsudo. El usogetentnos permite acceder a usuarios que pueden no estar presentes en elpasswdarchivo, como los usuarios LDAP:sudo -Uno devuelve un valor de salida distinto de cero que podríamos aprovechar, por lo que estamos reducidos a grep la salida.fuente
sudo.En la mayoría de los sistemas tipo Unix, que tienen el comando sudo y tienen un archivo de configuración sudo; ejecutando visudo como root:
o
permitirá que un administrador inspeccione y modifique los privilegios de los grupos que pueden usar el comando sudo.
En los sistemas tipo Unix basados en Debian, como Ubuntu, los grupos 4 y 27 generalmente tienen derechos de acceso a los privilegios de sudo.
El grupo 4 es el grupo administrador (adm) y el grupo 27 es el sudo gid.
Para ver qué usuarios están asignados actualmente a estos grupos, busque el archivo / etc / group como se muestra a continuación:
Una salida de muestra, en Ubuntu (pero no en sistemas basados en Redhat, Oracle Solaris / Solaris o BSD) produciría esto:
Como podemos ver, su usuario es el administrador del sistema y miembro del grupo 4 (adm). Pero su usuario y mi hermano son miembros del grupo 27, que es el número gid (identificación del grupo) del sudo del grupo. Entonces mybrother también puede obtener privilegios de root (superusuario).
Muchos sistemas Linux como Fedora y Slackware incorporan el grupo de ruedas gid = 10. Lo que permite privilegios de administrador cuando se aplica el comando sudo. En sistemas basados en BSD (por ejemplo, FreeBSD), el usuario raíz es un miembro del grupo de rueda que es gid 0.
Además, mediante el comando id, cualquier usuario puede encontrar la información del grupo de otro usuario conocido en el sistema.
Por ejemplo:
Salida de muestra
fuente
Este comando devuelve una lista de usuarios con derechos de sudo:
La salida es (por ejemplo):
Si solo se muestra el nombre de usuario, este comando:
fuente
Mando:
Salida:
Tom, Stacy son los usuarios con privilegios de sudo.
fuente
cat.Yo estaba confundido acerca de cómo el
vagrantusuario puede utilizarsudoincluso sin ser mencionado en/etc/sudoersni en/etc/groupni encontrado congetent.Resulta que
sudotambién lee entradas de todos los archivos en/etc/sudoers.d/. Entonces, si no ha examinado ese directorio, es posible que no se dé cuenta de cuántos usuarios realmente tienensudoacceso.Este tipo de
sudoacceso puede ser detectado por la respuesta de JoKeR usando,sudo -l -U vagrantpero no es detectado por ninguna de las otras respuestas aquí, en las que todos se basangetento/etc/group.fuente