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

Cómo usar chmod y chown en Linux: Permisos de archivos

Actualizado el 1 de noviembre de 2025

¿Por qué son importantes los permisos en Linux?

Cuando trabajas con un servidor o un hosting, los permisos de archivos son la barrera de seguridad que protege tus datos. Sin ellos, cualquier usuario podría leer, modificar o eliminar archivos críticos de tu proyecto. En Linux, cada archivo y carpeta tiene un propietario y un grupo, y los permisos controlan quién puede hacer qué con ellos.

Si alguna vez has visto un error de "Permiso denegado" al intentar subir un archivo o ejecutar un script, entender chmod y chown te sacará de apuros. Son comandos básicos pero poderosos que todo administrador de sistemas, incluso novato, debe dominar.


Los conceptos básicos: usuarios, grupos y otros

Antes de lanzarnos a los comandos, necesitas entender tres roles que interactúan con cualquier archivo:

  • Propietario (u): El usuario que creó el archivo o al que se le asignó la propiedad.
  • Grupo (g): Un conjunto de usuarios que comparten permisos sobre el archivo. Por ejemplo, un grupo de desarrolladores.
  • Otros (o): Cualquier usuario que no sea el propietario ni pertenezca al grupo.

Cada uno de estos roles puede tener tres tipos de permisos:

  • Lectura (r): Permite ver el contenido del archivo o listar el contenido de un directorio.
  • Escritura (w): Permite modificar el contenido del archivo o crear/eliminar archivos dentro de un directorio.
  • Ejecución (x): Permite ejecutar el archivo si es un script o un programa, o acceder a un directorio (entrar en él).

Cuando haces ls -l en tu terminal, verás algo así:

-rw-r--r-- 1 usuario grupo 1234 ene 1 12:00 archivo.txt

Los primeros 10 caracteres (-rw-r--r--) son la clave:

  • El primer carácter indica el tipo (si es d es un directorio, si es - es un archivo normal).
  • Los siguientes 9 caracteres se dividen en tres grupos de tres: permisos del propietario, permisos del grupo y permisos de otros.

En el ejemplo: el propietario tiene rw- (lectura y escritura), el grupo tiene r-- (solo lectura) y otros también tienen r--.


Cómo usar chmod para cambiar permisos

El comando chmod (del inglés change mode) es tu herramienta principal para modificar los permisos de un archivo o directorio. Puedes usarlo de dos maneras: con notación simbólica (más fácil de leer) o con notación numérica (más compacta y común en scripts).

Notación simbólica (con letras)

Esta forma es muy intuitiva porque usas letras para indicar a quién cambias los permisos y qué permiso otorgas o quitas.

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), = (establece exactamente ese permiso).
  • Permiso: r, w, x.

Ejemplos prácticos

Para dar permiso de ejecución al propietario de un script:

chmod u+x script.sh

Para quitar la escritura al grupo y a otros:

chmod go-w archivo.txt

Para dar todos los permisos (lectura, escritura y ejecución) a todos los usuarios:

chmod a+rwx archivo

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

chmod u+rwx,go+rx script.sh

Esto le da al propietario todos los permisos, y al grupo y otros solo lectura y ejecución.

Notación numérica (octal)

Aquí es donde muchos se pierden, pero es más poderosa y precisa. 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 rol, y obtienes un número de tres dígitos (propietario, grupo, otros).

Por ejemplo:

  • 7 = 4+2+1 (lectura, escritura y ejecución)
  • 6 = 4+2 (lectura y escritura)
  • 5 = 4+1 (lectura y ejecución)
  • 4 = 4 (solo lectura)

Entonces, para dar permisos completos al propietario, lectura y ejecución al grupo, y solo lectura a otros:

chmod 754 archivo.txt

El primer dígito (7) es para el propietario, el segundo (5) para el grupo y el tercero (4) para otros.

Permisos especiales (setuid, setgid, sticky bit)

A veces verás un cuarto dígito al principio, como chmod 4755. Ese dígito controla permisos especiales:

  • 4 (setuid): El archivo se ejecuta con los permisos del propietario, no del usuario que lo ejecuta.
  • 2 (setgid): El archivo se ejecuta con los permisos del grupo.
  • 1 (sticky bit): En directorios, solo el propietario del archivo puede eliminarlo, aunque otros tengan permisos de escritura en el directorio (típico en /tmp).

Un ejemplo común es chmod 1777 /tmp para mantener el sticky bit.


Cómo usar chown para cambiar propietario y grupo

El comando chown (change owner) te permite cambiar quién es el propietario de un archivo y a qué grupo pertenece. Esto es esencial cuando transfieres archivos entre usuarios o cuando configuras un servidor web y necesitas que el usuario del servidor (como www-data en Apache o nginx) pueda acceder a ciertos archivos.

La sintaxis básica es:

chown propietario:grupo archivo

Por ejemplo, para hacer que el usuario juan sea el propietario y el grupo desarrolladores el grupo del archivo:

chown juan:desarrolladores proyecto.zip

Si solo quieres cambiar el propietario y dejar el grupo igual:

chown juan proyecto.zip

Si solo quieres cambiar el grupo:

chown :desarrolladores proyecto.zip

[TIP]: Usa chown -R para aplicar los cambios de forma recursiva a todos los archivos y carpetas dentro de un directorio. Por ejemplo:

