🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo usar chmod y chown para permisos de archivos

Actualizado el 4 de mayo de 2026

¿Qué son los permisos de archivos en Linux y por qué deberían importarte?

Cuando trabajas con un servidor, ya sea para alojar una web, una base de datos o simplemente para gestionar tus archivos, Linux es el sistema operativo que lo hace posible. Y aunque al principio puede parecer un mundo lleno de comandos extraños, hay dos herramientas que son tus mejores amigas para mantener tu servidor seguro y funcionando: chmod y chown.

Imagina que tu servidor es un edificio de oficinas. Cada archivo o carpeta es una habitación con una puerta. chmod es la herramienta que te permite decidir quién tiene la llave para entrar (leer), quién puede amueblar la habitación (escribir) y quién puede demolerla (ejecutar). Por otro lado, chown es el administrador del edificio, el que decide quién es el dueño de cada habitación.

Si no controlas bien estos permisos, podrías tener dos problemas graves: que usuarios no autorizados lean información confidencial (como contraseñas o datos de clientes) o que tu sitio web no funcione porque el servidor web (como Apache o Nginx) no tiene permiso para leer los archivos. Vamos a desglosarlo paso a paso para que domines el arte de los permisos linux.


Entendiendo la base: usuarios, grupos y el resto del mundo

Antes de lanzarnos a los comandos, necesitas conocer a los tres actores principales en el teatro de los permisos de Linux:

  • El propietario (u): Es el usuario que creó el archivo o al que se le asignó la propiedad. Normalmente es alguien como root o un usuario específico del sistema.
  • El grupo (g): Los archivos pertenecen a un grupo. Puede ser un grupo de usuarios que comparten acceso a ciertos recursos, como www-data (el grupo del servidor web) o developers.
  • Otros (o): Cualquier otro usuario que no sea el propietario ni pertenezca al grupo. También se les llama "el mundo" o "público".

Cada uno de estos actores tiene tres tipos de permisos básicos:

  • Lectura (r): Permite ver el contenido del archivo o listar los archivos dentro de un directorio.
  • Escritura (w): Permite modificar el contenido del archivo o crear y eliminar archivos dentro de un directorio.
  • Ejecución (x): Permite ejecutar el archivo como un programa o script. En directorios, permite entrar en ellos (usar el comando cd).

Cuando ejecutas el comando ls -l en tu terminal, verás algo como esto:

-rw-r--r-- 1 usuario grupo 1024 oct 12 10:30 archivo.txt

Esa primera cadena de caracteres (-rw-r--r--) es la clave. El primer carácter indica si es un archivo normal (-) o un directorio (d). Los siguientes nueve caracteres se dividen en tres grupos de tres:

  • Los primeros tres (rw-) son los permisos del propietario.
  • Los siguientes tres (r--) son los permisos del grupo.
  • Los últimos tres (r--) son los permisos de otros.

En este ejemplo, el propietario puede leer y escribir, pero el grupo y otros solo pueden leer. Sencillo, ¿verdad?


Cómo usar chmod: el controlador de acceso

El comando chmod (change mode) es tu herramienta principal para cambiar los permisos de un archivo o directorio. Hay dos formas de usarlo: con símbolos (letras) o con números (octales). Te recomiendo dominar ambas, pero empezaremos con la más visual.

Usando chmod con símbolos (modo relativo)

Con este método, le dices a chmod qué permisos agregar, quitar o asignar. La sintaxis es:

chmod [quién][operador][permisos] archivo

Donde:

  • Quién: u (propietario), g (grupo), o (otros), a (todos, que es la combinación de u, g y o).
  • Operador: + (agrega), - (quita), = (asigna exactamente).
  • Permisos: r (lectura), w (escritura), x (ejecución).

Ejemplos prácticos:

  1. Dar permiso de ejecución al propietario:

    chmod u+x script.sh
    
  2. Quitar permiso de escritura al grupo:

    chmod g-w documento.txt
    
  3. Dar lectura y ejecución a todos:

    chmod a+rx pagina.html
    
  4. Asignar permisos exactos al grupo (solo lectura):

    chmod g=r archivo.conf
    

Puedes combinar varios cambios en un solo comando separándolos con comas:

chmod u+rwx,go+r script.sh

Esto le da al propietario lectura, escritura y ejecución, y a grupo y otros solo lectura.

Usando chmod con números (modo absoluto)

