Cómo Crear un Nuevo Usuario Sudo y Gestionar el Acceso Sudo en Ubuntu 22.04

Escrito por David Worthington en February 17, 2023

Comparte este artículo

Quizá ya haya escuchado el concepto: “En Linux, todo es un archivo”. Esto suena en cierto modo desconcertante debido a que el sistema Linux abarca varias entidades y no solo archivos. Tenemos directorios, vínculos simbólicos, procesos, tubos y conectores, solo por mencionar algunos. La simplificación excesiva simplemente provee una perspectiva de alto nivel de la arquitectura Linux. Implica que en un sistema Linux, cada entidad se considera un archivo. Estas entidades se representan por un descriptor de archivo el cual es un identificador único para un archivo u otros recursos tales como directorios, enchufes de redes, o procesos –de ahí el concepto “todo es un archivo”.

Esta simplificación excesiva nos lleva posteriormente al concepto de archivos de permisos y directorios. De manera predeterminada, cada archivo en Linux tiene sus propios permisos y directorios. Estos permisos determinan los derechos de acceso y beneficios con los cuales cuentan los usuarios en los archivos. Si usted posee un archivo o un directorio, puede hacer casi todo lo que usted desee –puede acceder a él, editarlo, renombrarlo e incluso eliminarlo.

Pero no todos los usuarios son iguales. Un usuario único en el sistema Linux es el usuario principal. El usuario principal es un usuario administrador con los más altos beneficios y no está limitado por ninguna restricción de permiso. El usuario puede hacer prácticamente todo. Esto incluye instalar y desinstalar programas, acceder y modificar los archivos del sistema, y personalizar el sistema. El usuario principal puede incluso romper el sistema, ya sea intencional o accidentalmente –por lo cual no se recomienda ingresar y operar el sistema como el usuario principal. Solamente basta con utilizar un comando erróneo para dañar el sistema. Por esta razón, siempre se recomienda operar con los comandos de usuario sudo.

¿Qué es un usuario sudo?

Debido a que no se incentiva en gran manera el administrar el sistema Linux bajo el usuario principal, un administrador de sistema necesita permitir a un usuario regular algún nivel de privilegio para ejecutar algunos comandos base (o todos). 

Sudo es un programa que permite regular los permisos de los usuarios para operar comandos con privilegios base o como algún otro usuario. Un usuario sudo es, por consiguiente, un usuario Linux regular con privilegios elevados para operar comandos como un usuario principal o algún otro usuario regular, que predeterminadamente es el usuario principal. Además, puede configurar sudo para restringir un usuario sudo a un puñado de comandos o permitirles operar todos los comandos como el usuario principal. Cubriremos estos escenarios con mayor profundidad más tarde en esta guía.

Primeramente, lo llevaremos a través de la creación de un usuario de sudo en Ubuntu 20.04. 

Como crear un usuario sudo 

Para crear un usuario sudo en Ubuntu 20.04, siga los pasos que se enumeran a continuación:

Paso 1: Inicie sesión en su servidor

Primero, inicie sesión en su servidor de la cloud como usuario principal empleando la sintaxis que se muestra:

$ ssh root@server-ip

Otorgue la contraseña principal cuando se le solicite y presione INTRO (“enter”) para obtener acceso al servidor. Si está utilizando Putty, simplemente ingrese la dirección IP del servidor remoto y de click en el botón “Abrir” (“Open”) y presione INTRO. 

How to Create a New Sudo User & Manage Sudo Access on Ubuntu 20.04

Paso 2: Crear un nuevo usuario

Una vez ingresado, cree un nuevo usuario regular empleando el comando adduser. Aquí, jumpcloud es nuestro nuevo usuario.

# adduser jumpcloud

El comando realiza un par de cosas. Primero, crea un nuevo usuario y un grupo primario llamado Jumpcloud, y posteriormente agrega el usuario al grupo. Después, se crea un directorio “home” para el usuario y los archivos de configuración se copian ahí. Posteriormente, será direccionado para ingresar la contraseña del nuevo usuario. Asegúrese de proporcionar una contraseña segura y confírmela.

Una vez establecida la contraseña de usuario, se le va a requerir proporcionar información adicional. Complétela donde sea necesario o deje en blanco presionando INTRO si la información no aplica.

How to Create a New Sudo User & Manage Sudo Access on Ubuntu 20.04

Para confirmar que se haya agregado el nuevo usuario, observe el archivo /etc/passwd empleando el comando cat (de “concatenar”). Esto provee información como el UID (Identificación de Usuario o “User ID”), GID (Identificación de Grupo o “Group ID”) y la ruta al directorio “home” o casa.

