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
sudo
permiso y quién no ... si un usuario está en elsudo
grupo pero elsudoers
archivo no tiene nada mencionado para elsudo
grupo, ¿entonces?Respuestas:
Si solo necesita enumerar los sudoers enumerados en el
sudo
grupo, 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/group
puede ser manejado fácilmente porcut
:También de nuevo como se sugiere en los comentarios de muru, uno puede usar
getent
en lugar degrep
:Cualquiera de estos comandos imprimirá a todos los usuarios enumerados en el
sudo
grupo/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
: hacegrep
coincidir las expresiones regulares de estilo Perlo
: hacegrep
imprimir solo la cadena coincidente'^sudo.+:\K.*$'
: hacegrep
coincidir 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.*$'
: hacegrep
coincidir la expresión regular entre las comillascut
: Imprime solo una sección específica de cada línea en un archivo-d:
: hacecut
interpretar:
como un delimitador de campo-f4
: hace que lacut
impresió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 foo
es comogrep foo /etc/group
, pero más capaz.getent
nada, ¿alguna idea sobre cómogrep
y cómogetent
comparar computacionalmente? ¿Sería más ligero corrergetent
?sudo
grupo. 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
&-U
opciones juntas, solo tipee unausers
lista, por ejemplo:John
luego:Si el usuario tiene
sudo
acceso, imprimirá el nivel desudo
acceso para ese usuario en particular:Si el usuario no tiene acceso a sudo, se imprimirá que un usuario no puede ejecutar
sudo
en 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) ALL
funciona. 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
(oadmin
en versiones anteriores de Ubuntu). Entonces el comando se convierte en:fuente
geten group
y 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 -U
prueba, se puede usargetent passwd
para determinar los usuarios que pueden usarsudo
. El usogetent
nos permite acceder a usuarios que pueden no estar presentes en elpasswd
archivo, como los usuarios LDAP:sudo -U
no 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
vagrant
usuario puede utilizarsudo
incluso sin ser mencionado en/etc/sudoers
ni en/etc/group
ni encontrado congetent
.Resulta que
sudo
tambié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 tienensudo
acceso.Este tipo de
sudo
acceso puede ser detectado por la respuesta de JoKeR usando,sudo -l -U vagrant
pero no es detectado por ninguna de las otras respuestas aquí, en las que todos se basangetent
o/etc/group
.fuente