Este método es más rápido y preciso. Cada permiso tiene un valor numérico:

  • Lectura (r) = 4
  • Escritura (w) = 2
  • Ejecución (x) = 1

Sumas los valores de los permisos que quieres para cada actor (propietario, grupo, otros) y obtienes un número de tres dígitos. Por ejemplo:

  • rwx = 4 + 2 + 1 = 7
  • rw- = 4 + 2 + 0 = 6
  • r-- = 4 + 0 + 0 = 4
  • r-x = 4 + 0 + 1 = 5

Así, el comando chmod 755 archivo significa:

  • Propietario: rwx (7) → puede leer, escribir y ejecutar.
  • Grupo: r-x (5) → puede leer y ejecutar.
  • Otros: r-x (5) → puede leer y ejecutar.

Los permisos más comunes que verás en servidores:

ValorPermisosUso típico
644rw-r--r--Archivos estáticos de una web (HTML, CSS, imágenes).
755rwxr-xr-xDirectorios y scripts ejecutables.
600rw-------Archivos de configuración sensibles (claves, credenciales).
700rwx------Directorios privados del usuario.

Ejemplo práctico: Si tu web no carga las imágenes, probablemente los archivos tengan permisos demasiado restrictivos. Ejecuta:

chmod 644 *.jpg *.png *.css

Y para los directorios:

chmod 755 directorio_imagenes

Cómo usar chown: cambiando la propiedad

El comando chown (change owner) te permite cambiar el propietario y el grupo de un archivo o directorio. Esto es fundamental cuando, por ejemplo, subes archivos a tu servidor con un usuario FTP y luego el servidor web no puede leerlos porque no son de su propiedad.

La sintaxis básica es:

chown [nuevo_propietario]:[nuevo_grupo] archivo

Cambiar el propietario de un archivo

Para cambiar solo el propietario:

chown usuario1 documento.txt

Para cambiar el propietario y el grupo a la vez:

chown usuario1:grupo1 documento.txt

Cambiar solo el grupo

Si solo quieres cambiar el grupo, puedes usar chgrp o la sintaxis de chown con dos puntos:

chown :grupo1 documento.txt

Cambiar permisos recursivamente

Cuando trabajas con directorios, es muy común querer aplicar los cambios a todo su contenido. Para ello, usa la opción -R (recursivo):

chown -R usuario1:grupo1 /ruta/al/directorio

[TIP]: Ten mucho cuidado con -R. Si lo usas en un directorio del sistema como /etc o /var, podrías romper el sistema operativo. Úsalo solo cuando sepas exactamente lo que estás haciendo.

Ejemplo real: arreglar los permisos de un sitio web

Imagina que tienes un sitio web alojado en /var/www/miweb y el servidor web (Apache o Nginx) corre con el usuario www-data. Si los archivos son de tu usuario juan, el servidor no podrá leerlos. La solución es:

sudo chown -R www-data:www-data /var/www/miweb

Pero espera, ¿qué pasa si tú también necesitas editar esos archivos? Una buena práctica es:

sudo chown -R juan:www-data /var/www/miweb

Esto hace que tú seas el propietario (para editar) y el grupo sea www-data (para que el servidor web pueda leer). Luego, asegúrate de que los permisos sean 750 para directorios y 640 para archivos.


Casos de uso frecuentes y errores comunes

1. "Permission denied" al intentar editar un archivo

Este es el error más común. Si recibes este mensaje, significa que tu usuario no tiene permisos de escritura sobre el archivo. Solución:

sudo chown tu_usuario archivo
sudo chmod u+w archivo

2. No puedo entrar a un directorio

Si no puedes hacer cd a un directorio, te falta el permiso de ejecución (x) en ese directorio. Recuerda que en directorios, x significa "poder atravesar". Solución:

chmod u+x directorio

3. Scripts que no se ejecutan

Si tu script tiene permisos correctos pero no se ejecuta, verifica que tenga el bit de ejecución:

chmod +x script.sh

4. Web que muestra "500 Internal Server Error"

Esto suele pasar cuando el servidor web no puede leer los archivos PHP o Python. Verifica que los archivos sean legibles por el grupo www-data:

chown -R www-data:www-data /var/www/miweb
chmod -R 755 /var/www/miweb

[WARNING]: No uses chmod 777 para "arreglar" problemas de permisos. Esto le da permisos totales a cualquier usuario del sistema, lo cual es un gravísimo riesgo de seguridad. Un atacante podría modificar tus archivos y tomar control de tu sitio. Siempre busca el permiso mínimo necesario.


