Módulo 7 - Administración de usuarios, grupos y permisos

Usuarios, grupos y permisos

  • Usuario: Individuo que interactúa con una computadora (experto o novato).

  • Usuario final: Utiliza programas de aplicación tras autenticarse con credenciales.

  • Home de usuario: Directorio personal del usuario donde guarda sus archivos (/home/usuario).

  • Autenticación: Proceso de verificar la identidad mediante credenciales, códigos o factores de autenticación (ej. usuario + contraseña).

  • Autorización: Servidor evalúa los permisos de un usuario para acceder a recursos o archivos tras autenticarse. Este proceso suele combinarse con la autenticación para garantizar la seguridad del sistema.

  • Grupos: Agrupación de usuarios que comparten privilegios, donde los permisos se asignan directamente al grupo y los usuarios heredan automáticamente dichos permisos.

Administración de usuarios

Comando useradd

ComandoDescripción
useradd [username]Crea un nuevo usuario sin un directorio en /home. Se genera un grupo con el mismo nombre del usuario. Ejemplo: useradd juan
useradd -d [directorio] [username]Crea usuario con directorio específico (debe existir previamente). Ejemplo: useradd -d /opt/juan juan
useradd -e [YYYY/MM/DD] [username]Crea usuario con fecha de expiración (verificar con chage -l [username]). Ejemplo: useradd -e 2023-01-30 juan
useradd -m [username]Crea usuario CON su directorio en /home/username. Ejemplo: useradd -m Juan
useradd -u [UID] [username]Crea usuario con UID específico (identificador único del sistema). Ejemplo: useradd -u 1001 juan

Explicación detallada:

  • -s /bin/bash: establece bash como shell por defecto
  • usermod -aG sudo: agrega el usuario al grupo sudo sin removerlo de otros grupos
  • visudo: editor seguro para modificar sudoers (valida sintaxis antes de guardar)

Comando usermod

ComandoDescripción
usermod -l [nuevo-usuario] [usuario-actual]Cambia el nombre de un usuario existente por uno nuevo. Después, necesitarás reasignar la carpeta en /home. Ejemplo: usermod -l pedro juan
usermod -L [nombre_de_usuario]Bloquea una cuenta de usuario, indicado por la adición de un "!" en el archivo /etc/shadow, donde se guardan las contraseñas encriptadas.
usermod -U [nuevo-UID] [nombre_de_usuario]Permite asignar un nuevo UID a un usuario. Ejemplo: usermod -U 1010 pedro
usermod -d [directorio] [nombre_de_usuario]Asigna o reasigna un directorio en /home a un usuario. Es importante que el directorio ya esté creado previamente. Ejemplo: usermod -d /home/pedro pedro
userdel [nombre_de_usuario]Elimina un usuario del sistema, pero conserva sus entradas y directorios en /home.
userdel -r [nombre_de_usuario]Elimina un usuario del sistema y todas sus entradas, incluyendo el directorio en /home, el spool de correo, etc.
adduser [nombre_de_usuario]Crea un nuevo usuario con su directorio en /home y establece una contraseña para él.
/etc/passwdAlmacena información sobre todos los usuarios actuales del sistema.
/etc/shadowContiene las contraseñas cifradas de los usuarios del sistema.
/etc/groupContiene información sobre todos los grupos del sistema.

Administración de grupos

El uso de grupos facilita la gestión de usuarios con permisos y políticas comunes. Algunos comandos básicos incluyen:

ComandoDescripción
groupadd [nombre_de_grupo]Crea un nuevo grupo en el sistema. Ejemplo: groupadd newgroup
groupdel [nombre_de_grupo]Elimina un grupo del sistema. Ejemplo: groupdel newgroup
groupmod -n [nuevo_nombre_de_grupo] [nombre_antiguo_de_grupo]Cambia el nombre de un grupo. Ejemplo: groupmod test newgroup
groupmod -g [nuevo_GID] [nombre_de_grupo]Asigna un nuevo GID a un grupo. Ejemplo: groupmod -g 1000 newgroup
adduser [username] [groupname]Permite agregar un usuario existente a un grupo existente. Ejemplo: adduser juan grupo (Debian)
usermod -aG [groupname] [username]Permite agregar un usuario existente a un grupo existente. (CentOS/AlmaLinux)
groups [username]Muestra los grupos a los que pertenece un usuario.
groupmems -g [groupname] -lEnumera los miembros de un grupo secundario.
id [username]Enumera los grupos principales a los que pertenece un usuario.
deluser [username] [groupname]Permite eliminar un usuario de un grupo. (Debian)
gpasswd -d [username] [groupname]Permite eliminar un usuario de un grupo. (CentOS/AlmaLinux)

