Cómo asignar y gestionar permisos de archivos en Linux (chmod, chown)
¿Por qué son tan importantes los permisos en Linux?
Si alguna vez has visto un error de "Permiso denegado" al intentar subir un archivo a tu servidor, o tu página web muestra un error 500 sin explicación, es muy probable que el problema esté en los permisos de archivos. Entender los permisos linux es una de esas habilidades que separan a quienes solo usan el hosting de quienes realmente lo administran.
Piensa en los permisos como las cerraduras de las puertas de tu casa. Cada archivo y carpeta en tu servidor Linux tiene una cerradura con tres llaves diferentes: una para el dueño, otra para el grupo y otra para el resto del mundo. Si no tienes la llave correcta, no puedes entrar.
En esta guía completa, vamos a desglosar cómo funcionan estos sistemas de seguridad, cómo usar comandos como chmod y chown para gestionarlos, y cómo aplicar esto a casos prácticos como los wordpress permisos. No necesitas ser un experto en sistemas, solo tener paciencia y seguir los ejemplos paso a paso.
Los fundamentos: usuarios, grupos y el resto del mundo
Antes de lanzarnos a los comandos, necesitas entender quién es quién en el sistema Linux.
El propietario (Owner)
Es el usuario que creó el archivo o carpeta. Normalmente, en un servidor web, este es el usuario de tu cuenta de hosting o el usuario www-data si hablamos del servidor web (Apache o Nginx).
El grupo (Group)
Los grupos permiten que varios usuarios compartan permisos sobre un conjunto de archivos. Por ejemplo, si tienes un equipo de desarrolladores, todos pueden pertenecer al grupo developers y tener acceso a los archivos del proyecto sin ser los propietarios.
Otros (Others)
Literalmente, cualquier otro usuario que no sea el propietario ni pertenezca al grupo. En un servidor web, esto incluye a los visitantes de tu sitio.
Cada uno de estos tres actores tiene tres tipos de permisos:
- Lectura (r - read): Permite ver el contenido del archivo o listar el contenido de un directorio.
- Escritura (w - write): Permite modificar el contenido del archivo o crear/eliminar archivos dentro de un directorio.
- Ejecución (x - execute): Permite ejecutar el archivo si es un programa o script. En directorios, permite entrar a ellos (hacer
cd).
El sistema numérico: descifrando el 755
Cuando veas cosas como chmod 755, debes saber que esos números no son aleatorios. Responden a un sistema binario simplificado.
Cada permiso tiene un valor numérico:
- Lectura (r) = 4
- Escritura (w) = 2
- Ejecución (x) = 1
Para cada actor (propietario, grupo, otros), sumamos los valores de los permisos que queremos otorgar.
Ejemplo práctico: El famoso chmod 755
- 7 (Propietario) = 4 (lectura) + 2 (escritura) + 1 (ejecución). El dueño tiene control total.
- 5 (Grupo) = 4 (lectura) + 1 (ejecución). El grupo puede leer y ejecutar, pero no modificar.
- 5 (Otros) = 4 (lectura) + 1 (ejecución). El resto del mundo puede leer y ejecutar, pero no modificar.
Este es el permiso estándar para archivos y carpetas de un sitio web público. Permite que el servidor web lea y muestre los archivos, pero evita que usuarios externos los modifiquen.
Tabla rápida de referencia
| Número | Permisos | Descripción |
|---|---|---|
| 0 | --- | Sin permisos |
| 1 | --x | Solo ejecución |
| 2 | -w- | Solo escritura |
| 3 | -wx | Escritura y ejecución |
| 4 | r-- | Solo lectura |
| 5 | r-x | Lectura y ejecución |
| 6 | rw- | Lectura y escritura |
| 7 | rwx | Todos los permisos |
Cómo usar el comando chmod para cambiar permisos archivos
El comando chmod (change mode) es tu herramienta principal para modificar estos permisos. Puedes usarlo de dos maneras: con números (modo octal) o con letras (modo simbólico). Para principiantes, recomiendo el modo numérico porque es más directo.
Sintaxis básica
chmod [opciones] [permisos] [archivo o directorio]
Ejemplos de uso común
-
Dar permisos completos al propietario, y solo lectura/ejecución a los demás:
chmod 755 mi_archivo.php -
Dar permisos totales a todos (¡PELIGRO!):
chmod 777 mi_carpeta[WARNING] Nunca uses
chmod 777en un servidor de producción. Significa que cualquiera puede leer, escribir y ejecutar tus archivos. Es la puerta de entrada favorita de los hackers. -
Aplicar permisos de forma recursiva a una carpeta y todo su contenido:
chmod -R 755 /ruta/a/mi/carpetaEl flag
-R(recursivo) es esencial cuando trabajas con árboles de directorios.
Usando el modo simbólico (para casos específicos)
A veces solo quieres añadir o quitar un permiso concreto sin recalcular todo el número. Por ejemplo, dar permiso de ejecución al propietario sin tocar el grupo ni otros.
chmod u+x mi_script.sh
u= propietario (user)g= grupo (group)o= otros (others)a= todos (all)+= añadir permiso-= quitar permiso== asignar exactamente
Ejemplo: Quitar permiso de escritura al grupo y a otros:
chmod go-w mi_archivo.conf
El comando chown: cambiando el propietario y grupo
El comando chown (change owner) cambia el propietario de un archivo o directorio. Esto es crucial cuando tu servidor web necesita escribir en ciertos archivos, pero el propietario actual es tu usuario de FTP.
Sintaxis básica
chown [opciones] [nuevo_propietario]:[nuevo_grupo] [archivo]
Ejemplos prácticos
-
Cambiar solo el propietario:
chown juan documento.txt -
Cambiar propietario y grupo a la vez:
chown juan:desarrolladores proyecto.zip -
Cambiar recursivamente (muy común en servidores web):
chown -R www-data:www-data /var/www/mi_sitio_webEsto le da al servidor web (Apache/Nginx) la propiedad de todos los archivos de tu sitio. Es un paso obligatorio si tu sitio necesita subir imágenes o generar cachés.
[INFO] Si tu hosting usa un panel como Syspanel (accesible por defecto en el puerto 2106), es probable que ya se gestionen estos cambios de forma automática al crear sitios web. Sin embargo, saber usar
chownte sacará de apuros cuando algo falle.
Caso práctico: WordPress y los permisos correctos
Los wordpress permisos son un dolor de cabeza recurrente. Un error común es instalar un plugin y que pida credenciales FTP, o que no puedas subir imágenes a la biblioteca de medios.
¿Cuál es el problema?
WordPress necesita escribir en ciertas carpetas (como wp-content/uploads), pero si los archivos son propiedad de tu usuario root o de tu cuenta de FTP, el servidor web no puede modificarlos.
La solución estándar (recomendada para la mayoría)
-
Todos los archivos deben ser propiedad del servidor web:
chown -R www-data:www-data /ruta/a/tu/wordpress -
Los directorios deben tener permisos 755:
find /ruta/a/tu/wordpress -type d -exec chmod 755 {} \; -
Los archivos deben tener permisos 644:
find /ruta/a/tu/wordpress -type f -exec chmod 644 {} \;
Permisos especiales para wp-config.php
El archivo wp-config.php contiene las claves de acceso a la base de datos. Lo ideal es que solo el propietario pueda leerlo y escribirlo.
chmod 600 /ruta/a/tu/wordpress/wp-config.php
[TIP] Si después de aplicar estos permisos tu web sigue dando errores, revisa que tu servidor web (Apache o Nginx) realmente use el usuario
www-data. En algunos sistemas puede sernginx,apacheodaemon. Puedes verificarlo conps aux | grep nginxops aux | grep apache.
Guía rápida de resolución de problemas (FAQ)
1. ¿Por qué recibo un error "Permission denied" al subir archivos por FTP?
Esto significa que tu usuario de FTP no tiene permisos de escritura sobre el directorio de destino. Solución:
chown -R tu_usuario_ftp:tu_grupo_ftp /ruta/del/directorio
chmod -R 755 /ruta/del/directorio
2. ¿Es seguro usar chmod 777 para que WordPress suba archivos?
No, jamás. Es una solución temporal que convierte tu sitio en un coladero. En su lugar, identifica el usuario del servidor web y asígnale la propiedad con chown.
3. Mi sitio muestra un error 500 después de cambiar permisos, ¿qué hice mal?
Probablemente le quitaste permisos de ejecución a los directorios. Los directorios necesitan el bit x para que el servidor pueda entrar a ellos. Verifica que tengan al menos 755.
4. ¿Cómo sé qué permisos tiene un archivo?
Usa el comando ls -l:
ls -l mi_archivo.php
Verás algo así: -rw-r--r--. El primer carácter es el tipo (- archivo, d directorio), y los siguientes 9 caracteres son los permisos en grupos de tres (propietario, grupo, otros).
5. ¿Puedo cambiar permisos desde el panel de control de mi hosting?
Sí, la mayoría de los paneles (incluido Syspanel, que encontrarás en el puerto 2106) tienen un administrador de archivos donde puedes cambiar permisos y propietarios con un clic. Sin embargo, la línea de comandos te da mucho más control y velocidad.
Consejos finales para gestionar permisos como un profesional
- Siempre usa el principio de menor privilegio: Dale a cada archivo solo los permisos que necesita. Si un archivo no necesita ser ejecutado, no le des el permiso
x. - Ten cuidado con la recursividad: Usar
chmod -R 777en tu carpetahomepuede ser catastrófico. Siempre especifica la ruta exacta. - Documenta tus cambios: Si trabajas en equipo, deja un archivo
READMEcon los permisos que usáis para que todos vayan alineados. - Copia de seguridad antes de tocar: Antes de hacer cambios masivos, guarda una lista de los permisos actuales con
ls -lR > permisos_backup.txt. Así podrás revertir si algo sale mal.
Dominar los permisos linux con chmod y chown no es solo una habilidad técnica, es la forma de mantener tu servidor seguro y funcionando sin problemas. Con esta guía, ya tienes las bases para resolver el 90% de los problemas de acceso que puedas encontrar, ya sea en un WordPress, una aplicación a medida o simplemente organizando tus archivos.
Empieza practicando en un entorno de pruebas o en archivos que no sean críticos. En poco tiempo, estos comandos se convertirán en una parte natural de tu flujo de trabajo diario.
