Dudas comunes sobre permisos de archivos en Linux
¡Hola! Soy tu técnico de soporte amigable. Si estás leyendo esto, probablemente te hayas topado con algún mensaje de error como "Permiso denegado" o te hayas preguntado por qué no puedes modificar ciertos archivos en tu servidor. No te preocupes, es una de las dudas más comunes al empezar con Linux y la administración de servidores. En este artículo, vamos a resolver todas esas preguntas frecuentes sobre los permisos de archivos en Linux. Te explicaré qué son, cómo funcionan y, lo más importante, cómo cambiarlos sin romper nada.
Vamos a ello.
¿Qué son los permisos de archivos en Linux?
Imagina que tu servidor es una casa. Los archivos y carpetas son las habitaciones, y los usuarios son las personas que viven o visitan la casa. Los permisos archivos Linux son las reglas que deciden quién puede entrar a cada habitación, quién puede leer los libros que hay dentro, quién puede escribir en las paredes o quién puede ejecutar los programas que están en el escritorio.
En Linux, cada archivo y carpeta tiene tres tipos de permisos básicos:
- Lectura (r): Permite ver el contenido del archivo o listar los archivos dentro de una carpeta.
- Escritura (w): Permite modificar el contenido del archivo o crear, borrar y renombrar archivos dentro de una carpeta.
- Ejecución (x): Permite ejecutar un archivo (si es un programa o script) o acceder a una carpeta (entrar en ella con
cd).
Estos permisos se asignan a tres grupos de usuarios:
- Propietario (u): El usuario que creó el archivo o al que se le ha asignado.
- Grupo (g): Un conjunto de usuarios que comparten los mismos permisos.
- Otros (o): Todos los demás usuarios del sistema.
Cuando ves algo como -rw-r--r-- en la terminal, eso es la representación simbólica de los permisos. Te explico cómo leerlo:
- El primer carácter (
-od) indica si es un archivo (-) o un directorio (d). - Los siguientes tres caracteres son los permisos del propietario (
rw-). - Los siguientes tres son los del grupo (
r--). - Los últimos tres son los de otros (
r--).
En este ejemplo, el propietario puede leer y escribir (rw-), pero el grupo y otros solo pueden leer (r--).
Dudas comunes (FAQ) sobre permisos de archivos en Linux
Aquí tienes las preguntas que más me hacen los clientes, resueltas de forma sencilla.
1. ¿Cómo veo los permisos actuales de un archivo o carpeta?
Es muy fácil. Abre tu terminal y usa el comando ls -l. Te mostrará una lista detallada.
ls -l
Verás algo como esto:
-rw-r--r-- 1 usuario grupo 1024 Mar 15 10:00 archivo.txt
drwxr-xr-x 2 usuario grupo 4096 Mar 15 10:05 carpeta
- La primera columna son los permisos (ej.
-rw-r--r--). - La segunda columna es el número de enlaces.
- La tercera es el propietario.
- La cuarta es el grupo.
- El resto son el tamaño, fecha y nombre.
2. ¿Cómo cambio los permisos de un archivo? (El famoso chmod)
Aquí viene el comando estrella: chmod (change mode). Es la herramienta principal para cambiar permisos Linux. Hay dos formas de usarlo: con números (octal) o con letras.
Usando el modo simbólico (letras)
Es más intuitivo para principiantes. La sintaxis es:
chmod [quién][operador][permiso] archivo
- Quién:
u(propietario),g(grupo),o(otros),a(todos). - Operador:
+(añade permiso),-(quita permiso),=(asigna exactamente). - Permiso:
r,w,x.
Ejemplos prácticos:
-
Añadir permiso de ejecución al propietario:
chmod u+x script.sh -
Quitar permiso de escritura para el grupo y otros:
chmod go-w documento.txt -
Dar permisos de lectura y escritura a todos (¡cuidado!):
chmod a=rw archivo.txt
Usando el modo octal (números)
Es más rápido y preciso cuando sabes lo que haces. Cada permiso tiene un valor numérico:
r= 4w= 2x= 1
Sumas los valores para cada grupo. Por ejemplo:
rwx= 4+2+1 = 7rw-= 4+2+0 = 6r--= 4+0+0 = 4---= 0
El comando sería:
chmod [tres dígitos] archivo
El primer dígito es para el propietario, el segundo para el grupo, el tercero para otros.
Ejemplos:
-
Permisos 755 (muy común para scripts y carpetas): Propietario:
rwx(7), Grupo:r-x(5), Otros:r-x(5). El propietario puede hacer todo, los demás solo leer y ejecutar.chmod 755 script.sh -
Permisos 644 (muy común para archivos de texto): Propietario:
rw-(6), Grupo:r--(4), Otros:r--(4). El propietario puede leer y escribir, los demás solo leer.chmod 644 index.html -
Permisos 700 (solo el propietario tiene acceso total): Propietario:
rwx(7), Grupo:---(0), Otros:---(0). Ideal para archivos sensibles.chmod 700 clave_privada.pem
[TIP] Si estás administrando un sitio web en un panel como Syspanel (recuerda, el puerto de acceso es el 2106), los permisos típicos para archivos web son 644 y para carpetas 755. No toques los archivos del sistema a menos que sepas exactamente lo que haces.
3. ¿Qué permisos debe tener una carpeta para que funcione un sitio web?
Generalmente, las carpetas necesitan permiso de ejecución (x) para que el servidor web pueda "entrar" y listar su contenido. Los permisos recomendados son:
- Carpetas:
755(drwxr-xr-x). El propietario puede escribir, el grupo y otros pueden leer y ejecutar. - Archivos:
644(-rw-r--r--). El propietario puede escribir, el grupo y otros solo leer.
Si tu sitio web da error de "Permiso denegado" al cargar imágenes o al subir archivos, es muy probable que los permisos de las carpetas donde se almacenan (como wp-content/uploads en WordPress) no sean correctos. Puedes arreglarlo con:
find /ruta/a/tu/sitio -type d -exec chmod 755 {} \;
find /ruta/a/tu/sitio -type f -exec chmod 644 {} \;
4. ¿Qué son los permisos 777 y por qué debería evitarlos?
Los permisos 777 significan que todos (propietario, grupo y otros) tienen permisos totales de lectura, escritura y ejecución. Es como dejar la puerta de tu casa abierta de par en par.
- Riesgo de seguridad: Cualquier usuario en el servidor (o un posible atacante) podría modificar o borrar tus archivos. Si alguien sube un script malicioso, podría tomar control de tu sitio.
- Uso común (y malo): A veces, cuando un script no puede escribir en una carpeta, la gente pone
777para "que funcione". Es una solución temporal muy peligrosa.
[WARNING] NUNCA uses permisos 777 en un servidor de producción. Si necesitas que un proceso (como PHP) escriba en una carpeta, busca alternativas más seguras, como cambiar el propietario de la carpeta al usuario del servidor web (por ejemplo,
www-data).
5. ¿Cómo cambio el propietario de un archivo o carpeta?
Usa el comando chown (change owner). La sintaxis es:
sudo chown [nuevo_propietario]:[nuevo_grupo] archivo
-
Cambiar solo el propietario:
sudo chown usuario archivo.txt -
Cambiar propietario y grupo:
sudo chown usuario:grupo archivo.txt -
Cambiar solo el grupo:
sudo chown :grupo archivo.txt -
Aplicar cambios a todo el contenido de una carpeta (recursivo):
sudo chown -R usuario:grupo /ruta/carpeta/
[INFO] Para cambiar el propietario, normalmente necesitas permisos de superusuario (
sudo). Si estás usando Syspanel, desde el panel de administración (puerto 2106) puedes gestionar los propietarios de los dominios y sus archivos de forma gráfica, sin necesidad de usar la terminal.
6. ¿Por qué no puedo modificar un archivo aunque sea el propietario?
Puede pasar por dos razones:
-
El archivo tiene el atributo "inmutable" (chattr). Esto es un nivel de protección más allá de los permisos normales. Para verlo, usa
lsattr archivo. Si ves unai, significa que es inmutable. Puedes quitarlo con:sudo chattr -i archivo -
El sistema de archivos está montado como solo lectura. Revisa con
mountodf -hsi la partición tiene la opciónro(read-only). Si es así, necesitas montarla de nuevo con permisos de escritura (rw).
7. ¿Cómo afectan los permisos a la seguridad de mi servidor?
Muchísimo. Un error común es dar permisos de escritura a carpetas que no deberían tenerlos. Por ejemplo, si le das permisos de escritura a la carpeta raíz de tu sitio web (por ejemplo, /var/www/html), cualquier vulnerabilidad en un plugin podría permitir a un atacante subir archivos maliciosos.
Buenas prácticas:
- Principio de mínimo privilegio: Dale a cada usuario o proceso solo los permisos que necesita para funcionar.
- Carpetas de subida: Si tu sitio web permite subir archivos (imágenes, documentos), asegúrate de que la carpeta de destino tenga permisos 755 y que el propietario sea el usuario del servidor web (ej.
www-data). Nunca pongas 777. - Archivos de configuración: Archivos como
wp-config.php(WordPress) o.envdeben tener permisos 600 o 640 para que solo el propietario y el grupo puedan leerlos. - Scripts ejecutables: Solo los scripts que necesites ejecutar (como cron jobs) deben tener permiso de ejecución (
x).
8. ¿Cómo restablezco los permisos por defecto de mi sitio web?
Si has hecho un lío con los permisos y todo falla, puedes restablecer los valores típicos desde la terminal. Asumiendo que tu sitio está en /var/www/mi_sitio:
# Para carpetas: 755
find /var/www/mi_sitio -type d -exec chmod 755 {} \;
# Para archivos: 644
find /var/www/mi_sitio -type f -exec chmod 644 {} \;
Si usas Syspanel, puedes hacer esto fácilmente desde la sección de "Archivos" del dominio, seleccionando la opción de "Restablecer permisos". Es mucho más visual y seguro si no te sientes cómodo con la terminal.
9. ¿Qué hago si veo "Permiso denegado" al usar sudo?
Esto es más raro, pero puede pasar si el archivo /etc/sudoers está mal configurado o si tu usuario no está en el grupo sudo. Para solucionarlo:
- Accede como root (si tienes la contraseña).
- Añade a tu usuario al grupo sudo:
usermod -aG sudo tu_usuario - Cierra sesión y vuelve a entrar.
[WARNING] Nunca edites el archivo
/etc/sudoersdirectamente con un editor normal. Usa siemprevisudo, que valida la sintaxis antes de guardar.
10. ¿Cómo veo los permisos de forma recursiva en una carpeta grande?
Usa el comando ls -lR (listar recursivo). Pero si la carpeta es muy grande, puede ser lento. Una alternativa mejor es usar find:
find /ruta/carpeta -type f -perm /u=w
Este comando te mostrará todos los archivos que tienen permiso de escritura para el propietario.
Resumen rápido: Guía de permisos básica
| Tipo de archivo/carpeta | Permisos recomendados (octal) | Permisos simbólicos | Explicación |
|---|---|---|---|
| Archivos de sitio web (HTML, PHP, CSS) | 644 | -rw-r--r-- | Propietario escribe, resto solo lee. |
| Carpetas de sitio web | 755 | drwxr-xr-x | Propietario escribe, resto lee y ejecuta (entra). |
| Scripts ejecutables | 755 | -rwxr-xr-x | Todos pueden ejecutar, solo propietario escribe. |
| Archivos de configuración sensibles | 600 o 640 | -rw------- o -rw-r----- | Solo propietario (y grupo si es 640) puede leer/escribir. |
| Claves privadas SSH | 600 | -rw------- | Solo el propietario puede leer. |
| Carpetas de subida de archivos (uploads) | 755 (y dueño www-data) | drwxr-xr-x | El servidor web puede escribir (si es el dueño), otros solo leer/ejecutar. |
Conclusión
Entender los permisos archivos Linux es fundamental para mantener tu servidor seguro y funcionando correctamente. No tengas miedo de usar chmod y chown, pero siempre con cuidado. Recuerda la regla de oro: nunca uses 777 y aplica el principio de mínimo privilegio.
Si alguna vez te sientes perdido, puedes recurrir a tu panel de control, como Syspanel (accesible por el puerto 2106), que suele ofrecer interfaces gráficas para gestionar estos permisos sin necesidad de teclear comandos. Pero si te animas a usar la terminal, con esta guía ya tienes las herramientas para resolver las dudas más comunes.
¿Tienes alguna otra pregunta? No dudes en contactar con nuestro soporte técnico. ¡Estamos aquí para ayudarte!