Gestión de claves de usuario

La seguridad de la información se basa en la gestión eficiente de las contraseñas en Linux, utilizando el comando passwd. Aquí exploraremos los comandos esenciales para administrar las contraseñas de los usuarios.

ComandoDescripción
passwd [username]Nos permite configurar una contraseña para un usuario. Ejemplo: passwd juan
chage -l [username]Muestra información del estado de la contraseña de un usuario. Ejemplo: chage -l juan
passwd -d [username]Elimina la contraseña de un usuario. Permite hacer login sin usar el password. Ejemplo: passwd -d juan
passwd -e [username]Fuerza a un usuario a cambiar su contraseña en el próximo login. Ejemplo: passwd -e juan
passwd -n [días] [nombre_de_usuario]Establece la duración mínima, en días, para una contraseña. Después de este período, el usuario puede cambiar su contraseña. Ejemplo: passwd -n 10 juan
passwd -x [días] [nombre_de_usuario]Establece la duración máxima, en días, para una contraseña. Ejemplo: passwd -x 20 juan
passwd -w [días] [nombre_de_usuario]Establece el número de días de advertencia antes de que la contraseña expire. Ejemplo: passwd -w 5 juan

Permisos

En sistemas informáticos, las reglas de seguridad son esenciales, y los permisos de usuario definen las acciones y el acceso.

Permisos básicos con valores numéricos

  • Lectura - Read (r): 4

  • Escritura - Write (w): 2

  • Ejecución - Execute (x): 1

Tipos de entidades

  • Usuario (u): Propietario de archivos/directorios

  • Grupo (g): Conjunto de usuarios con características comunes

  • Otros (o): Usuarios restantes

¿Cómo se muestran los permisos con las entidades?

El comando ls -l muestra los permisos de archivos y directorios en la ruta actual. Por ejemplo: -rwx-rw-r, se interpreta así::

  • El primer bloque (rwx) corresponde al propietario del archivo o directorio.

  • El segundo bloque (rw) corresponde al grupo con permisos sobre el archivo o directorio.

  • El tercer bloque (r) corresponde al permiso que los demás usuarios (otros) tendrán sobre el archivo o directorio.

Tipos de ficheros

Tenemos los siguientes tipos de ficheros más importantes:

  • - Archivo normal

  • d Directorio

  • l Enlace simbólico

  • c Archivos especiales (dispositivos en /dev)

  • b Archivos de dispositivo de bloque (sda, sdb)

  • s Archivos de socket (ej: /run/udev/control)

Permisos

¿Cómo asignamos permisos a los usuarios sobre un archivo o directorio?

  • Para ello, utilizaremos el comando chmod (change mode).

  • Hay dos maneras de asignar permisos, de forma numérica y simbólica.

Forma numérica

ComandoDescripción
chmod 640 [file]Asignará permisos de lectura (4) y escritura (2) al propietario del archivo, al grupo solo se le otorgará permiso de lectura (4) y el resto de usuarios no tendrán ningún permiso sobre el archivo o directorio.
chmod 762 [file]Le asignará los permisos de read (4), write (2) y execute (1) al propietario, al grupo los permisos de read (4) y write (2), y el resto de usuarios solo tendrán permiso de write (2).
chmod 755 [directory]Le asigna los permisos de read (4), write (2) y execute (1) al propietario, read (4) y execute (1) al grupo y a los otros.
chmod -R 755 [directory]Con el parámetro -R aplicamos permisos de manera recursiva, extendiéndolos a todo el contenido existente dentro del directorio. Solo root o un usuario administrador puede ejecutarlo. No se recomienda por seguridad, a menos que sea necesario.