chown -R juan:desarrolladores /home/juan/proyecto

Esto es muy útil cuando mueves un proyecto completo a otro usuario.


Escenarios comunes y ejemplos reales

1. Arreglar permisos tras subir archivos por FTP

Es muy típico que al subir archivos con un cliente FTP, estos queden con permisos muy abiertos (por ejemplo 777) o con el propietario incorrecto. Para un hosting seguro, los archivos deben tener permisos 644 y los directorios 755.

# Para archivos
find /ruta/a/tu/web -type f -exec chmod 644 {} \;

# Para directorios
find /ruta/a/tu/web -type d -exec chmod 755 {} \;

2. Hacer ejecutable un script de Python o Bash

Si tienes un script backup.py y quieres ejecutarlo directamente con ./backup.py, necesitas darle permiso de ejecución:

chmod +x backup.py

3. Configurar un servidor web

Si usas Apache o Nginx, el usuario del servidor necesita leer los archivos de tu sitio. Asegúrate de que el propietario sea tu usuario y el grupo sea el del servidor (por ejemplo www-data):

chown -R tu_usuario:www-data /var/www/mi_sitio

Luego dale permisos de lectura y ejecución al grupo:

chmod -R 750 /var/www/mi_sitio

4. Compartir archivos con un grupo de trabajo

Si varios usuarios deben trabajar sobre los mismos archivos, crea un grupo común y asigna los archivos a ese grupo con permisos de escritura:

sudo groupadd equipo
sudo usermod -a -G equipo juan
sudo usermod -a -G equipo maria
chown -R root:equipo /srv/datos
chmod -R 770 /srv/datos

Ahora juan y maría pueden leer y escribir en /srv/datos, pero otros no.


Errores frecuentes y cómo evitarlos

El error "Permission denied"

Si intentas leer un archivo y te da este error, lo primero es verificar con ls -l quién es el propietario y qué permisos tiene tu usuario. Puede que necesites usar sudo o cambiar los permisos.

Usar 777 indiscriminadamente

Es el error más común y peligroso. chmod 777 le da todos los permisos a todos. En un servidor web, esto permite que cualquier usuario modifique tus archivos. Si alguien sube un script malicioso, podría tomar control de tu sitio.

[WARNING]: Nunca uses chmod 777 en producción. Es una puerta abierta a ataques. Si tienes problemas de permisos, identifica qué usuario necesita acceso y ajústalo de forma precisa.

Olvidar la recursividad

Si cambias permisos solo a un directorio pero no a su contenido, los archivos internos mantendrán los permisos antiguos. Recuerda el -R para cambios recursivos.

Cambiar el propietario de archivos del sistema

No juegues con chown en archivos del sistema como /etc, /usr o /var. Podrías dejar tu sistema inoperable.


Comprobación rápida de permisos

Siempre que dudes, usa estos comandos para verificar:

  • ls -l para ver permisos de archivos en el directorio actual.
  • stat archivo para ver información detallada incluyendo propietario y permisos.
  • namei -l /ruta/completa para ver los permisos de cada componente de una ruta.

Preguntas frecuentes (FAQ)

¿Qué diferencia hay entre chmod y chown?

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

¿Cómo puedo cambiar los permisos de todos los archivos de un directorio?

Usa la opción recursiva -R:

chmod -R 755 /ruta/del/directorio

¿Qué significan los números en chmod 755?

Cada dígito es la suma de permisos para un rol (propietario, grupo, otros). 7 es lectura (4) + escritura (2) + ejecución (1). 5 es lectura (4) + ejecución (1). 755 significa que el propietario tiene todos los permisos, y el grupo y otros solo lectura y ejecución.

¿Necesito sudo para usar chown?

Sí, normalmente sí. Cambiar el propietario de un archivo es una acción privilegiada. Si intentas cambiar la propiedad de un archivo que no te pertenece, el sistema te lo impedirá. Usa sudo chown si tienes permisos de administrador.

¿Cómo hago que un archivo sea ejecutable?

chmod +x archivo.sh

Luego puedes ejecutarlo con ./archivo.sh.

¿Qué hago si mi hosting usa Syspanel?

Si tu hosting utiliza el panel de control Syspanel (accesible en el puerto 2106), los permisos se gestionan normalmente desde el gestor de archivos del panel, pero también puedes usar chmod y chown por SSH si tienes acceso. Syspanel respeta los permisos estándar de Linux, así que todo lo explicado aquí aplica directamente.


Resumen y buenas prácticas

  • Los permisos son tu primera línea de defensa en un sistema Linux.
  • Usa chmod para definir qué acciones se permiten y chown para asignar la propiedad.
  • Prefiere la notación numérica para scripts y la simbólica para comandos rápidos.
  • Nunca des más permisos de los necesarios. El principio de menor privilegio es clave.
  • Antes de cambiar permisos en producción, haz una copia de seguridad o un snapshot si puedes.

Dominar chmod y chown te dará control total sobre tu servidor y evitará dolores de cabeza. Con estos conceptos, ya puedes administrar archivos con confianza y resolver la mayoría de problemas de permisos que aparecen en el día a día de un SysAdmin.

[INFO]: Si estás usando un hosting con Syspanel, recuerda que el acceso al panel es a través del puerto 2106, y que los permisos que configures por SSH se reflejarán en el panel y viceversa.

¿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