Cómo Verificar Permisos de Archivos en Linux: Una Guía Completa
Linux impulsa la mayoría de los servidores del mundo — desde entornos de VPS Hosting hasta Servidores Dedicados de nivel empresarial — y por una buena razón. Es rápido, estable y está construido con la seguridad en su núcleo. Uno de los pilares más fundamentales de esa seguridad es el sistema de permisos de archivos: un mecanismo preciso y elegante que controla exactamente quién puede leer, modificar o ejecutar cualquier archivo o directorio en el sistema.
Ya sea que seas un desarrollador implementando una aplicación web, un administrador de sistemas endureciendo un servidor, o un principiante aprendiendo la línea de comandos, entender cómo verificar e interpretar permisos de archivos en Linux es una habilidad innegociable. Esta guía cubre todo lo que necesitas saber — desde los conceptos básicos del modelo de permisos hasta bits especiales avanzados — con comandos prácticos y ejemplos del mundo real.
¿Cuáles son los permisos de archivos de Linux?
Cada archivo y directorio en Linux tiene un conjunto de permisos adjuntos. Estos permisos definen qué acciones están permitidas y por quién. Hay tres tipos de permisos principales:
| Permiso | Símbolo | Lo que hace en un archivo | Lo que hace en un directorio |
|---|---|---|---|
| Lectura | r | Ver el contenido del archivo | Listar los nombres de archivos dentro |
| Escritura | w | Modificar o eliminar el archivo | Crear o eliminar archivos dentro |
| Ejecución | x | Ejecutar el archivo como un programa | Entrar (navegar dentro) en el directorio |
Estos tres permisos se aplican independientemente a tres categorías de usuarios distintas:
- Propietario (usuario) — El usuario que posee el archivo, típicamente su creador.
- Grupo — Cualquier usuario que pertenezca al grupo asignado del archivo.
- Otros — Todos los demás en el sistema.
Esta matriz de permisos de tres por tres da a los administradores de Linux un control granular y poderoso sobre el acceso a cada recurso del sistema.
Cómo Verificar Permisos de Archivo: El Comando ls -l
El método más rápido y comúnmente utilizado para verificar permisos de archivo es el comando ls -l (formato de listado largo).
ls -l file.txtEjemplo de salida:
-rw-r--r-- 1 alice developers 1024 Aug 16 12:30 file.txtDesglosemos cada componente de esta salida:
- rw- r-- r-- 1 alice developers 1024 Aug 16 12:30 file.txt
│ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ └─ Filename
│ │ │ │ │ │ │ │ └─ Last modified
│ │ │ │ │ │ │ └─ File size (bytes)
│ │ │ │ │ │ └─ Group name
│ │ │ │ │ └─ Owner name
│ │ │ │ └─ Number of hard links
│ │ │ └─ Others' permissions
│ │ └─ Group's permissions
│ └─ Owner's permissions
└─ File type (- = regular file, d = directory, l = symlink)Entonces -rw-r--r-- nos dice:
- Propietario (
alice): Lectura + Escritura (rw-) - Grupo (
developers): Solo lectura (r--) - Otros: Solo lectura (
r--)
Verificar Permisos para Múltiples Archivos
Para ver permisos de todos los archivos en un directorio a la vez:
ls -la /var/www/htmlLa bandera -a incluye archivos ocultos (aquellos que comienzan con un punto). Esto es especialmente útil al auditar directorios del servidor web en un entorno de Alojamiento Web Compartido o VPS.
Obtener información detallada de permisos con stat
Para un desglose más exhaustivo — incluyendo representaciones simbólicas y numéricas — usa el comando stat:
stat file.txtEjemplo de salida:
File: file.txt
Size: 1024 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 131073 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ alice) Gid: ( 1000/developers)
Access: 2024-08-16 12:30:00.000000000 +0000
Modify: 2024-08-16 12:30:00.000000000 +0000
Change: 2024-08-16 12:30:00.000000000 +0000La línea clave es:
Access: (0644/-rw-r--r--) Uid: ( 1000/ alice) Gid: ( 1000/developers)Esto te proporciona:
- Notación numérica (octal):
0644 - Notación simbólica:
-rw-r--r-- - ID de usuario (UID) e ID de grupo (GID) con sus nombres legibles
El comando stat es invaluable cuando se solucionan errores de permisos en servidores de producción, ya que proporciona todo el contexto que necesitas en una única salida.
Entendiendo la Notación de Permisos Numéricos (Octal)
Los permisos de Linux se pueden expresar como números, que es el formato utilizado por comandos como chmod. Cada tipo de permiso tiene asignado un valor:
| Permiso | Valor Numérico |
|---|---|
Lectura (r) | 4 |
Escritura (w) | 2 |
Ejecución (x) | 1 |
Sin permiso (-) | 0 |
Calcula el valor de permiso para cada categoría de usuario sumando los valores:
| Combinación | Cálculo | Valor Numérico |
|---|---|---|
rwx | 4 + 2 + 1 | 7 |
rw- | 4 + 2 + 0 | 6 |
r-x | 4 + 0 + 1 | 5 |
r-- | 4 + 0 + 0 | 4 |
--- | 0 + 0 + 0 | 0 |
Un número octal de tres dígitos representa el conjunto de permisos completo:
0644 → Owner: 6 (rw-) | Group: 4 (r--) | Others: 4 (r--)
0755 → Owner: 7 (rwx) | Group: 5 (r-x) | Others: 5 (r-x)
0700 → Owner: 7 (rwx) | Group: 0 (---) | Others: 0 (---)Verificando Permisos en Directorios
Los directorios utilizan el mismo modelo de permisos, pero el significado de cada bit es ligeramente diferente. Usa ls -ld (nota la bandera -d) para inspeccionar un directorio en sí mismo en lugar de su contenido:
ls -ld myfolderEjemplo de salida:
drwxr-x--- 2 alice developers 4096 Aug 16 12:30 myfolderEl d inicial confirma que esto es un directorio. Los permisos se desglosan como:
- Propietario (
alice):rwx— Puede listar, crear/eliminar archivos e ingresar al directorio - Grupo (
developers):r-x— Puede listar archivos e ingresar, pero no puede crear ni eliminar - Otros:
---— Sin acceso en absoluto
> Importante: El bit de ejecución (x) en un directorio significa la capacidad de ingresar a él (es decir, usar cd). Sin x, un usuario no puede navegar al directorio incluso si tiene permiso de lectura. Esta es una fuente común de confusión para principiantes.
Bits de Permiso Especial: setuid, setgid y Sticky Bit
Más allá de los nueve bits de permiso estándar, Linux admite tres bits de permiso especial que proporcionan control de acceso avanzado:
1. setuid (s en el bit de ejecución del propietario)
Cuando se establece en un archivo ejecutable, el programa se ejecuta con los privilegios del propietario del archivo en lugar de los del usuario que lo llama. Así es como comandos como passwd permiten que usuarios regulares modifiquen /etc/shadow (que es propiedad de root).
ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 54256 Mar 27 2023 /usr/bin/passwdEl s en la posición de ejecución del propietario indica setuid.
2. setgid (s en el bit de ejecución del grupo)
En un archivo, el programa se ejecuta con los privilegios del grupo. En un directorio, los archivos nuevos creados dentro heredan automáticamente el grupo del directorio — útil para carpetas de proyectos compartidos.
ls -ld /shared/project
drwxrwsr-x 2 alice developers 4096 Aug 16 12:30 /shared/project3. Sticky Bit (t en el bit de ejecución de otros)
Cuando se establece en un directorio, solo el propietario del archivo (o root) puede eliminar o renombrar archivos dentro de él, incluso si otros tienen permiso de escritura. Esta es la configuración estándar para /tmp:
ls -ld /tmp
drwxrwxrwt 12 root root 4096 Aug 16 12:30 /tmpEl t al final señala que el sticky bit está activo.
Representación numérica de bits especiales:
| Bit Especial | Valor Numérico |
|---|---|
| setuid | 4000 |
| setgid | 2000 |
| Sticky bit | 1000 |
Entonces drwxrwxrwt = 1777 (1000 + 777).
Tabla de Referencia Completa de Permisos
| Simbólico | Numérico | Significado en un Archivo | Significado en un Directorio |
|---|---|---|---|
--- | 0 | Sin acceso | Sin acceso |
--x | 1 | Solo ejecutar | Solo entrar |
-w- | 2 | Solo escribir | Modificar contenidos (con x) |
-wx | 3 | Escribir + Ejecutar | Entrar y modificar |
r-- | 4 | Solo lectura | Listar nombres (requiere x para ser útil) |
r-x | 5 | Lectura + Ejecutar | Listar y entrar |
rw- | 6 | Lectura + Escritura | Listar y modificar (sin entrar) |
rwx | 7 | Acceso completo | Control total |
Ejemplos de Permisos en el Mundo Real
Aquí están los patrones de permisos más comunes que encontrarás en la práctica:
-rw-r--r-- (0644) — Archivo Estándar
-rw-r--r-- 1 alice developers 1024 Aug 16 12:30 config.txtEl propietario puede leer y escribir. El grupo y otros solo pueden leer. Típico para archivos de configuración y contenido web.
-rwxr-xr-x (0755) — Script Ejecutable o Binario
-rwxr-xr-x 1 alice developers 4096 Aug 16 12:30 deploy.shEl propietario tiene acceso completo. Todos los demás pueden leer y ejecutar pero no pueden modificar. Estándar para scripts de shell, binarios del servidor web y ejecutables públicos.
-rw------- (0600) — Archivo Privado
-rw------- 1 alice alice 1679 Aug 16 12:30 id_rsaSolo el propietario puede leer o escribir. Sin acceso para nadie más. Requerido para claves privadas SSH — SSH se negará a usar un archivo de clave con permisos más amplios.
drwxr-xr-x (0755) — Directorio Público Estándar
drwxr-xr-x 5 alice developers 4096 Aug 16 12:30 public_htmlComún para directorios raíz web. El propietario tiene control total; otros pueden explorar e ingresar.
drwx------ (0700) — Directorio Privado
drwx------ 3 alice alice 4096 Aug 16 12:30 .sshCompletamente privado. Solo el propietario puede acceder. Requerido para el directorio ~/.ssh.
drwxrwxrwt (1777) — Escribible por Todos con Sticky Bit
drwxrwxrwt 12 root root 4096 Aug 16 12:30 /tmpTodos pueden crear archivos, pero solo el propietario de cada archivo puede eliminar sus propios archivos.
Consejos Prácticos para Entornos de Servidor
Si administras un servidor Linux — ya sea un VPS ejecutando una aplicación web, un servidor de correo asegurado con un Certificado SSL, o una máquina alojando múltiples dominios registrados a través de Registro de Dominios — aquí hay algunas mejores prácticas esenciales de permisos:
- Nunca establezca 777 en archivos o directorios a menos que tenga una razón muy específica y temporal. Los archivos escribibles por todos son un riesgo de seguridad importante.
- Los archivos del servidor web (p. ej., bajo
/var/www/) típicamente deben ser644para archivos y755para directorios, propiedad de su usuario de aplicación. - Las claves SSH deben ser
600para claves privadas y644para claves públicas. SSH lo aplica estrictamente. - Los archivos de configuración que contienen contraseñas o claves API deben ser
600o640como máximo. - Use
findpara auditar permisos en un árbol de directorios:
# Find all world-writable files (potential security risk)
find /var/www -type f -perm -o+w
# Find all SUID files (for security auditing)
find / -type f -perm -4000 2>/dev/nullReferencia Rápida de Comandos
| Tarea | Comando |
|---|---|
| Listar permisos de un archivo | ls -l filename |
| Listar permisos de todos los archivos en un directorio | ls -la /path/to/dir |
| Verificar permisos del directorio en sí | ls -ld /path/to/dir |
| Obtener detalles completos incluyendo permisos numéricos | stat filename |
| Cambiar permisos (simbólico) | chmod u+x filename |
| Cambiar permisos (numérico) | chmod 755 filename |
| Cambiar propietario del archivo | chown user:group filename |
| Cambiar permisos recursivamente | chmod -R 755 /path/to/dir |
| Encontrar archivos escribibles por todos | find . -perm -o+w -type f |
Conclusión
Entender los permisos de archivos de Linux no es solo un ejercicio académico — es una habilidad práctica y diaria para cualquiera que gestione servidores, implemente aplicaciones o trabaje en un entorno Linux. Para resumir los puntos clave:
- Usa
ls -lpara una descripción general rápida y legible de los permisos en archivos y directorios. - Usa
statcuando necesites representaciones simbólicas y numéricas, junto con detalles de propiedad. - Domina ambas notaciones — simbólica (
rwx) y numérica (755,644) — ya que diferentes herramientas y documentación usan ambas indistintamente. - Recuerda la diferencia de directorios: el bit de ejecución (
x) en un directorio significa la capacidad de entrar en él, no de ejecutarlo. - Ten en cuenta los bits especiales — setuid, setgid y el sticky bit — ya que aparecen frecuentemente en sistemas de producción y tienen implicaciones de seguridad significativas.
La gestión adecuada de permisos es una piedra angular de la seguridad de Linux. Ya sea que ejecutes un proyecto personal en VPS Hosting o administres una flota de Servidores Dedicados, hacer bien los permisos desde el principio te ahorrará vulnerabilidades de seguridad, aplicaciones rotas e innumerables horas de solución de problemas en el futuro.
en todos los servicios de hosting