Nota:

  • Para acceder a un directorio se necesita como mínimo los permisos de read (4) y execute (1). Esto solo aplica para los usuarios estándares y no para el usuario root.

  • Para que el propietario de un archivo pueda editar su contenido, el usuario como mínimo deberá tener los permisos de lectura (4) y escritura (2) asignados.

Forma simbólica

ComandoDescripción
chmod u+rwx,g+rw,o+r [file]Permite asignar al propietario los permisos de lectura, escritura y ejecución, al grupo los de lectura y escritura, y a otros solo el de lectura. Se separa con coma cuando se aplican distintos permisos a las tres entidades sobre un mismo archivo simultáneamente.
chmod ugo+rwx [file]Le asigna al mismo tiempo, todos los permisos a las tres entidades.
chmod u-x,g-w,o-rCon el símbolo “-” removemos los permisos asignados.
chmod +x [file.sh]Le asigna el bit de ejecución a todas las entidades.

Unmask

Por defecto los permisos son:

  • Usuarios estándar:

    • Para directorios: rwx-rwx-rx (775 / umask 002)
    • Para archivos: rw-rw-r (664 / umask 113)
  • Usuario root:

    • Para directorios: rwx-rx-rx (755 / umask 022)
    • Para archivos: rw-r-r (644 / umask 133)
  • Notas:

    • Estos permisos podrían cambiar según las actualizaciones y distribución.

    • Los permisos numéricos máximos para archivos y directorios son 777.

    • Si restamos los permisos máximos (777) al valor numérico de unmask, obtendremos el valor numerico de los permisos reales asignados por defecto a archivos y directorios. Ejemplo 022 (unmask) - 777 (Perm. max.) = 755 Perm. actuales

ComandoDescripción
umaskMuestra el valor numérico de umask de los permisos por defecto, el cual es el valor inverso de los permisos numéricos que ya conocemos. Por ejemplo: umask 0022.
umask -SMostrará los permisos por defecto del sistema, pero en modo simbólico que ya conocemos. Ejemplo: u=rwx,g=rx,o=rx
umask u=[perm],g=[perm],o=[perm]Configura una serie de permisos por defecto en el sistema, donde se especificarán los permisos por defecto para el usuario (propietario), grupo y los otros. Ejemplo: umask u=rwx,g=rw,o=r

Comandos chown y chgrp

Chown, del inglés "change owner", permite cambiar el propietario de archivos o directorios en el sistema. Solo puede ser ejecutado por el usuario root o aquellos con permisos de superusuario por razones de seguridad.

ComandoDescripción
chown [new-owner] [file]Permite cambiar el usuario propietario de un archivo o directorio. Ejemplo: chown juan vla.txt
chgrp [new-grp-owner] [file]Permite cambiar el grupo propietario de un archivo. Ejemplo: chgrp juan vla.txt
chown [new-owner]:[new-grp-owner] [file]Es una combinación de los comandos anteriores. Permite cambiar el usuario propietario y grupo propietario de un archivo al mismo tiempo. Ejemplo: chown pedro:pedro vla.txt

Permiso Sticky Bit

Características

  • Se aplica SOLO a directorios.

  • Solo el propietario del directorio o root puede renombrar o borrar contenido.

  • Otros usuarios con rwx pueden leer y modificar, pero NO eliminar.

  • Se representa con "t" en lugar de "x" para los "otros".

  • Valor numérico: 1.

Aplicación

  • chmod 1775 [directorio]: Activa el permiso de sticky.

  • chmod +t [directorio]: Activa el permiso sticky.

  • chmod -t [directorio]: Desactiva el permiso sticky.

  • Los "otros" deben tener permisos rwx para notar la diferencia.

Permiso SUID

Características

  • SUID: Special User ID

  • Hereda permisos del propietario a otros usuarios.

  • Solo se aplica a archivos ejecutables.

  • El usuario adquiere los mismos permisos del creador al ejecutar.

  • Valor numérico: 4.

  • Bit "x" del propietario se reemplaza por "s" (si x está presente).

  • Se coloca "S" si el bit "x" no está presente.

  • Usar con cuidado por posibles problemas de seguridad.

