Usuarios y permisos
Ubuntu es un sistema operativo multiusuario, y la gestión adecuada de usuarios y la configuración de permisos son las piedras angulares de la seguridad del sistema. Este artículo explica cómo crear y administrar usuarios, configurar grupos y comprender el sistema de permisos de archivos en Ubuntu 26.04.
Gestión de usuarios
Creando usuarios
Utilice useradd para crear un nuevo usuario:
# Create a user with a home directory
sudo useradd -m -s /bin/bash username
# Set the password
sudo passwd usernameSe prefiere el comando adduser, ya que es un script contenedor interactivo que lo guía a través de la configuración:
sudo adduser usernameModificar atributos de usuario
Utilice usermod para modificar los atributos de un usuario existente:
# Change the default shell
sudo usermod -s /bin/zsh username
# Change home directory (and move files)
sudo usermod -d /home/newdir -m username
# Lock a user account
sudo usermod -L username
# Unlock a user account
sudo usermod -U username
# Rename a user
sudo usermod -l newname oldnameEliminar usuarios
# Delete a user but keep the home directory
sudo userdel username
# Delete a user and their home directory
sudo userdel -r usernameVer información del usuario
# Check the current user
whoami
# View user ID and group information
id username
# List all users
cat /etc/passwd
# View currently logged-in users
who
wGestión de grupos
Crear y administrar grupos
# Create a new group
sudo groupadd developers
# Add a user to a group (preserving existing groups)
sudo usermod -aG developers username
# Add a user to multiple groups
sudo usermod -aG docker,sudo,developers username
# View the groups a user belongs to
groups username
# View all members of a group
getent group developers
# Delete a group
sudo groupdel developersGrupo primario versus grupos suplementarios
Cada usuario tiene un grupo primario y cero o más grupos suplementarios:
# Change a user's primary group
sudo usermod -g newgroup username
# Modify supplementary groups (-a means append; without -a, all supplementary groups are replaced)
sudo usermod -aG extragroup usernameconfiguración sudo
Ubuntu 26.04 envía sudo-rs, una reescritura de Rust, como reemplazo predeterminado para el tradicional C sudo. Es compatible con la gran mayoría de la sintaxis común de sudoers (reglas de usuario/grupo, NOPASSWD, ALL, /etc/sudoers.d/, etc.), por lo que el uso diario no cambia. Sin embargo, algunas directivas poco conocidas y complementos de terceros aún no se han implementado. Si un script dependiente de sudo falla o se comporta inesperadamente, primero ejecute sudo --version para confirmar la implementación actual y, si es necesario, instale temporalmente la versión tradicional con sudo apt install sudo para solucionar el problema, luego vuelva a sudo-rs una vez que se solucione el problema.
Uso básico
# Execute a command with root privileges
sudo apt update
# Switch to the root user
sudo -i
# Execute a command as another user
sudo -u www-data commandAgregar un usuario al grupo sudo
# In Ubuntu, members of the sudo group have administrator privileges
sudo usermod -aG sudo usernameEditando el archivo sudoers
Utilice siempre visudo para editar la configuración de sudoers, ya que realiza una verificación de sintaxis antes de guardar:
sudo visudoEjemplos de configuración comunes:
# Allow a user to execute all commands without a password
username ALL=(ALL) NOPASSWD: ALL
# Allow a user to execute only specific commands
username ALL=(ALL) /usr/bin/systemctl restart nginx, /usr/bin/systemctl status nginx
# Allow group members to execute apt without a password
%developers ALL=(ALL) NOPASSWD: /usr/bin/aptTambién puede crear archivos de configuración independientes en /etc/sudoers.d/:
sudo visudo -f /etc/sudoers.d/developersConceptos básicos de permisos de archivos
Comprender la notación de permisos
Los permisos de archivos de Linux constan de tres conjuntos: propietario, grupo y otros. Cada conjunto incluye permisos de lectura (r=4), escritura (w=2) y ejecución (x=1).
# View file permissions
ls -la
# Example output:
# -rwxr-xr-- 1 user group 4096 Jan 1 12:00 script.sh
# │├─┤├─┤├─┤
# │ │ │ └── Others: r-- (read only)
# │ │ └── Group: r-x (read and execute)
# │ └── Owner: rwx (read, write, execute)
# └── File type: - regular file, d directory, l symlinkchmod - Cambiar permisos
# Numeric mode
chmod 755 script.sh # rwxr-xr-x
chmod 644 config.txt # rw-r--r--
chmod 600 secret.key # rw-------
# Symbolic mode
chmod u+x script.sh # Add execute permission for the owner
chmod g+w file.txt # Add write permission for the group
chmod o-r file.txt # Remove read permission for others
chmod a+r file.txt # Add read permission for everyone
# Recursively change directory permissions
chmod -R 755 /var/www/htmlchown - Cambio de propietario
# Change the file owner
sudo chown newuser file.txt
# Change both owner and group
sudo chown newuser:newgroup file.txt
# Change only the group
sudo chgrp newgroup file.txt
# Recursively change directory ownership
sudo chown -R www-data:www-data /var/wwwPermisos especiales
# SUID - Execute as the file owner
chmod u+s executable
chmod 4755 executable
# SGID - Execute as the file group / new files in directory inherit the group
chmod g+s directory
chmod 2755 directory
# Sticky Bit - Only the file owner can delete files (commonly used on /tmp)
chmod +t directory
chmod 1777 directoryumask - Máscara de permiso predeterminada
# View current umask
umask
# Set umask (new file default = 0666 - umask, new directory = 0777 - umask)
umask 022 # New files 644, new directories 755
umask 077 # New files 600, new directories 700Para cambiar permanentemente la umask, edite ~/.bashrc o /etc/login.defs.
Permisos extendidos de ACL
Cuando los permisos estándar no son lo suficientemente flexibles, puede utilizar ACL (listas de control de acceso):
# Install ACL tools
sudo apt install acl
# Grant permissions to a specific user
setfacl -m u:username:rwx /path/to/file
# Grant permissions to a specific group
setfacl -m g:groupname:rx /path/to/dir
# View ACL settings
getfacl /path/to/file
# Recursively set ACL
setfacl -R -m u:username:rwx /path/to/dir
# Set default ACL (newly created files inherit automatically)
setfacl -d -m u:username:rwx /path/to/dir
# Remove ACL
setfacl -x u:username /path/to/fileMejores prácticas
- Principio de privilegio mínimo: Otorgue a los usuarios solo los permisos mínimos necesarios para realizar su trabajo.
- Evite usar root directamente: use
sudopara ejecutar comandos administrativos en lugar de permanecer conectado como root. - Utilice los grupos con prudencia: Administrar permisos a través de grupos es más eficiente que configurar cada usuario individualmente.
- Auditar periódicamente: revise periódicamente
/etc/passwdy/etc/grouppara limpiar los usuarios y grupos que ya no son necesarios. - Proteja archivos confidenciales: asegúrese de que archivos como las claves
/etc/shadowy SSH tengan los permisos correctos (600 o más estrictos).