El comando chmod en Linux Cambia los permisos de archivos y directorios. Controla quién puede leer, escribir o ejecutar mediante modos simbólicos (u, g, o, +, -, =) o numéricos (octal), como 644, 755 o 600. Usa chmod para valores predeterminados seguros (archivos 644, directorios 755), añade permisos de ejecución a los scripts y evita el 777, excepto en casos excepcionales y controlados.
Si trabajas con Servidores LinuxEl comando chmod en Linux es una de las primeras herramientas que debes dominar. Controla el acceso a archivos y directorios e impacta directamente en la seguridad, especialmente en sistemas de producción y sitios de WordPress. Esta guía explica chmod con claridad, con ejemplos prácticos, buenas prácticas y consejos para la resolución de problemas en entornos de hosting reales.
¿Qué es chmod y cómo funcionan los permisos de Linux?
chmod (cambiar modo) modifica los bits de permiso en archivos y directorios.

Linux evalúa los permisos para tres clases de usuarios:
- Propietario (u) – el usuario del archivo
- Grupo (g) – usuarios en el grupo del archivo
- Otros (o) – todos los demás
Cada clase puede tener tres permisos:
- Leer (r) – ver el contenido del archivo o listar el directorio
- Escribe (w) – modificar archivo o crear/eliminar elementos en un directorio
- Ejecutar (x) – ejecutar un archivo como un programa o acceder/ingresar a un directorio
Diferencia importante: Ejecutar en un directorio no lo ejecuta; permite acceder al directorio y recorrer sus subrutas. Sin ejecutar en un directorio, leer solo no te permitirá... archivos de acceso interior.
Notación de permisos: simbólica vs. numérica (octal)
Modo simbólico
El modo simbólico expresa cambios utilizando letras para clases y operaciones:
- clases: u (propietario), g (grupo), o (otros), a (todos)
- Operadores: + añadir, – quitar, = establecer exactamente
- permisos: r, w, x
# Give execute to owner
chmod u+x script.sh
# Remove write from group and others
chmod go-w file.txt
# Set exact permissions for all: rwx for owner, rx for group/others
chmod a=rX file_or_dir # Note: 'X' adds execute only to directories or if already executable
Modo numérico (octal)
El modo numérico utiliza valores en base 8. Suma los bits de cada clase: lectura = 4, escritura = 2, ejecución = 1.
- 7 = 4+2+1 = rwx
- 6 = 4+2 = rw-
- 5 = 4+1 = rx
- 4 = 4 = r–
- 0 = —
Valores octales comunes:
- 644 - propietario lee/escribe, grupo lee, otros leen (archivos típicos)
- 600 - El propietario solo lee/escribe (secretos como SSH claves, wp-config.php)
- 755 - propietario rwx, grupo rx, otros rx (directorios y ejecutables típicos)
- 700 - scripts/directorios privados
# Files readable by everyone, writable by owner
chmod 644 index.html
# Directories with enter/list access for all, write for owner
chmod 755 /var/www/html
# Private key must be 600 or stricter
chmod 600 ~/.ssh/id_rsaEjemplos prácticos de chmod
Establecer permisos seguros para un sitio web
En los servidores web, una línea base común son los archivos en 644 y los directorios en 755. Aplicar de forma recursiva, pero tratar los directorios de forma diferente:
# Set all files to 644
find /var/www/site -type f -exec chmod 644 {} \;
# Set all directories to 755
find /var/www/site -type d -exec chmod 755 {} \;Hacer que un script de shell sea ejecutable
chmod u+x backup.sh
./backup.shPermitir la colaboración grupal
Otorgar al grupo acceso de escritura al colaborar dentro de un directorio compartido:
# Add write for group
chmod g+w report.docx
# Or set exact mode for shared dir (rwx for owner and group, rx for others)
chmod 775 /srv/projectBloquear un archivo confidencial
# Only owner can read/write
chmod 600 secrets.txtAgregar ejecución solo a directorios (no archivos)
La bandera X en modo simbólico se aplica solo si el destino es un directorio o ya es ejecutable:
chmod -R a+rX /opt/dataCorregir “Permiso denegado”: permisos vs. propiedad
Si el archivo es de tu propiedad, chmod funciona. Si no, quizás necesites sudo o cambiar la propiedad:
# If the web server should own the site
sudo chown -R www-data:www-data /var/www/site
sudo find /var/www/site -type f -exec chmod 644 {} \;
sudo find /var/www/site -type d -exec chmod 755 {} \;Bits de permisos especiales: SUID, SGID, Sticky
Además de rwx, Linux admite bits especiales. Estos modifican el comportamiento de ejecución y eliminación y se representan mediante un dígito octal inicial o letras especiales (s, t).
SUID (Establecer ID de usuario) – 4xxx
Al ejecutar un archivo con SUID, se ejecuta con los privilegios de su propietario (normalmente, root para las utilidades del sistema). Úselo con moderación debido al riesgo de escalada de privilegios.
# Example: 4755 = SUID + 755
chmod 4755 /usr/local/bin/somesetuidtoolSGID (ID de grupo establecido) – 2xxx
En los archivos, SGID hace que el proceso se ejecute con los privilegios del grupo de archivos. En los directorios, los archivos nuevos heredan el grupo del directorio, lo cual es útil para carpetas de proyecto compartidas.
# Make a shared directory group-sticky
chmod 2775 /srv/shared/teamBit pegajoso – 1xxx
En los directorios, sticky restringe las eliminaciones: Solo el propietario de un archivo (o root) puede eliminarlo, incluso si otros tienen acceso de escritura. Se usa en carpetas /tmp y de carga multiusuario.
# World-writable upload directory where users cannot delete others' files
chmod 1777 /var/www/site/uploadsMejores prácticas y consejos de seguridad para chmod
- Siga el privilegio mínimo: Otorgue sólo los derechos mínimos necesarios para la tarea.
- Evite el 777: Los archivos ejecutables y de escritura mundial son un riesgo importante en servidores multiusuario.
- Propiedad y permisos separados: Utilice chown para el propietario/grupo correcto, luego chmod para configurar el acceso.
- Utilice 644 para los archivos: 755 para directorios en la mayoría del contenido web. Limitar el acceso a archivos confidenciales a 600.
- Utilice SGID en directorios de proyectos compartidos para mantener la consistencia del grupo (chmod 2775 dir).
- Utilice sticky en directorios de carga públicos (chmod 1777) solo cuando sea necesario y esté monitoreado.
- Para los scripts, prefiera 750/700 y ejecútelos a través de una cuenta de servicio dedicada.
- Verifique umask para obtener permisos de creación predeterminados: Los resultados típicos de umask 022 son los archivos 644 y los directorios 755.
- Auditoría con búsqueda para detectar archivos de riesgo: buscar /var/www -perm -o=w -type f -print.
Permisos seguros de WordPress (receta rápida)
Esta configuración funciona correctamente en la mayoría de los hosts Linux de un solo inquilino. Ajuste el usuario/grupo para su servidor web (www data, apache o nginx):
# Set ownership to web server user
sudo chown -R www-data:www-data /var/www/wordpress
# Directories 755, files 644
find /var/www/wordpress -type d -exec chmod 755 {} \;
find /var/www/wordpress -type f -exec chmod 644 {} \;
# Lock configuration
chmod 600 /var/www/wordpress/wp-config.phpSi alojas WordPress con YouStable, manageAlojamiento Linux, reforzamos previamente los permisos, deshabilitamos los valores predeterminados riesgosos y proporcionamos SSH/SFTP Acceso para que mantengas el equilibrio entre seguridad y comodidad.
chmod frente a chown frente a chgrp
chmod cambia los permisos. chown cambia el propietario del archivo (usuario) y, opcionalmente, el grupo. chgrp solo cambia el grupo. A menudo, se necesitan la propiedad y los permisos correctos para resolver problemas de acceso.
# Give web server ownership and set collaborative permissions
sudo chown -R www-data:devs /srv/app
find /srv/app -type d -exec chmod 2775 {} \; # SGID for shared group
find /srv/app -type f -exec chmod 664 {} \;Solución de problemas comunes de chmod
- Operación no permitida: No eres el propietario o no tienes privilegios. Usa sudo o ajusta la propiedad con chown.
- Archivos inmutables: Los archivos con el atributo inmutable ignoran chmod. Compruébelo con lsattr y elimínelo con sudo chattr -i file.
- Opciones de montaje: noexec impide la ejecución independientemente de chmod; nosuid deshabilita SUID; nodev deshabilita los archivos de dispositivo. Inspeccione con mount o /etc/fstab.
- Bits de modo de anulación de ACL: Si se utilizan listas de control de acceso, las ACL pueden otorgar o restringir el acceso más allá de chmod. Visualice con getfacl y modifique con setfacl.
- Sorpresas de Umask: Los archivos recién creados heredan las restricciones de umask. Confirme con umask y ajuste en los perfiles de shell o las configuraciones de servicio.
Escenarios y ejemplos del mundo real
Desplegando un PHP applicación
Establezca la aplicación propiedad de un usuario y grupo de implementación en el servidor web. Permita la lectura y ejecución del servidor web, pero restrinja la escritura a rutas de almacenamiento específicas (caché, subidas) para reducir el riesgo.
# Code is read-only to web server
sudo chown -R deploy:www-data /var/www/app
find /var/www/app -type d -exec chmod 755 {} \;
find /var/www/app -type f -exec chmod 644 {} \;
# Writable storage paths only
sudo chown -R www-data:www-data /var/www/app/storage /var/www/app/uploads
chmod -R 775 /var/www/app/storage /var/www/app/uploadsAsegurar SSH claves
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa ~/.ssh/authorized_keysHacer que un binario compilado sea ejecutable
gcc tool.c -o tool
chmod 755 tool
./toolPuntos Clave
- Utilice chmod para establecer quién puede leer, escribir o ejecutar archivos y directorios.
- El modo simbólico es ideal para cambios incrementales; el modo numérico es preciso y repetible.
- Valores predeterminados de seguridad comunes: archivos 644, directorios 755; secretos 600.
- Evite 777. Utilice SGID para directorios compartidos y sticky para áreas públicas de carga/temperatura.
- Verifique la propiedad (chown, chgrp), umask, opciones de montaje y ACL al solucionar problemas.
Preguntas Frecuentes
1. ¿Qué significa chmod 755?
chmod 755 establece los permisos rwx para el propietario y rx para el grupo y otros. Se usa comúnmente para directorios (para que sean accesibles) y para ejecutables que todos los usuarios del sistema puedan ejecutar.
2. ¿Es seguro utilizar chmod 777?
Generalmente, el n.° 777 permite escritura y ejecución a todos, lo que supone un riesgo en servidores multiusuario y hosts web. Si debe usarlo temporalmente para depurar, restablezca inmediatamente los permisos más estrictos y considere un mejor enfoque de propiedad o ACL.
3. ¿Cuál es la diferencia entre 644 y 664?
644 permite que solo el propietario escriba; el grupo y otros usuarios pueden leer. 664 también permite que el grupo escriba. Use 664 al colaborar dentro de un grupo de confianza; de lo contrario, prefiera 644 para un control más estricto.
4. ¿Cómo puedo aplicar diferentes permisos a archivos y directorios de forma recursiva?
Utilice la función de búsqueda para localizar los tipos de archivos:find /path -type f -exec chmod 644 {} \;
find /path -type d -exec chmod 755 {} \;
5. ¿Por qué chmod no funciona incluso con sudo?
Las posibles causas incluyen atributos inmutables (chattr +i), opciones de montaje restrictivas (noexec, nosuid) o ACL que anulan los bits de modo. Verifique con lsattr, mount y getfacl. Elimine o ajuste la configuración de bloqueo antes de volver a intentar chmod.
¿Necesita ayuda para aplicar estas mejores prácticas en su servidor o sitio de WordPress? YouStable, managed alojamiento Los equipos establecen permisos seguros, fortalecen su pila y mantienen sus aplicaciones rápidas y seguras, para que usted pueda concentrarse en el crecimiento.