Aplicación

  • chmod 4775 script.sh: Asigna SUID

  • Ejemplo real: /usr/bin/passwd tiene permiso SUID

Permiso SGID

Características

  • SGID: Special Group ID.

  • Similar a SUID pero a nivel de grupo.

  • Archivos ejecutables se ejecutan con privilegios del grupo.

  • Archivos creados dentro heredan el grupo del directorio principal.

  • Valor numérico: 2.

  • Bit "x" del grupo se reemplaza por "s" (si x está habilitado).

  • Se reemplaza por "S" si el bit "x" está deshabilitado.

Aplicación

  • chmod 2775 Documents/: Asigna SGID

  • Uso común: Carpetas compartidas donde múltiples usuarios colaboran

Permiso sudo

  • sudo su: "super user do" o "hacer como superusuario"

  • Permite a usuarios estándar ejecutar programas con privilegios de superusuario o administrador.

  • Por defecto, ningún usuario estándar puede usar sudo su.

  • Se requiere especificar explícitamente en el archivo /etc/sudoers.

Maneras de agregar usuario a sudoers

ComandoDescripción
adduser [user] sudoAgregar el usuario al grupo de sudo (Debian)
usermod -aG wheel [user]Agregar el usuario al grupo wheel (CentOS/AlmaLinux)
/etc/sudoersAgregar al usuario manualmente al archivo /etc/sudoers (Debian/CentOS/AlmaLinux). No se recomienda editar /etc/sudoers directamente; usar visudo evita errores de sintaxis que podrían bloquear sudo.

Archivo /etc/sudoers

Contenido del archivo

  • Variables.

  • Privilegios para usuarios específicos.

  • Privilegios para grupo admin (compatibilidad hasta Ubuntu 11.10).

  • Privilegios para grupo sudo.

Especificación de privilegios

  • ALL: Usuario puede ejecutar sudo desde cualquier host.

  • (ALL:ALL): Usuario puede iniciar sesión como cualquier usuario y grupo.

  • ALL: Usuario puede ejecutar cualquier comando con sudo.

Ejemplos de configuración

ComandoDescripción
root ALL(ALL:ALL) ALLEl usuario root puede iniciar sesión desde todos los hosts (ALL), como todos los usuarios y grupos (ALL:ALL), y ejecutar todos los comandos (ALL).
%admin ALL=(ALL) ALLLos usuarios del grupo admin pueden iniciar sesión desde todos los hosts (ALL), como todos los usuarios (ALL), y ejecutar todos los comandos (ALL).
%sudo ALL=(ALL:ALL) ALLEl usuario del grupo sudo puede iniciar sesión dede todos los hosts (ALL), como todos los usuarios y grupos (ALL:ALL), y ejecutar todos los comandos (ALL).
juan ALL=(ALL:ALL) NOPASSWD:/usr/bin/suPermite que el usuario juan pueda iniciar sesión desde todos los hosts, como todos los usuarios y grupos, ejecutar todos los comandos, y que no se le solicite la contraseña cuando digite sudo su.
juan ALL=/usr/bin/systemctl restart ssh.servicePermite que el usuario juan pueda únicamente ejecutar el comando systemctl restart ssh.service como sudo desde todos los hosts. Ejemplo: sudo systemctl restart ssh.service
%sysadmins ALL=/usr/bin/apt-get update, /usr/bin/systemctl restart apache2Permite que los usuarios contenidos en el grupo sysadmins puedan ejecutar únicamente los comandos apt-get update y systemctl restart apache2 desde cualquier host.
juan ALL=ALL, !/usr/bin/systemctl stop apache2, !/usr/bin/aptget upgradePermite que el usuario juan pueda ejecutar todos los comandos del sistema, excepto systemctl stop apache2 y apt-get upgrade desde todos los hosts. No funciona si el usuario es agregado al grupo sudo.
%sysadmins ALL=ALL, !/usr/bin/systemctl stop *Permite que los usuarios del grupo sysadmins puedan ejecutar cualquier comando desde todos los hosts, excepto detener la ejecución de cualquier servicio con systemctl stop.
Built with LogoFlowershow