探花大神

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: 鈥淓n 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 鈥揹e ah铆 el concepto 鈥渢odo 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 鈥損uede 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 鈥損or 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 (鈥渆nter鈥) 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 鈥淎brir鈥 (鈥淥pen鈥) 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 鈥渉ome鈥 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 鈥渃oncatenar鈥). Esto provee informaci贸n como el UID (Identificaci贸n de Usuario o 鈥淯ser ID鈥), GID (Identificaci贸n de Grupo o 鈥淕roup ID鈥) y la ruta al directorio 鈥渉ome鈥 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 鈥渉ome鈥 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 鈥搖na 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 鈥揺n este caso el usuario principal. 
  • El primer 鈥淎LL鈥 indica que se aplica la regla para todos los anfitriones. 
  • El segundo 鈥淎LL鈥 indica que el usuario principal puede ejecutar todos los comandos como todos los usuarios.
  • El tercer 鈥淎LL鈥 muestra que el usuario principal puede ejecutar todos los comandos como todos los usuarios de grupos.
  • Finalmente, el 煤ltimo 鈥淎LL鈥 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 

颁辞苍肠濒耻蝉颈贸苍

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 探花大神 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, , 探花大神 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 探花大神 Champion for Product, Security. 探花大神 and Microsoft certified, security analyst, a one-time tech journalist, and former IT director.

Contin煤a Aprendiendo con nuestro Newsletter