En un cuadro de Linux, ¿cómo enumero a todos los usuarios que tienen privilegios de root (y aún mejor, a todos los usuarios en general junto con si tienen root o no)?
¿Puede ser más específico en cuanto a lo que quiere decir con "privilegios de root"? ¿Te refieres a usuarios con UID = 0?
Chris S
Usuarios que tienen la capacidad de hacer cualquier cosa. Básicamente: si es posible, necesito enumerar los usuarios junto con los grupos de los que son miembros.
Eric
2
Si supiera dónde está su computadora, podría subir y tirar del cable de alimentación. Eso calificaría como "hacer cualquier cosa", lo que significa que estoy en tu lista. Rafiq ha enumerado las tres cosas más comunes, pero podría haber más y sabemos que tenemos en cuenta su sistema o cómo está configurado.
Chris S
Respuestas:
42
No olvides cambiar la contraseña de root. Si algún usuario tiene UID 0 además de root, no debería hacerlo. Mala idea. Verificar:
grep 'x:0:' /etc/passwd
Nuevamente, no debe hacer esto sino verificar si el usuario es miembro del grupo raíz:
grep root /etc/group
Para ver si alguien puede ejecutar comandos como root, verifique sudoers:
cat /etc/sudoers
Para verificar el bit SUID, que permite que los programas se ejecuten con privilegios de root:
Estrictamente, ese primero solo funciona si el archivo de contraseña oculta está en el usuario. Estoy de acuerdo en que casi siempre lo es, en estos días, pero por si acaso, hice un trabajo rápido que verifica explícitamente el campo 3.
MadHatter apoya a Monica el
44
Este es un patrón mejor que el primero: grep '[^:]*:[^:]*:0:' /etc/passwd. +1 en particular para verificar SUID.
Pausado hasta nuevo aviso.
33
Para ver quién es UID 0:
getent passwd 0
Para ver quién está en grupos root, wheeladmy admin:
getent group root wheel adm admin
Para enumerar todos los usuarios y los grupos de los que son miembros:
A diferencia de todas las otras respuestas que confían erróneamente en el archivo / etc / passwd, esta, en getent passwdcambio, es correcta. Simplemente no olvides revisar / etc / sudoers.
mivk
Gracias por esto. Mucho más claro. Para mí esta es la respuesta aceptada.
Fiddy Bux
6
La raíz pura es la identificación de usuario "0".
Todos los usuarios en el sistema están en el archivo / etc / passwd:
less /etc/passwd
Aquellos que son root tienen "0" como ID de usuario, que es la tercera columna. Aquellos con "0" como grupo (cuarta columna) también pueden tener algunos privilegios de root.
A continuación, querrá ver los grupos y ver quién es un miembro adicional de los grupos "raíz" o "rueda" o "administrador":
less /etc/group
Los usuarios que figuran en esos grupos podrían tener algunos privilegios de root, especialmente a través del comando "sudo".
Lo último que querrá verificar es la configuración de "sudo" y ver quién está autorizado para ejecutar este comando. Este archivo en sí está bien documentado, así que no lo reproduciré aquí:
less /etc/sudoers
Eso cubre las áreas principales de quién podría tener acceso de root.
Consulte también serverfault.com/questions/205598/… para conocer algunos lugares más donde se pueden otorgar derechos de escalada de privilegios. (A saber, consolehelpery PackageKit.)
mattdm
2
Definitivamente, NO se garantiza que todos los usuarios estén en / etc / passwd. Pueden estar en LDAP, por ejemplo. Pero getent passwddebe enumerar todos los usuarios del sistema (incluida la raíz), en formato passwd, independientemente de la base de datos donde estén definidos.
Es una buena línea, pero tenga en cuenta las limitaciones (estoy seguro de que MadHatter ya lo sabe): no verificará los grupos y no verificará a los sudoers. Solo comprobará, como él dice, raíz implícita.
Rafiq Maniar
2
No analices / etc / passwd. Los usuarios pueden estar definidos en otro lugar. Usar en su getent passwdlugar. Para su primer ejemplo de "imprimir todos los usuarios", más bien intente esto:getent passwd | perl -naF: -e 'print "$F[0]\n"'
mivk
2
Para obtener una lista rápida de todos los usuarios, intente presionar la pestaña dos veces (para completar automáticamente) después de escribir el passwdcomando seguido de un espacio. Esto funciona con el sucomando también.
Debe hacerse como un usuario con privilegios de root.
Respuestas:
No olvides cambiar la contraseña de root. Si algún usuario tiene UID 0 además de root, no debería hacerlo. Mala idea. Verificar:
grep 'x:0:' /etc/passwd
Nuevamente, no debe hacer esto sino verificar si el usuario es miembro del grupo raíz:
grep root /etc/group
Para ver si alguien puede ejecutar comandos como root, verifique sudoers:
cat /etc/sudoers
Para verificar el bit SUID, que permite que los programas se ejecuten con privilegios de root:
find / -perm -04000
fuente
grep '[^:]*:[^:]*:0:' /etc/passwd
. +1 en particular para verificar SUID.Para ver quién es UID 0:
Para ver quién está en grupos
root
,wheel
adm
yadmin
:Para enumerar todos los usuarios y los grupos de los que son miembros:
fuente
getent passwd
cambio, es correcta. Simplemente no olvides revisar / etc / sudoers.La raíz pura es la identificación de usuario "0".
Todos los usuarios en el sistema están en el archivo / etc / passwd:
Aquellos que son root tienen "0" como ID de usuario, que es la tercera columna. Aquellos con "0" como grupo (cuarta columna) también pueden tener algunos privilegios de root.
A continuación, querrá ver los grupos y ver quién es un miembro adicional de los grupos "raíz" o "rueda" o "administrador":
Los usuarios que figuran en esos grupos podrían tener algunos privilegios de root, especialmente a través del comando "sudo".
Lo último que querrá verificar es la configuración de "sudo" y ver quién está autorizado para ejecutar este comando. Este archivo en sí está bien documentado, así que no lo reproduciré aquí:
Eso cubre las áreas principales de quién podría tener acceso de root.
fuente
consolehelper
yPackageKit
.)getent passwd
debe enumerar todos los usuarios del sistema (incluida la raíz), en formato passwd, independientemente de la base de datos donde estén definidos.Para imprimir a todos los usuarios
Para imprimir solo aquellos usuarios con UID 0, como lo han dicho otros, los usuarios con privilegios raíz implícitos:
fuente
getent passwd
lugar. Para su primer ejemplo de "imprimir todos los usuarios", más bien intente esto:getent passwd | perl -naF: -e 'print "$F[0]\n"'
Para obtener una lista rápida de todos los usuarios, intente presionar la pestaña dos veces (para completar automáticamente) después de escribir el
passwd
comando seguido de un espacio. Esto funciona con elsu
comando también.Debe hacerse como un usuario con privilegios de root.
fuente
Me molestó que no hubiera una respuesta de una sola línea ... Si desea enumerar todas las cuentas UID 0 (raíz) use lo siguiente:
Mejor,
fuente