Permisos de archivos en Linux: chmod y chown explicados
¿Alguna vez has intentado subir un archivo a tu servidor y te ha aparecido un molesto error de "permiso denegado"? O quizás has visto en tu panel de control archivos con números raros como 644 o 755 y te has preguntado qué significan.
No te preocupes, es una de las dudas más comunes en el mundo del hosting. Entender los permisos linux es como aprender a ponerle llaves a las puertas de tu casa: decides quién puede entrar, quién puede leer tus cosas y quién puede reorganizar los muebles.
En esta guía completa, vamos a desmitificar los permisos archivos usando dos comandos mágicos: chmod y chown. Al final, serás capaz de arreglar esos errores tú mismo sin tener que llamar a soporte técnico (aunque nosotros siempre estaremos encantados de ayudarte).
Vamos a ello.
¿Qué son exactamente los permisos de archivos en Linux?
Linux es un sistema operativo multiusuario. Esto significa que varias personas (o procesos) pueden usar el mismo servidor al mismo tiempo. Para mantener todo seguro y ordenado, cada archivo y carpeta tiene un "guardia de seguridad" que decide quién puede hacer qué.
Este guardia se basa en tres tipos de "personas" (niveles de acceso):
- Usuario (u): Es el dueño del archivo. Generalmente, es la persona que lo creó o el usuario principal del sitio web (por ejemplo,
adminosyspanel). - Grupo (g): Es un conjunto de usuarios que comparten permisos. Por ejemplo, todos los usuarios de un mismo proyecto o los miembros de un equipo de desarrollo.
- Otros (o): Es el resto del mundo. Cualquier usuario que no sea el dueño ni esté en el grupo.
Ahora bien, estos tres niveles pueden tener tres tipos de "acciones" (permisos) sobre el archivo:
- Lectura (r): Poder abrir y ver el contenido del archivo. En una carpeta, significa poder listar su contenido.
- Escritura (w): Poder modificar, editar o borrar el archivo. En una carpeta, significa poder crear o eliminar archivos dentro de ella.
- Ejecución (x): Poder "ejecutar" el archivo, es decir, si es un programa o un script. En una carpeta, significa poder "entrar" en ella (usar el comando
cd).
La combinación de estos tres niveles y estas tres acciones es lo que conocemos como linux file permissions.
El comando chmod: Cambiando los permisos
El comando chmod (del inglés change mode) es la herramienta que usamos para cambiar los permisos de un archivo o carpeta. Piensa en él como el "administrador de llaves" del sistema.
Hay dos formas principales de usar chmod: con modo simbólico (usando letras) y con modo numérico (usando números). Te recomiendo que te familiarices con ambos, pero el numérico es el más común en el hosting.
El sistema numérico: La magia del 4, 2 y 1
Este sistema es el más usado porque es rápido y conciso. Se basa en asignar un valor numérico a cada permiso:
- Lectura (r) = 4
- Escritura (w) = 2
- Ejecución (x) = 1
Para cada nivel (usuario, grupo, otros), sumamos estos números para obtener el permiso total.
Por ejemplo:
- 7 = 4 + 2 + 1 = Lectura + Escritura + Ejecución (permisos totales).
- 6 = 4 + 2 = Lectura + Escritura (pero no ejecución).
- 5 = 4 + 1 = Lectura + Ejecución (pero no escritura).
- 4 = 4 = Solo Lectura.
Un permiso se escribe con tres dígitos en orden: usuario, grupo, otros.
[TIP] La combinación más común para archivos de un sitio web es 644 (usuario puede leer y escribir, grupo y otros solo leer). Para carpetas, la más común es 755 (usuario puede hacer todo, grupo y otros pueden leer y entrar).
Cómo usar chmod en la práctica
Imagina que tienes un archivo llamado config.php y quieres que el usuario pueda leerlo y escribirlo, pero que el grupo y otros solo puedan leerlo. El comando sería:
chmod 644 config.php
¿Y si quieres darle permisos de ejecución a un script llamado backup.sh para que el usuario pueda ejecutarlo?
chmod 755 backup.sh
[WARNING] Ten mucho cuidado con el permiso 777 (todos pueden leer, escribir y ejecutar). Aunque parece fácil, es un agujero de seguridad enorme. Cualquiera podría modificar tus archivos. Úsalo solo de forma temporal y en archivos que no contengan información sensible.
El modo simbólico: Usando letras
Aunque el numérico es más popular, el simbólico es más "humano". Se usa con operadores como + (añadir), - (quitar) y = (igualar).
Por ejemplo, para añadir permiso de ejecución al usuario (u) sobre script.sh:
chmod u+x script.sh
Para quitar el permiso de escritura a "otros" (o) en index.html:
chmod o-w index.html
Para dar permisos de lectura y ejecución al grupo (g) de forma explícita:
chmod g=rx archivo.txt
El comando chown: Cambiando la propiedad
El comando chown (del inglés change owner) es igual de importante, pero en lugar de cambiar los permisos, cambia el dueño (usuario) y el grupo de un archivo o carpeta.
¿Por qué es crucial? Porque en un servidor web, el software (como PHP o Apache) se ejecuta bajo un usuario específico. Si el archivo le pertenece a otro usuario, el servidor no podrá leerlo o modificarlo, incluso si los permisos parecen correctos.
Por ejemplo, si tu sitio web se ejecuta con el usuario syspanel y el archivo config.php pertenece al usuario root, es probable que tengas errores.
Cómo usar chown
La sintaxis básica es:
chown [nuevo_usuario]:[nuevo_grupo] [archivo_o_carpeta]
- Para cambiar solo el usuario:
chown syspanel config.php
- Para cambiar el usuario y el grupo:
chown syspanel:syspanel config.php
[INFO] En muchos paneles de control como Syspanel (que puedes acceder por el puerto 2106), esta opción está automatizada. Pero si usas SSH, este comando es tu mejor amigo para resolver conflictos de propiedad.
El caso de las carpetas: El comodín -R
Si tienes una carpeta con muchos archivos dentro y quieres cambiar el dueño de todos a la vez, necesitas usar la opción -R (recursiva). Esto es muy común al subir un proyecto completo.
chown -R syspanel:syspanel /ruta/a/tu/carpeta
Este comando cambiará el dueño de la carpeta y de todo su contenido (subcarpetas y archivos) de una sola vez.
[WARNING] Usa -R con cuidado. Asegúrate de estar en la carpeta correcta o de escribir la ruta exacta, ya que podrías cambiar la propiedad de archivos del sistema por error.
Los permisos más comunes en hosting y qué significan
Cuando trabajas con un hosting, te encontrarás con ciertas combinaciones muy a menudo. Aquí te dejo una guía rápida de referencia:
- 644 (Archivos): El dueño puede leer y escribir. El grupo y otros solo pueden leer. Es el estándar para archivos de código (PHP, HTML, CSS, JS).
- 755 (Carpetas): El dueño puede leer, escribir y ejecutar. El grupo y otros pueden leer y ejecutar. Es el estándar para directorios.
- 600 (Archivos de configuración): El dueño puede leer y escribir. Nadie más tiene acceso. Perfecto para archivos con contraseñas o claves API.
- 700 (Carpetas privadas): Solo el dueño tiene acceso total. Ideal para carpetas con datos sensibles.
- 775 (Carpetas colaborativas): El dueño y el grupo tienen acceso total. Otros solo pueden leer y ejecutar. Útil si varios usuarios del mismo grupo trabajan en el proyecto.
- 664 (Archivos colaborativos): El dueño y el grupo pueden leer y escribir. Otros solo pueden leer.
¿Cómo sé qué permisos tiene un archivo?
Puedes usar el comando ls -l en la terminal para verlo. Verás algo así:
-rw-r--r-- 1 syspanel syspanel 1024 Feb 12 10:30 config.php
- El primer carácter
-indica que es un archivo (si fuera una carpeta, verías unad). - Los siguientes 9 caracteres son los permisos: los primeros 3 son del usuario (
rw-), los siguientes 3 del grupo (r--) y los últimos 3 de otros (r--). - El primer
syspaneles el dueño y el segundo es el grupo.
Resolviendo problemas comunes con permisos
Aquí tienes un mini FAQ para resolver las dudas más habituales:
1. Error 403 Forbidden al abrir mi web.
Este error suele significar que los permisos de tus archivos o carpetas no son correctos. Normalmente se soluciona poniendo las carpetas a 755 y los archivos a 644. Si usas Syspanel, puedes hacerlo desde el administrador de archivos, pero también vía SSH.
2. "Permission denied" al intentar subir archivos por FTP.
Esto ocurre cuando el usuario de FTP no tiene permisos de escritura en la carpeta de destino. Asegúrate de que la carpeta tenga permisos 755 y que el dueño sea el mismo que el usuario de FTP.
3. No puedo escribir en un archivo desde PHP.
Tu script PHP se ejecuta como el usuario del servidor web. Si el archivo le pertenece a otro usuario y no tiene permisos de escritura para "otros", fallará. Solución: usa chown para que el archivo pertenezca al usuario del servidor web (a menudo, el mismo que usa Syspanel).
4. ¿Cuándo debo usar chown y cuándo chmod?
- Usa
chmodpara cambiar los permisos de lectura, escritura y ejecución. - Usa
chownpara cambiar el propietario y el grupo.
Piensa enchmodcomo las cerraduras de la puerta y enchowncomo el propietario de la casa que tiene las llaves maestras.
Conclusión: Dominando el control de acceso
Entender los permisos linux y los comandos chmod y chown es una habilidad fundamental para cualquier persona que gestione un servidor o un sitio web. No solo te salvará de dolores de cabeza, sino que también te dará el control total sobre la seguridad de tus datos.
La próxima vez que veas un error de permisos, ya no será un misterio. Sabrás exactamente qué herramienta usar: chmod para ajustar las cerraduras y chown para cambiar al propietario.
Recuerda siempre ser cauteloso con los permisos amplios como 777 y verifica la propiedad de los archivos antes de modificar nada. Con un poco de práctica, estos comandos se convertirán en una parte natural de tu flujo de trabajo.
[TIP] Si estás gestionando tu hosting a través de Syspanel (recuerda, el puerto de acceso es el 2106), explora su administrador de archivos. Muchas veces te permite cambiar permisos y propietarios con clics, sin necesidad de usar la terminal. Pero ahora que sabes los fundamentos, entenderás exactamente qué está haciendo el panel por ti.
Espero que esta guía te haya sido de gran ayuda. Si tienes más dudas, ya sabes dónde encontrarnos. ¡Feliz gestión de servidores!
