Permisos en Linux: acceso administrativo, chmod y chown
Introducción
La gestión de permisos en Linux es uno de los pilares de la seguridad del sistema. Saber quién puede leer, escribir o ejecutar un archivo, y cómo elevar privilegios de forma controlada, es una competencia imprescindible para cualquier administrador de sistemas. En esta guía se cubren los comandos esenciales: su y sudo para el acceso administrativo, chmod para modificar permisos y chown para cambiar el propietario de un archivo.
Acceso administrativo en Linux
Muchos comandos de Linux trabajan con información confidencial —contraseñas, hardware del sistema— o realizan operaciones que solo deben estar disponibles para el administrador. Evitar que usuarios ordinarios ejecuten estos comandos ayuda a proteger el sistema. Iniciar sesión como usuario root proporciona acceso administrativo y permite la ejecución de comandos privilegiados.
Elevar privilegios con el comando su
El comando su permite actuar temporalmente como un usuario diferente creando un nuevo shell. Si no se especifica ninguna cuenta de usuario, su abre un nuevo shell como usuario root, proporcionando privilegios administrativos.
Se recomienda utilizar la opción de inicio de sesión, ya que configura completamente el nuevo shell con los ajustes del nuevo usuario. Esta opción puede especificarse de tres formas equivalentes:
Tras ejecutar el comando, el sistema solicitará la contraseña del usuario destino. Como medida de seguridad, la contraseña no será visible mientras se escribe. El símbolo del sistema cambia al iniciar sesión como root (#) y vuelve al original al salir con exit:
Password:
root@localhost:~# exit
logout sysadmin@localhost:~$
Verificación de privilegios con su: el comando sl
Para ilustrar la diferencia de permisos, el comando sl (steam locomotive) está configurado para requerir acceso administrativo. Si se ejecuta como usuario ordinario, aparece un error de permisos. Tras cambiar a root con su -, el mismo comando se ejecuta sin problemas:
-bash: /usr/bin/sl: Permission denied
sysadmin@localhost:~$ su –
Password:
root@localhost:~# sl
logout sysadmin@localhost:~$
Ejecutar comandos puntuales con sudo
El comando sudo permite ejecutar un comando puntual con privilegios de root sin abrir un nuevo shell ni cambiar de sesión. Se prefija antes del comando que se quiere ejecutar con privilegios administrativos. También puede usarse la opción -u para ejecutar el comando como un usuario diferente al root.
[sudo] password for sysadmin:
Una vez completado el comando, el símbolo del sistema no cambia: el usuario sigue bajo la cuenta sysadmin. Esto es una ventaja importante, ya que reduce el riesgo de ejecutar accidentalmente comandos como root. La solicitud de contraseña no vuelve a aparecer mientras el usuario continúe ejecutando comandos sudo a intervalos inferiores a cinco minutos.
Permisos de archivos en Linux
Los permisos determinan la forma en que los diferentes usuarios pueden interactuar con un archivo o directorio. Al listar un archivo con ls -l, la salida incluye información detallada sobre sus permisos. Por ejemplo, para el script hello.sh ubicado en el directorio Documents:
sysadmin@localhost:~/Documents$ ls -l hello.sh
-rw-r–r– 1 sysadmin sysadmin 647 Dec 20 2017 hello.sh
Tipo de archivo
El primer carácter indica el tipo de archivo. Un guion (-) indica un archivo ordinario; la letra d indica un directorio.
Los tres grupos de permisos
Los siguientes nueve caracteres se dividen en tres grupos de tres, uno por cada nivel de acceso:
- Propietario (usuario): el primer grupo se aplica al usuario que posee el archivo. Si la cuenta actual es la propietaria, se usan estos permisos y los demás no tienen efecto.
- Grupo: el segundo grupo se aplica si la cuenta actual es miembro del grupo propietario del archivo, pero no es el propietario directo.
- Otros: el tercer grupo se aplica a cualquier otro usuario que no sea el propietario ni miembro del grupo propietario.
Tipos de permisos: lectura, escritura y ejecución
Cada grupo puede contener tres tipos de permisos, cuyo significado varía según se trate de un archivo o un directorio:
Un caso práctico importante: en el conjunto de permisos -r--rw-rwx, el usuario propietario sysadmin termina teniendo menos acceso que los miembros del grupo o que el resto de usuarios. Esto se debe a que, una vez establecida la propiedad del usuario, solo se aplican los permisos del propietario, independientemente de los demás grupos.
Cambiar los permisos de un archivo con chmod
El comando chmod se utiliza para cambiar los permisos de un archivo o directorio. Solo el usuario root o el usuario propietario del archivo puede modificarlos. El nombre del comando proviene de change access mode (cambiar el modo de acceso).
Existen dos métodos: el simbólico (más intuitivo, permite cambiar permisos individuales) y el octal (numérico, requiere especificar los tres grupos completos cada vez). A continuación se documenta el método simbólico.
Sintaxis del método simbólico
El comando se construye en tres partes:
| Parte | Símbolo | Significado |
|---|---|---|
| Conjunto de permisos | u | Usuario — el propietario del archivo. |
g | Grupo — el grupo propietario del archivo. | |
o | Otros — cualquiera que no sea propietario ni miembro del grupo. | |
a | Todos — usuario, grupo y otros a la vez. | |
| Acción | + | Añadir el permiso indicado. |
= | Establecer exactamente el permiso indicado (elimina los demás). | |
- | Eliminar el permiso indicado. | |
| Permiso | r | Leer (read). |
w | Escribir (write). | |
x | Ejecutar (execute). |
Añadir permiso de ejecución al propietario
El archivo hello.sh es un script, pero inicialmente no tiene permiso de ejecución para ningún grupo. Al intentar ejecutarlo, el sistema devuelve un error:
-rw-r–r– 1 sysadmin sysadmin 647 Dec 20 2017 hello.sh
sysadmin@localhost:~/Documents$ ./hello.sh
-bash: ./hello.sh: Permission denied
Para añadir el permiso de ejecución (x) únicamente al usuario propietario (u), se usa chmod u+x:
sysadmin@localhost:~/Documents$ ls -l hello.sh
-rwxr–r– 1 sysadmin sysadmin 647 Dec 20 2017 hello.sh
La ausencia de mensaje de error confirma que el comando se ejecutó correctamente. La x aparece ahora en el primer grupo de permisos (-rwxr--r--). Al ejecutar el script con ./hello.sh, la combinación ./ indica que el comando debe ejecutarse desde el directorio actual:
Cambiar el propietario de un archivo con chown
El propietario inicial de un archivo es el usuario que lo crea. El comando chown permite cambiar el usuario o grupo propietario. Cambiar el usuario propietario requiere acceso administrativo; un usuario ordinario no puede ceder la propiedad de sus propios archivos a otro usuario. Sin embargo, el propietario sí puede cambiar el grupo propietario.
Verificar los propietarios actuales del directorio
Antes de realizar cambios, se verifica que todos los archivos del directorio Documents pertenecen al usuario sysadmin mediante ls -l:
total total 144
drwx—— 5 sysadmin sysadmin 4096 Dec 20 2017 School
drwx—— 2 sysadmin sysadmin 4096 Dec 20 2017 Work
-rw-r–r– 1 sysadmin sysadmin 39 Dec 20 2017 adjectives.txt
-rw-r–r– 1 sysadmin sysadmin 90 Dec 20 2017 alpha-first.txt
-rw-r–r– 1 sysadmin sysadmin 106 Dec 20 2017 alpha-second.txt
-rw-r–r– 1 sysadmin sysadmin 195 Dec 20 2017 alpha-third.txt
-rw-r–r– 1 sysadmin sysadmin 390 Dec 20 2017 alpha.txt
-rw-r–r– 1 sysadmin sysadmin 42 Dec 20 2017 animals.txt
-rw-r–r– 1 sysadmin sysadmin 14 Dec 20 2017 food.txt
-rwxr–r– 1 sysadmin sysadmin 647 Dec 20 2017 hello.sh
-rw-r–r– 1 sysadmin sysadmin 67 Dec 20 2017 hidden.txt
-rw-r–r– 1 sysadmin sysadmin 10 Dec 20 2017 letters.txt
-rw-r–r– 1 sysadmin sysadmin 83 Dec 20 2017 linux.txt
-rw-r–r– 1 sysadmin sysadmin 66540 Dec 20 2017 longfile.txt
-rw-r–r– 1 sysadmin sysadmin 235 Dec 20 2017 newhome.txt
-rw-r–r– 1 sysadmin sysadmin 10 Dec 20 2017 numbers.txt
-rw-r–r– 1 sysadmin sysadmin 77 Dec 20 2017 os.csv
-rw-r–r– 1 sysadmin sysadmin 59 Dec 20 2017 people.csv
-rw-r–r– 1 sysadmin sysadmin 110 Dec 20 2017 profile.txt
-rw-r–r– 1 sysadmin sysadmin 51 Dec 20 2017 red.txt
Cambiar el propietario de hello.sh a root
Para transferir la propiedad del script hello.sh al usuario root, se combina sudo con chown:
[sudo] password for sysadmin:
sysadmin@localhost:~/Documents$ ls -l hello.sh
-rwxr–r– 1 root sysadmin 647 Dec 20 2017 hello.sh
El campo de usuario propietario muestra ahora root, confirmando que el cambio se realizó correctamente.
Por qué hello.sh ya no se puede ejecutar como sysadmin
Al intentar ejecutar el script de nuevo como sysadmin, el sistema devuelve un error:
-bash: ./hello.sh: Permission denied
El motivo es que el permiso de ejecución (x) solo está asignado al usuario propietario, que ahora es root. Al aplicarse los permisos del propietario para sysadmin (que ya no es el propietario), el sistema deniega la ejecución. Para volver a ejecutarlo, es necesario usar sudo y así actuar como root.
Resumen de comandos
| Comando | Función | Ejemplo |
|---|---|---|
su - | Abre un shell completo como root. | su - |
sudo | Ejecuta un comando puntual con privilegios de root. | sudo chown root hello.sh |
ls -l | Lista archivos con sus permisos y propietarios. | ls -l hello.sh |
chmod | Modifica los permisos de un archivo o directorio. | chmod u+x hello.sh |
chown | Cambia el usuario o grupo propietario de un archivo. | sudo chown root hello.sh |
Conclusión
El sistema de permisos de Linux es preciso y consistente: cada archivo tiene un propietario, un grupo y un conjunto de permisos para el resto de usuarios. Los comandos su, sudo, chmod y chown son las herramientas fundamentales para gestionar quién puede hacer qué sobre cada recurso del sistema.
Entradas recientes
- De la web estática a la dinámica: diferencias entre HTML y PHP, motores de búsqueda y herramientas
- KDE vs GNOME: diferencias, historia, alternativas y tutorial para instalar nuevos entornos en tu distribución
- Cómo funciona una fuente de alimentación: desmontaje, análisis de componentes y comprobación con multímetro
- Redes locales en Linux: tarjetas de red, comandos de diagnóstico, Wireshark y conceptos clave
- Permisos en Linux: acceso administrativo, chmod y chown