# cat /etc/passwd | grep jumpcloud

De igual manera, puede recuperar los detalles del usuario utilizando el comando id.

# id jumpcloud

How to Create a New Sudo User & Manage Sudo Access on Ubuntu 20.04

Paso 3: Agregar el usuario nuevo al grupo sudo

Un grupo sudo se trata de un grupo de superusuarios los cuales tienen acceso privilegiado a los comandos principales. Teniendo eso en mente, proceda y agregue el nuevo usuario al grupo sudo utilizando el comando usermod tal y como se muestra a continuación:

# usermod -aG sudo jumpcloud

Para verificar que se ha agregado el usuario al grupo sudo, utilice el comando id. 

# id jumpcloud

Del resultado, podemos darnos cuenta que el usuario ahora pertenece a dos grupos: jumpcloud y sudo. Alternativamente, puede también correr el comando groups para solamente mostrar los grupos a los cuales pertenece el usuario. 

# groups jumpcloud

How to Create a New Sudo User & Manage Sudo Access on Ubuntu 20.04

¡Perfecto! El nuevo usuario ahora se convierte en usuario sudo y cuenta con acceso ilimitado a los privilegios principales.

Paso 4: Ponga a prueba sudo

Una vez ya establecido el usuario sudo, vamos a proceder y a probar el usuario. Así que cambie al usuario sudo utilizando el comando su.

# su –  jumpcloud

El comando lo sitúa en el directorio “home” del usuario. La sintaxis para el usuario sudo se muestra a continuación:

$ sudo comando-a-ejecutarse

Como ejemplo, vamos a actualizar las listas de paquetes de nuestro sistema. Así que, invoque sudo seguido por el comando a ejecutar.

$ sudo apt update

Cuando se indique, ingrese la contraseña del usuario y presione INTRO. El comando se ejecutará sin ningún problema –una confirmación de que el usuario se ha agregado exitosamente al grupo sudo y puede ahora ejecutarse con las funciones elevadas del sistema.

How to Create a New Sudo User & Manage Sudo Access on Ubuntu 20.04

Entendiendo el archivo sudoers

El usuario sudo que hemos creado asume todos los derechos y beneficios del usuario principal y puede ejecutar virtualmente cualquier comando. Sin embargo, la buena práctica recomienda que se utilice el principio del beneficio menor. Esto es un concepto de seguridad en el cual solo se asigna al usuario acceso mínimo a los derechos y permisos para ejecutar su función. Por consiguiente, como administrador de sistema, solo le debería brindar los permisos necesarios al usuario sudo para permitirle emplear sus funciones.

El archivo sudo /etc/sudoers se trata de un archivo que detalla qué usuarios pueden correr cuáles comandos del sistema. Incluye un conjunto de reglas que controlan que usuarios o grupos pueden ejecutar las actividades más avanzadas. Para permitir o restringir los beneficios principales a los usuarios, necesita editar este archivo.  

Nunca debe editar el archivo de usuarios sudoer empleando un editor normal de texto como lo es nano o vim ya que esto puede resultar en un archivo dañado lo cual puede bloquear potencialmente a cualquiera incluyendo al administrador. Como tal, el archivo de usuarios sudoer debe accederse ejecutando el comando visudo como se muestra a continuación:

$ visudo

Esto abre el archivo /etc/sudoers empleando el editor nano como se muestra debajo. Todas las líneas iniciando con un símbolo hash –#– son comentarios y no tienen ningún efecto o impacto en el archivo.

How to Create a New Sudo User & Manage Sudo Access on Ubuntu 20.04

Predeterminadamente, el archivo cuenta con 6 líneas sin comentar. Vayamos a la línea de beneficio del usuario la cual se encuentra en la cuarta línea.

root ALL=(ALL:ALL) ALL 

  • El primer parámetro indica el nombre de usuario –en este caso el usuario principal. 
  • El primer “ALL” indica que se aplica la regla para todos los anfitriones. 
  • El segundo “ALL” indica que el usuario principal puede ejecutar todos los comandos como todos los usuarios.
  • El tercer “ALL” muestra que el usuario principal puede ejecutar todos los comandos como todos los usuarios de grupos.
  • Finalmente, el último “ALL” indica que las reglas se aplican a todos los comandos.

Las siguientes dos líneas definen las regulaciones sudo para los grupos. El símbolo “%” define un grupo. Aquí, tenemos dos grupos que se han definido: administrador y grupos sudo.

La segunda línea indica que el administrador de grupo puede operar todos los comandos como cualquier usuario.

%admin ALL=(ALL) ALL 

