El otro día un compañero usuario de Linux me preguntó cómo encontrar el número de super usuarios (los usuarios que tienen acceso a sudo) que tengo en mi servidor Linux. Buena pregunta, pero no tuve la respuesta. Por lo tanto, hice una búsqueda rápida de Google. Para mi sorpresa, no es tan difícil. Es sólo un comando de una sola línea. ¿Cómo es que ya no conocía este simple truco? Para aquellos que se preguntan cómo encontrar todos los usuarios de sudo o super usuarios en su sistema Linux, sigue leyendo.
Podrías argumentar que un buen administrador de Linux debe saber cuántos super usuarios y usuarios normales hay en un sistema que está administrando. ¡Tienes razón! Sin embargo, hay ocasiones que a veces necesitamos dar un acceso temporal del sudo a un usuario normal para instalar un software o hacer determinada tarea administrativa. Con el tiempo, podríamos olvidarnos de revocar el acceso a sudo. Por lo tanto, es una buena práctica saber cuántos super usuarios están en su sistema de vez en cuando. Si hay algún acceso sudo olvidado o no deseado, simplemente puedes revocarlos.
Primero, listamos todos los usuarios del sistema. Para ello, ejecuta:
$ awk -F':' '{ print $1}' /etc/passwd
Ejemplo de salida en mi Ubuntu:
root daemon bin sys sync games man lp mail news uucp proxy www-data backup list irc gnats nobody systemd-timesync systemd-network systemd-resolve systemd-bus-proxy syslog _apt lxd messagebus uuidd dnsmasq sshd sk senthil kumar ostechnix
También puedes utilizar el siguiente comando para enumerar todos los usuarios:
$ compgen -u
Entre todos los usuarios, solo encontraremos los sudo o super usuarios en nuestro sistema Linux.
$ grep '^sudo:.*$' /etc/group | cut -d: -f4 sk,ostechnix
Además, puedes utilizar el comando “getent” en lugar de “grep” para obtener el mismo resultado.
$ getent group sudo | cut -d: -f4 sk,ostechnix
Como se ve en la salida anterior, “sk” y “ostechnix” son los usuarios de sudo en mi sistema.
En los ejemplos anteriores, enumeramos todos los usuarios de sudo. Es posible que desees saber si un determinado usuario tiene privilegio de sudo o no.
Para ello, ejecuta:
$ sudo -l -U sk
Salida:
Matching Defaults entries for sk on ubuntuserver: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin User sk may run the following commands on ubuntuserver: (ALL : ALL) ALL
Como puedes ver, el usuario llamado “sk” puede realizar todos los comandos. Por lo tanto, él está en el grupo sudo. Vamos a ver a otro usuario.
$ sudo -l -U senthil
Salida:
User senthil is not allowed to run sudo on ubuntuserver.
¡Vaya! El usuario “senthil” no está autorizado a ejecutar sudo, por lo que es sólo un usuario normal.
También podemos encontrar si un usuario tiene acceso a sudo ejecutando el siguiente comando:
$ sudo -nv
Si no obtienes nada como salida, el usuario todavía tiene acceso a sudo.
Si ves una salida como la de abajo, entonces el usuario no tiene acceso a sudo.
$ sudo -nv Sorry, user senthil may not run sudo en ubuntuserver.
Eliminar privilegios de sudo de un usuario
Ya sabes los usuarios de sudo en tu sistema Linux. Es posible que no desees dar permiso sudo acceso a algunos usuarios.
Si deseas eliminar el acceso de sudo de un usuario en particular, simplemente puedes ejecutar:
$ sudo deluser <username> sudo
Ejemplo:
$ sudo deluser ostechnix sudo
Salida:
Removing user `ostechnix' from group `sudo' ... Done.
El comando anterior eliminará al usuario denominado “ostechnix” del grupo “sudo”, pero no del sistema. En otras palabras, el usuario “ostechnix” se convertirá ahora en un usuario normal.
Además, puedes utilizar el siguiente comando para revocar el acceso de sudo de un usuario:
$ sudo gpasswd -d ostechnix sudo
Ten cuidado al eliminar usuarios del grupo de sudo. No elimines el administrador real del grupo “sudo”.
Verifica que el usuario “ostechnix” haya sido realmente eliminado del grupo sudo usando el comando:
$ sudo -l -U ostechnix User ostechnix is not allowed to run sudo on ubuntuserver.
Sí, el usuario “ostechnix” se ha eliminado del grupo sudo y no puede ejecutar ninguna tarea administrativa.