Ahorre 15% en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código: Skills Comenzar
Secciones
Linux Servidores virtuales Sistemas Operativos

Entendiendo los Permisos de Archivos en Linux y Cómo Administrarlos

Los permisos de archivos en Linux son uno de los aspectos más fundamentales — y más incomprendidos — de la administración de sistemas. Ya sea que estés administrando un servidor web de producción, implementando aplicaciones o escribiendo scripts de automatización, una comprensión sólida del modelo de permisos de Linux es innegociable. Si lo haces mal, corres el riesgo de sufrir brechas de seguridad, implementaciones rotas o servicios bloqueados. Si lo haces bien, tienes un marco de seguridad poderoso y granular trabajando a tu favor.

Esta guía cubre todo lo que necesitas saber: cómo funciona el modelo de permisos, cómo leer y modificar permisos, cómo administrar la propiedad y cómo manejar bits de permisos avanzados como SUID, SGID y el sticky bit.

El Modelo de Permisos de Archivos de Linux Explicado

Cada archivo y directorio en un sistema Linux tiene asignado un conjunto de derechos de acceso. Estos derechos se dividen entre tres clases de usuario y tres tipos de permisos.

Las Tres Clases de Usuario

ClaseDescripción
propietarioEl usuario que es propietario del archivo
grupoTodos los usuarios que pertenecen al grupo asignado del archivo
otrosTodos los demás en el sistema

Los Tres Tipos de Permisos

PermisoSímboloSignificado
lecturarVer el contenido del archivo o listar el contenido del directorio
escriturawModificar un archivo o directorio
ejecuciónxEjecutar un archivo como programa, o entrar/recorrer un directorio

Juntos, estos nueve bits (tres clases × tres permisos) definen el perfil completo de control de acceso para cada objeto en el sistema de archivos.

Cómo ver permisos de archivo con ls -l

La forma más rápida de inspeccionar permisos es con el comando ls -l:

ls -l myscript.sh

Ejemplo de salida:

-rwxr-xr-- 1 alice devs 2048 Jan 25 10:00 myscript.sh

Aquí te mostramos cómo leer la cadena de permisos carácter por carácter:

CaracteresSignificado
-Tipo de archivo (- = archivo regular, d = directorio, l = enlace simbólico)
rwxPermisos del propietario: lectura, escritura, ejecución
r-xPermisos del grupo: lectura, ejecución (sin escritura)
r--Permisos de otros: solo lectura

Entonces en este ejemplo, alice (el propietario) tiene acceso completo, los miembros del grupo devs pueden leer y ejecutar el archivo, y todos los demás solo pueden leerlo.

Cambiar permisos con chmod

El comando chmod modifica los permisos de archivo. Admite dos modos: simbólico y numérico (octal).

Modo simbólico

El modo simbólico utiliza letras y operadores para agregar (+), eliminar (-) o establecer (=) permisos:

chmod u+x myscript.sh      # Add execute permission for the owner
chmod g-w myscript.sh      # Remove write permission from the group
chmod o=r myscript.sh      # Set read-only for others (exactly)
chmod a+x myscript.sh      # Add execute for all (owner, group, others)

Las clases de destino son: u (usuario/propietario), g (grupo), o (otros), a (todos).

Modo numérico (octal)

Cada tipo de permiso tiene un valor numérico: r = 4, w = 2, x = 1. Los suma para obtener un dígito único por clase.

OctalBinarioPermisos
7111rwx
6110rw-
5101r-x
4100r--
0000---

Ejemplos comunes:

chmod 755 myscript.sh   # Owner: rwx | Group: r-x | Others: r-x
chmod 644 file.txt      # Owner: rw- | Group: r-- | Others: r--
chmod 700 script.sh     # Owner: rwx | Group: --- | Others: ---
chmod 600 secret.key    # Owner: rw- | Group: --- | Others: ---

> Referencia rápida: 755 es el estándar para scripts y directorios públicos. 644 es el estándar para archivos de configuración legibles. 600 es ideal para claves privadas y credenciales sensibles.

Gestión de Propiedad con chown y chgrp

Los permisos solo tienen sentido en el contexto de la propiedad. Los comandos chown y chgrp te permiten asignar archivos al usuario y grupo correcto.

Cambiar el Propietario del Archivo

chown alice file.txt