La tercera línea indica que el usuario sudo puede operar cualquier comando como cualquier usuario, así como cualquier grupo.

%sudo ALL=(ALL:ALL) ALL 

No se recomienda editar directamente el directorio sudoer. En vez, es preferible emplear las regulaciones asociadas a sudo en el directorio /etc/sudoers.d. esto facilita a los administradores del sistema el llevar un registro de qué reglas aplicar a las cuentas de usuarios. Los archivos ubicados en este directorio seguirán las mismas reglas de los archivos sudoers.

Como restringir usuarios sudo de ejecutar algunos comandos

Como se mencionó anteriormente, necesitará limitar a usuarios sudo de ejecutar algunos comandos del sistema. Para llevar esto a cabo, necesita crear una regla sudo en el directorio /etc/sudoers.d.

Como muestra, crearemos una regla llamada jumpcloud la cual restringe al usuario sudo de mejorar los paquetes a la última versión.

# vim /etc/sudoers.d/jumpcloud 

A continuación, copie y pegue la línea que se muestra y guarde los cambios.

jumpcloud ALL=(ALL) !/usr/bin/apt upgrade

La regla indica que el usuario jumpcloud puede ejecutar todos los comandos como el usuario principal con la excepción del apt upgrade. Tenga en cuenta que necesitará otorgar la ruta completa del comando, con un signo de exclamación al inicio.

Para encontrar la ruta completa del comando, utilice la sintaxis del comando which como se demuestra. 

$ which command

Cuando el usuario intenta mejorar los paquetes, se muestra un error en la pantalla indicando que no se le permite al usuario realizar dicha acción. 

How to restrict sudo users from executing certain commands

En donde se involucran múltiples comandos, lístelos en una sola línea separados por comas. En el ejemplo abajo, se ha limitado al usuario sudo de apagar y reiniciar el sistema. Concretamente, existen varias maneras para cerrar o reiniciar un sistema Linux y los comandos asociados se han enlistado en una sola línea abajo.

jumpcloud ALL=(ALL) !/usr/sbin/shutdown,!/usr/sbin/poweroff, !/usr/sbin/reboot,!/usr/sbin/init,!/usr/sbin/halt

Cualquier intento de apagar o reiniciar el sistema por el usuario se impedirá por el sistema.

How to restrict sudo users from executing certain commands

How to restrict sudo users from executing certain commands

Cómo operar un comando sudo específico sin contraseña 

Algunas veces, necesitará operar algunos comandos sin que le pida una contraseña. Esto resulta particularmente útil si se encuentra operando un script que contenga un comando sudo.

Para lograr esto, utilice la directiva NOPASSWD seguido de la ruta completa para el comando. En el ejemplo a continuación, el usuario puede actualizar las listas de paquetes sin que se le direccione a una contraseña. 

jumpcloud ALL=(ALL) NOPASSWD: /usr/bin/apt update

How to run specific sudo commands without a password 

Conclusión

Administrar los beneficios de usuarios por lo regular es una de las funciones más importantes que todo administrador de sistema debe tomar. Los beneficios sudo solo se permite a usuarios confiables tales como equipos de apoyo u operación. 

Se recomienda siempre restringir a los usuarios sudo a una parte de comandos de sistema. Para lograrlo, otórgueles los beneficios básicos que necesiten para llevar a cabo sus funciones. El acceso ilimitado a sudo puede ser perjudicial debido a que esto puede llevar al usuario sudo el ejecutar algunas operaciones no autorizadas las cuales pueden causar estragos al sistema. O peor, el acceso ilimitado a los beneficios sudo puede hacer mucho más fácil la tarea de los a actores maliciosos para tomar control del sistema.

Dicho esto, el administrar el proceso para asignar permisos específicos a usuarios puede requerir invertir demasiado tiempo y rápidamente abrumar sus prioridades, en especial si se encuentra en un entorno y un equipo en crecimiento. Las capacidades de gestión de JumpCloud de los dispositivos Linux pueden facilitar el administrar el acceso sudo a través de flotas enteras por medio de configuraciones de seguridad de usuario y permisos. Para ver cómo funciona esto, junto con un número de características de seguridad de otros dispositivos y administración, suscríbase hoy de manera gratuita, JumpCloud es gratis para usar hasta 10 usuarios y 10 dispositivos: también otorgamos asistencia virtual las 24 horas los 7 días dentro los primeros 10 días de uso.

David Worthington

I'm the JumpCloud Champion for Product, Security. JumpCloud and Microsoft certified, security analyst, a one-time tech journalist, and former IT director.

Continúa Aprendiendo con nuestro Newsletter