Permisos especiales: setuid, setgid y sticky bit

Además de los permisos básicos, Linux tiene tres permisos especiales que a veces verás en servidores:

  • Setuid (s): Cuando se aplica a un ejecutable, hace que el archivo se ejecute con los permisos del propietario, no del usuario que lo ejecuta. Por ejemplo, passwd necesita permisos de root para cambiar contraseñas.
  • Setgid (s): En directorios, hace que los archivos creados dentro hereden el grupo del directorio, en lugar del grupo del usuario que los crea. Muy útil para proyectos colaborativos.
  • Sticky bit (t): En directorios como /tmp, evita que los usuarios borren archivos que no les pertenecen, incluso si tienen permisos de escritura en el directorio.

Se representan con una cuarta cifra en chmod:

  • Setuid = 4
  • Setgid = 2
  • Sticky bit = 1

Por ejemplo, chmod 4755 archivo aplica setuid. chmod 1777 /tmp aplica sticky bit.

[INFO]: No te obsesiones con estos permisos especiales al principio. Son útiles en entornos avanzados, pero para la mayoría de tareas de un sitio web, los permisos estándar (644, 755) son suficientes.


Uso de chmod y chown en un panel de control (Syspanel)

Si estás usando un panel de control como Syspanel (antes conocido como HestiaCP), que se accede a través del puerto 2106, la mayoría de estas operaciones se pueden hacer desde la interfaz gráfica. Sin embargo, entender los comandos te dará más control y te ayudará a diagnosticar problemas.

En Syspanel, normalmente puedes:

  • Ver los permisos de cada archivo desde el administrador de archivos.
  • Cambiar propietario y grupo desde las opciones de configuración de dominios.
  • Ejecutar comandos personalizados desde la terminal integrada (si está habilitada).

Aun así, hay situaciones donde necesitarás usar la terminal por SSH. Por ejemplo, si Syspanel no puede cambiar permisos de archivos del sistema o si necesitas aplicar cambios recursivos masivos.


Preguntas frecuentes (FAQ)

¿Qué diferencia hay entre chmod y chown?

chmod cambia los permisos de lectura, escritura y ejecución. chown cambia el propietario y el grupo del archivo. Son complementarios: primero defines quién es el dueño (chown) y luego qué puede hacer cada uno (chmod).

¿Cómo puedo ver los permisos actuales de un archivo?

Usa ls -l archivo o stat archivo. El comando stat te da información más detallada, incluyendo los permisos en formato numérico.

¿Qué significa el número 777 en chmod?

Significa que todos (propietario, grupo y otros) tienen permisos completos de lectura, escritura y ejecución. Es muy inseguro y no deberías usarlo en producción.

¿Cómo cambio el propietario de todos los archivos en un directorio?

Usa chown -R nuevo_usuario:grupo /ruta/al/directorio. La opción -R es recursiva y aplica el cambio a todos los archivos y subdirectorios.

¿Por qué mi servidor web no puede leer mis archivos?

Casi siempre es un problema de permisos o propiedad. Asegúrate de que el usuario del servidor web (generalmente www-data en Debian/Ubuntu o apache en CentOS) tenga al menos permiso de lectura (r) en los archivos y de ejecución (x) en los directorios.

¿Puedo usar chmod en archivos de Windows?

No. chmod y chown son comandos de Linux/Unix. En Windows, los permisos se gestionan de otra forma (con atributos y ACLs). Si montas un sistema de archivos de Windows en Linux, tendrás que usar opciones de montaje especiales.


Consejos finales para no romper nada

  1. Haz una copia de seguridad antes de cambiar permisos masivamente.
  2. Usa sudo con precaución. Cambiar permisos del sistema puede dejar tu servidor inaccesible.
  3. Prueba cambios en un solo archivo antes de aplicarlos a todo un directorio.
  4. Documenta los permisos de tus archivos importantes para poder restaurarlos si algo sale mal.
  5. Mantén el principio de menor privilegio: da solo los permisos necesarios.

Dominar chmod y chown te convertirá en un administrador de sistemas más competente y evitará dolores de cabeza innecesarios. Con estos comandos, tendrás el control total sobre quién puede hacer qué en tu servidor, manteniendo tu sitio web seguro y funcionando sin problemas.

¿Tienes alguna duda específica? Déjala en los comentarios y te ayudaré a resolverla. ¡Buena suerte con tus permisos linux!

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel