Cómo crear un usuario administrador con sudo en Linux

· 5 min de lectura · por el equipo técnico de VPS Argentina

No conviene crear un segundo usuario con UID 0: para el sistema es root con otro nombre. Lo correcto es un usuario común con permiso de sudo. En Debian y Ubuntu se crea con adduser juan y usermod -aG sudo juan; en AlmaLinux, con useradd -m juan, usermod -aG wheel juan y passwd juan. Probalo con sudo -i desde una sesión nueva, cargale tu clave SSH y recién entonces limitá el acceso de root por SSH con PermitRootLogin.

Por qué no un segundo root

Una receta vieja crea otro usuario con UID 0, el número de root. Para el sistema es root con otro nombre: tiene todos los permisos, y lo que hace aparece como hecho por root en los archivos, en la lista de procesos y en casi todos los registros. No se sabe quién hizo qué. Tampoco suma seguridad: si después cerrás el acceso de root por SSH, ese usuario queda afuera también, porque SSH mira el número y no el nombre.

Con sudo, cada persona entra con su propio usuario y su contraseña, cada comando como administrador queda registrado con su nombre y el permiso se saca en un paso, sin tocar a los demás.

Crear el usuario en Debian y Ubuntu

Como root, adduser crea el usuario con su carpeta personal y te pide la contraseña. Los datos que pregunta después, como el nombre completo, son opcionales: Enter y seguís. El grupo sudo es el que da permiso de administrador.

adduser juan
usermod -aG sudo juan
  • La a de -aG importa: sin ella, usermod le saca al usuario todos los grupos que no nombres en el comando.
  • En Debian, sudo puede no estar instalado, sobre todo si al instalar el sistema se definió una contraseña de root. Si el comando no existe, apt install sudo.

Crear el usuario en AlmaLinux

En AlmaLinux, adduser es otro nombre de useradd: no pregunta nada ni pide contraseña, por eso son tres comandos. El grupo de administradores se llama wheel y ya viene habilitado en la configuración de sudo.

useradd -m juan
usermod -aG wheel juan
passwd juan

Probar que sudo funciona

Los grupos se leen al iniciar sesión, así que la prueba se hace desde una conexión nueva. Dejá abierta la de root por si hay que corregir algo.

  1. Desde tu computadora, conectate con el usuario nuevo: ssh juan@203.0.113.24.
  2. Corré sudo -i. Te pide la contraseña de juan, no la de root.
  3. Si el prompt termina en # y whoami responde root, funciona. Salí con exit.
  4. Si responde "juan is not in the sudoers file", revisá con id juan que figure el grupo sudo o wheel. Si figura, cerrá la sesión de juan y volvé a entrar.

Cargarle tu clave SSH

Copiale tu clave pública igual que a root: desde Linux o macOS, ssh-copy-id juan@203.0.113.24; desde Windows, la línea de PowerShell de la guía de SSH para Windows, con juan en lugar de root. Después probá que entra sin pedir la contraseña del servidor.

Si ya apagaste el acceso con contraseña, ssh-copy-id no va a poder entrar como juan. En ese caso copiá la clave que ya usás para root, desde la sesión de root: install -d -m 700 -o juan -g juan /home/juan/.ssh y después install -m 600 -o juan -g juan /root/.ssh/authorized_keys /home/juan/.ssh/. En AlmaLinux sumá restorecon -R /home/juan/.ssh.

Limitar el acceso de root por SSH

PermitRootLogin tiene dos valores útiles. Con prohibit-password, root entra solo con clave: los bots que prueban contraseñas contra root pierden el tiempo, y los scripts o respaldos que se conectan como root con clave siguen andando. Con no, root no entra por SSH de ninguna forma y todo pasa por juan y sudo.

El valor va en un archivo propio dentro de /etc/ssh/sshd_config.d/, con 00 adelante. SSH se queda con el primer valor que lee, y esos archivos se leen antes que el resto de sshd_config. En AlmaLinux, por ejemplo, suele haber un 01-permitrootlogin.conf o un 25-permitrootlogin.conf, según cómo se instaló, con PermitRootLogin yes: si pusieras tu valor en sshd_config, ese archivo lo pisaría.

echo "PermitRootLogin prohibit-password" > /etc/ssh/sshd_config.d/00-root.conf
sshd -t && systemctl restart ssh
  1. En AlmaLinux el servicio se llama sshd: sshd -t && systemctl restart sshd.
  2. Para pasar a no, repetí el primer comando con no en lugar de prohibit-password: el archivo se reescribe entero.
  3. Confirmá el valor que quedó con sshd -T | grep -i permitrootlogin. Con prohibit-password muestra without-password, que es el nombre viejo del mismo valor.

Preguntas frecuentes

¿sudo me pide la contraseña de root o la mía?

La tuya. Así nadie más necesita conocer la de root. Después de escribirla, sudo no te la vuelve a pedir por unos minutos.

¿Cómo le saco el permiso a un usuario?

Sacalo del grupo: gpasswd -d juan sudo en Debian y Ubuntu, o gpasswd -d juan wheel en AlmaLinux. Vale para las sesiones nuevas: si tiene una abierta, conserva el permiso hasta que salga.

¿Puedo hacer que sudo no pida contraseña?

Se puede, con una regla NOPASSWD en un archivo de /etc/sudoers.d/ editado con visudo, pero no conviene: quien consiga la sesión de juan tiene root sin otra barrera. Si un script lo necesita, habilitá solo ese comando.

¿Los servicios y las tareas de root siguen funcionando?

Sí. PermitRootLogin solo afecta a las conexiones SSH: root sigue existiendo, los servicios y el cron corren igual y en la consola de rescate podés entrar como root.

Seguí leyendo