Gestionar usuarios, grupos y permisos es una de las tareas fundamentales para los administradores de Ubuntu Server. Tanto si configuras un entorno multiusuario como si proteges tu servidor, es esencial comprender cómo crear, modificar y gestionar cuentas de usuario, grupos y permisos. Esta guía ofrece un análisis en profundidad de la gestión de usuarios y permisos, con ejemplos reales, salidas de comandos y buenas prácticas.
Artículo anterior:
01. Introducción a Ubuntu Server – SysOSX: AI & Cloud
02. Cómo configurar tu primer servidor Ubuntu: guía para principiantes – SysOSX: AI & Cloud
03. Dominar la línea de comandos de Linux para Ubuntu Server
Introducción
Ubuntu Server es una plataforma potente para alojar aplicaciones, gestionar servicios y habilitar entornos multiusuario. Al dominar la gestión de usuarios y permisos, puedes proteger tu servidor, controlar el acceso de forma eficaz y evitar acciones no autorizadas. Esta guía cubrirá todo, desde la creación básica de cuentas de usuario hasta la configuración avanzada de permisos, con ejemplos detallados.
Crear y gestionar cuentas de usuario
Crear un usuario
Para crear una cuenta de usuario en Ubuntu Server, usa el comando adduser. Este comando es interactivo y te pedirá información adicional sobre el usuario.
Comando de ejemplo:
sudo adduser john
Salida de ejemplo:
Adding user `john' ...
Adding new group `john' (1001) ...
Adding new user `john' (1001) with group `john' ...
Creating home directory `/home/john' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for john
Enter the new value, or press ENTER for the default
Full Name []: John Doe
Room Number []: 101
Work Phone []: 555-1234
Home Phone []: 555-5678
Other []:
Is the information correct? [Y/n] Y
Esto crea un usuario llamado john con un directorio personal en /home/john y le asigna un ID de usuario (UID) único.
Modificar un usuario
El comando usermod te permite modificar cuentas de usuario. Por ejemplo, puedes cambiar el directorio personal, el shell o la pertenencia a grupos de un usuario.
Cambiar el directorio personal:
sudo usermod -d /home/new_john john
sudo mv /home/john /home/new_john
Bloquear o desbloquear una cuenta de usuario:
- Bloquea la cuenta:
sudo passwd -l john - Desbloquea la cuenta:
sudo passwd -u john
Salida de ejemplo (bloqueo de cuenta):
passwd: password expiry information changed.
Eliminar un usuario
Para eliminar un usuario, usa el comando deluser. También puedes eliminar su directorio personal y los archivos asociados.
Comando de ejemplo:
sudo deluser --remove-home john
Salida de ejemplo:
Looking for files to backup/remove ...
Removing files ...
Removing user `john' ...
Warning: group `john' has no more members.
Done.
Gestionar grupos
Los grupos son una forma de organizar a los usuarios y asignar permisos colectivos. Cada usuario puede pertenecer a varios grupos.
Crear y gestionar grupos
Para crear un grupo nuevo, usa el comando addgroup.
Comando de ejemplo:
sudo addgroup developers
Salida de ejemplo:
Adding group `developers' (GID 1002) ...
Done.
Para eliminar un grupo:
sudo delgroup developers
Añadir usuarios a grupos
Para añadir un usuario a un grupo, usa el comando usermod con la opción -aG.
Comando de ejemplo:
sudo usermod -aG developers john
Verificar la pertenencia a grupos:
groups john
Salida de ejemplo:
john : john developers
Esto muestra que john pertenece a los grupos john y developers.
Comprender los permisos de archivos y directorios
Los permisos de archivos de Linux son cruciales para controlar el acceso a archivos y directorios. Los permisos se definen para tres categorías: Propietario, Grupo, y Otros.
Tipos de permisos
Cada categoría tiene tres tipos de permisos:
- Lectura (r): permite ver el contenido de los archivos o listar el contenido de los directorios.
- Escritura (w): permite modificar el contenido de los archivos o crear/eliminar archivos en un directorio.
- Ejecución (x): permite ejecutar archivos ejecutables o acceder a directorios.
Ejemplo:
Usa ls -l para ver los permisos de archivo:
ls -l /home/john
Salida de ejemplo:
-rw-r--r-- 1 john john 4096 Mar 21 14:00 file.txt
rw-: el propietario (john) tiene permisos de lectura y escritura.r--: el grupo (john) tiene permisos de solo lectura.r--: otros tienen permisos de solo lectura.
Cambiar permisos
Usa el comando chmod para modificar los permisos.
Comandos de ejemplo:
- Concede permiso de ejecución al propietario:
chmod u+x file.txt - Quita el permiso de escritura para otros: chmod o-w file.txt
Usar valores numéricos:
Los permisos también se pueden establecer con valores numéricos:
chmod 755 file.txt: permisos completos para el propietario, lectura/ejecución para el grupo y otros.
Comprender los permisos numéricos (755, 777, 744)
Los permisos de Linux se pueden representar numéricamente, donde cada dígito corresponde a un nivel de permiso específico:
Estructura de los permisos numéricos:
Cada permiso numérico consta de tres dígitos:
- Primer dígito: permisos para el propietario.
- Segundo dígito: permisos para el grupo.
- Tercer dígito: permisos para otros.
Cada dígito se calcula según los siguientes valores:
4: lectura (r)2: escritura (w)1: ejecución (x)
La suma de estos valores determina el nivel de permiso para cada categoría.
Permisos numéricos comunes:
- 777: permisos completos para todos (lectura, escritura, ejecución).
- Propietario:
rwx - Grupo:
rwx - Otros:
rwx - Caso de uso: rara vez se usa por razones de seguridad, pero puede aplicarse a directorios temporales como
/tmp.
- Propietario:
- 755: permisos completos para el propietario, permisos de lectura y ejecución para el grupo y otros.
- Propietario:
rwx - Grupo:
r-x - Otros:
r-x - Caso de uso: habitual para archivos ejecutables o directorios.
- Propietario:
- 744: permisos completos para el propietario, solo lectura para el grupo y otros.
- Propietario:
rwx - Grupo:
r-- - Otros:
r-- - Caso de uso: habitual para archivos privados.
- Propietario:
Ejemplo:
Para establecer los permisos de un script en 755:
chmod 755 script.sh
Salida de ejemplo:
-rwxr-xr-x 1 john john 4096 Mar 21 14:00 script.sh
Gestión de la propiedad
Cambia la propiedad con el comando chown.
Comando de ejemplo:
sudo chown john:developers file.txt
Esto establece el propietario en john y el grupo en developers.
Salida de ejemplo:
-rw-r--r-- 1 john developers 4096 Mar 21 14:00 file.txt
Usar Sudo para la escalada de privilegios
El comando sudo permite a los usuarios ejecutar comandos con privilegios elevados. Para conceder acceso sudo a un usuario, añádelo al grupo sudo.
Comando de ejemplo:
sudo usermod -aG sudo john
Verificar el acceso Sudo:
sudo -l -U john
Salida de ejemplo:
User john may run the following commands on this host:
(ALL : ALL) ALL
Buenas prácticas para proteger las cuentas de usuario
- Aplica políticas de contraseñas seguras:
Usapasswdpara establecer la caducidad de la contraseña:sudo passwd -e john - Limita el acceso Sudo:
Concede privilegiossudosolo a usuarios de confianza. - Desactiva el inicio de sesión como root:
Edita el archivo de configuración de SSH:
sudo nano /etc/ssh/sshd_config
Establece:
PermitRootLogin no
- Usa claves SSH para la autenticación:
Sustituye el inicio de sesión con contraseña por claves SSH. - Supervisa la actividad de los usuarios:
Usalastowhopara rastrear la actividad de inicio de sesión:
last
Explicación de la salida
uadmin pts/1 192.168.255.48 Fri Mar 21 13:55 still logged in
uadmin pts/0 192.168.255.48 Fri Mar 21 13:54 still logged in
uadmin pts/1 192.168.255.48 Fri Mar 21 01:49 - 08:19 (06:29)
uadmin pts/0 192.168.255.48 Fri Mar 21 00:53 - 08:19 (07:26)
reboot system boot 6.8.0-1021-azure Fri Mar 21 00:22 still running
Análisis línea por línea
Inicio de sesión de usuario: uadmin pts/1 192.168.255.48 Fri Mar 21 13:55 still logged in
uadmin: el nombre de usuario del usuario que inició sesión.pts/1: la sesión de pseudoterminal usada para el inicio de sesión. Los pseudoterminales (pts) son terminales virtuales, que normalmente se crean cuando los usuarios inician sesión mediante SSH.192.168.255.48: la dirección IP de la máquina remota desde la que se conectó el usuario.Fri Mar 21 13:55: la fecha y la hora en que el usuario inició sesión.still logged in: indica que el usuario está actualmente conectado y activo.
| Columna | Significado |
|---|---|
| Nombre de usuario | Nombre del usuario o evento (uadmin, reboot). |
| Terminal | Sesión de pseudoterminal (pts/X) o evento del sistema (system boot). |
| Host remoto/IP | Dirección IP o nombre de host de la máquina remota que inicia la conexión. |
| Fecha/hora de inicio de sesión | Fecha y hora en que comenzó el inicio de sesión o el evento. |
| Hora de cierre de sesión | Fecha y hora en que terminó la sesión (si corresponde). |
| Duración | Tiempo total que duró la sesión (si corresponde). |
| Estado de la sesión | Estado actual de la sesión (still logged in, still running). |
Comandos adicionales para obtener información
- Mostrar los usuarios conectados actualmente:
who - Salida de ejemplo:
uadmin pts/1 2023-03-21 13:55 (192.168.255.48)
uadmin pts/0 2023-03-21 13:54 (192.168.255.48)
- Comprobar el tiempo de actividad del sistema:
uptime - Salida de ejemplo:
14:15:32 up 13:53, 2 users, load average: 0.10, 0.12, 0.15
Conclusión
Gestionar usuarios, grupos y permisos es una habilidad fundamental para los administradores de Ubuntu Server. Al dominar estas tareas, puedes proteger tu servidor, evitar el acceso no autorizado y mejorar la eficiencia operativa.
Próximo tutorial: Conceptos básicos de redes para Ubuntu Server
En el próximo tutorial, cubriremos los conceptos básicos de redes para Ubuntu Server, incluida la configuración de interfaces de red, la asignación de IP estáticas, la resolución de problemas de conectividad de red y el uso de netplan de Ubuntu para tareas de red. Mantente atento para obtener información práctica que optimice la configuración de red de tu servidor.
7 thoughts on “04. Managing Users and Permissions on Ubuntu Server: A Comprehensive Guide”