Cambiar el Grupo

chgrp devs file.txt

Cambiar Propietario y Grupo Simultáneamente

chown bob:admins file.txt

Aplicar Cambios Recursivamente

La bandera -R aplica cambios de propiedad a un directorio y todo su contenido — esencial al configurar raíces de documentos del servidor web:

chown -R www-data:www-data /var/www/html/

Este es un paso crítico al desplegar aplicaciones web en un entorno de VPS Hosting, asegurando que el proceso del servidor web tenga el acceso correcto para servir archivos.

Bits de Permiso Especial: SUID, SGID y Sticky Bit

Más allá de los nueve bits de permiso estándar, Linux admite tres modos especiales que modifican el comportamiento predeterminado de formas importantes.

1. SUID — Set User ID

Se aplica a: Archivos ejecutables

Cuando el bit SUID se establece en un ejecutable, se ejecuta con los privilegios del propietario del archivo, no del usuario que lo lanzó.

chmod u+s /usr/bin/passwd

ls -l salida:

-rwsr-xr-x 1 root root 54256 Jan 10 08:00 /usr/bin/passwd

Observe el s en lugar del x del propietario. Así es como /usr/bin/passwd puede actualizar /etc/shadow (un archivo propiedad de root) incluso cuando lo ejecuta un usuario regular.

> Nota de seguridad: Tenga mucho cuidado al establecer SUID en scripts personalizados. Un binario SUID mal configurado es un vector clásico de escalada de privilegios.

2. SGID — Set Group ID

Se aplica a: Archivos ejecutables y directorios

  • En archivos: El archivo se ejecuta con los privilegios de grupo del propietario del grupo del archivo.
  • En directorios: Los archivos nuevos creados dentro del directorio heredan automáticamente el grupo del directorio, en lugar del grupo primario del usuario que los crea.
chmod g+s /opt/project

ls -l salida:

drwxr-sr-x 2 alice devs 4096 Jan 25 10:00 /opt/project

SGID en directorios es extremadamente útil para carpetas de desarrollo compartido donde múltiples miembros del equipo necesitan una propiedad de grupo consistente en todos los archivos nuevos.

3. Sticky Bit

Se aplica a: Directorios

Cuando el sticky bit se establece en un directorio, solo el propietario del archivo (o root) puede eliminar o renombrar ese archivo, incluso si otros usuarios tienen permiso de escritura en el directorio.

chmod +t /shared/folder

ls -ld salida para /tmp:

drwxrwxrwt 10 root root 4096 Jan 28 12:00 /tmp

El t al final indica que el sticky bit está activo. Por eso /tmp es escribible por todos pero los usuarios no pueden eliminar los archivos temporales de otros.

Entendiendo umask — Control de Permisos Predeterminados

Cuando se crea un nuevo archivo o directorio, Linux no le otorga permisos máximos. En su lugar, aplica una umask (máscara de creación de archivos del usuario) que resta permisos del valor predeterminado.

Verifica Tu umask Actual

umask

Salida común: 0022

Cómo Funciona umask

ObjetoMáximo PredeterminadoCon umask `0022`Resultado
Archivo666 (rw-rw-rw-)666 - 022644 (rw-r–r–)
Directorio777 (rwxrwxrwx)777 - 022755 (rwxr-xr-x)

> Nota: Linux nunca establece el bit de ejecución en archivos recién creados de forma predeterminada, independientemente de umask.

Establece una umask Temporal

umask 0077    # New files: 600 (rw-------), New dirs: 700 (rwx------)

Esto es útil en scripts que crean archivos temporales sensibles. Para un cambio permanente, añade el comando umask al archivo de perfil de tu shell (por ejemplo, ~/.bashrc o /etc/profile).

Correcciones de Permisos Recursivos

Una tarea común en el mundo real es restablecer permisos en todo un directorio de proyecto — por ejemplo, después de un despliegue fallido o una carga FTP que dañó los permisos. La clave es establecer permisos diferentes para directorios y archivos, ya que los directorios necesitan el bit de ejecución para ser atravesables.

# Set all directories to 755
find /var/www/myapp -type d -exec chmod 755 {} ;

# Set all files to 644
find /var/www/myapp -type f -exec chmod 644 {} ;

Si tu aplicación tiene scripts ejecutables específicos, corrígelos por separado después:

chmod 755 /var/www/myapp/bin/*.sh

Este patrón es esencial para cualquiera que administre entornos de alojamiento web. Si ejecutas aplicaciones PHP, Python o Node.js en un VPS con cPanel, los permisos de archivo incorrectos son una de las causas más comunes de errores 403 Forbidden y fallos en la ejecución de scripts.

Referencia Práctica de Permisos para Escenarios Comunes

EscenarioPermisos RecomendadosComando
Archivos web públicos (HTML, CSS, JS)644chmod 644 index.html
Directorios web755chmod 755 /var/www/html
Scripts PHP/Python644 o 755Depende del método de ejecución
Claves privadas SSH600chmod 600 ~/.ssh/id_rsa
Directorio .ssh700chmod 700 ~/.ssh
Directorio de proyecto compartido2775 (SGID)chmod 2775 /opt/project
Directorio temporal escribible por todos1777 (sticky)chmod 1777 /tmp/shared
Archivos de configuración con secretos600chmod 600 .env

Permisos de Archivos Linux y Seguridad del Servidor

Entender los permisos de archivos no es solo un ejercicio académico — tiene implicaciones directas y prácticas para la seguridad y estabilidad del servidor.

Errores de seguridad comunes a evitar:

  • Configurar 777 en directorios web. Esto otorga acceso de lectura, escritura y ejecución a todos — una vulnerabilidad crítica si tu servidor está comprometido o si es posible la inyección de código PHP.
  • Dejar archivos de configuración legibles por todos. Archivos como .env, wp-config.php o credenciales de base de datos deben ser 600 o 640 como máximo.
  • Ignorar la propiedad. Incluso si los permisos se ven correctos, si el usuario incorrecto es propietario de un archivo, tu servidor web o demonio de aplicación puede no poder leerlo.
  • chown recursivo en directorios del sistema. Ejecutar chown -R sin cuidado en /etc o /usr puede romper tu sistema completo.

Si estás ejecutando un entorno de producción en Servidores Dedicados, implementar una política de permisos estricta es uno de los primeros pasos de endurecimiento que debes tomar después de la configuración inicial.

Para equipos que administran múltiples sitios o aplicaciones, los Paneles de Control VPS pueden simplificar la gestión de permisos a través de administradores de archivos gráficos, aunque la competencia en línea de comandos sigue siendo esencial para configuraciones avanzadas.

Referencia Rápida de Comandos

# View permissions
ls -l filename
ls -ld directory/

# Change permissions (symbolic)
chmod u+x file        # Add execute for owner
chmod g-w file        # Remove write for group
chmod o=r file        # Set read-only for others
chmod a+r file        # Add read for all

# Change permissions (numeric)
chmod 755 file        # rwxr-xr-x
chmod 644 file        # rw-r--r--
chmod 600 file        # rw-------
chmod 700 file        # rwx------

# Change ownership
chown user file
chgrp group file
chown user:group file
chown -R user:group directory/

# Special bits
chmod u+s file        # Set SUID
chmod g+s directory   # Set SGID
chmod +t directory    # Set sticky bit

# umask
umask                 # Show current umask
umask 0022            # Set umask for session

# Recursive fixes
find /path -type d -exec chmod 755 {} ;
find /path -type f -exec chmod 644 {} ;

Conclusión

Los permisos de archivos de Linux forman la columna vertebral de la seguridad del sistema, el control de acceso multiusuario y la implementación confiable de aplicaciones. El modelo es elegante en su simplicidad — tres clases, tres tipos de permisos, algunos bits especiales — pero lo suficientemente poderoso para asegurar todo, desde una máquina de desarrollo personal hasta un servidor de producción de alto tráfico.

Dominar chmod, chown, umask y los bits de permisos especiales te da la confianza para implementar aplicaciones correctamente, solucionar errores de acceso rápidamente y fortalecer tus servidores contra acceso no autorizado.

Ya sea que estés comenzando con Alojamiento Web Compartido o escalando a un entorno completamente administrado de Alojamiento VPS, una comprensión sólida de los permisos de archivos de Linux es una de las habilidades de mayor apalancamiento que puedes desarrollar como administrador de sistemas o desarrollador. Invierte tiempo en comprenderlo profundamente — tus servidores (y tus usuarios) te lo agradecerán.