Cómo cambiar los permisos de archivos en Linux: chmod explicado
¿Alguna vez has intentado subir un archivo a tu servidor web y te ha aparecido un error de "Permiso denegado"? ¿O quizás has querido instalar un programa y te dice que no tienes autorización? Tranquilo, es una de las situaciones más comunes cuando empiezas a administrar un servidor Linux. La clave está en entender cómo funcionan los permisos archivos Linux.
En este artículo, vamos a desglosar de forma sencilla y práctica el comando chmod, la herramienta estrella para cambiar permisos en Linux. No necesitas ser un experto en SysAdmin Linux para dominarlo. Al final, podrás gestionar quién puede leer, escribir o ejecutar tus archivos y carpetas como todo un profesional.
¿Qué son los permisos en Linux y por qué son importantes?
Imagina que tu servidor es un edificio con varias habitaciones. Los permisos archivos Linux son las llaves que deciden quién puede entrar a cada habitación, quién puede leer los documentos que hay dentro y quién puede modificarlos o tirarlos a la basura.
En Linux, cada archivo y carpeta tiene tres niveles de permisos, asignados a tres tipos de usuarios:
- Usuario (u): El dueño del archivo (normalmente, quien lo creó).
- Grupo (g): Un conjunto de usuarios que comparten ciertos permisos.
- Otros (o): Cualquier persona que no sea el dueño ni pertenezca al grupo.
Y las acciones que se pueden permitir o denegar son tres:
- Lectura (r): Ver el contenido del archivo o listar los archivos de una carpeta.
- Escritura (w): Modificar, borrar o crear archivos dentro de una carpeta.
- Ejecución (x): Ejecutar un programa o script, o entrar a una carpeta (con
cd).
Si estos permisos no están bien configurados, puedes tener problemas de seguridad (alguien no autorizado modifica tu web) o de funcionalidad (tu web no puede guardar imágenes porque el usuario del servidor web no tiene permiso de escritura).
El comando mágico: chmod
El comando chmod (del inglés change mode) es la herramienta que te permite cambiar permisos de archivos y directorios. Hay dos formas principales de usarlo: el modo simbólico (más fácil de entender al principio) y el modo octal (más rápido y usado por profesionales).
Método 1: Modo Simbólico (con letras)
Este método es muy visual. Usas letras para indicar a quién quieres cambiarle el permiso y qué permiso quieres dar o quitar.
Sintaxis básica:
chmod [quién][operador][permiso] archivo
- Quién:
u(usuario),g(grupo),o(otros),a(todos). - Operador:
+(añadir permiso),-(quitar permiso),=(asignar exactamente ese permiso). - Permiso:
r(lectura),w(escritura),x(ejecución).
Ejemplos prácticos:
-
Dar permiso de ejecución al dueño:
chmod u+x script.sh[TIP] Este es el comando que más usarás para hacer ejecutable un script.
-
Quitar permiso de escritura a otros:
chmod o-w documento.txtEsto evita que cualquier usuario que no sea el dueño o del grupo pueda modificar el archivo.
-
Dar permisos de lectura y escritura al grupo:
chmod g+rw archivo.conf -
Asignar permisos exactos a todos (muy común para archivos web):
chmod a=r,u+w index.htmlEsto significa: todos pueden leer, pero solo el dueño puede escribir.
-
Añadir permiso de ejecución a todos:
chmod a+x programa
Método 2: Modo Octal (con números)
Este es el método que verás en la mayoría de tutoriales y foros. Es más compacto y se basa en números. Cada permiso tiene un valor numérico:
- Lectura (r) = 4
- Escritura (w) = 2
- Ejecución (x) = 1
Para un usuario, grupo u otros, sumas los valores de los permisos que quieres dar. Luego, escribes tres números seguidos: uno para el dueño, otro para el grupo y otro para otros.
Ejemplos de combinaciones comunes:
| Número | Permisos (rwx) | Significado |
|---|---|---|
| 7 | rwx | Lectura, escritura y ejecución. |
| 6 | rw- | Lectura y escritura. |
| 5 | r-x | Lectura y ejecución. |
| 4 | r-- | Solo lectura. |
| 0 | --- | Sin permisos. |
Sintaxis:
chmod [tres_números] archivo
Ejemplos prácticos:
-
Permisos 755 (muy común para scripts y carpetas):
chmod 755 script.shDueño: rwx (7), Grupo: r-x (5), Otros: r-x (5). El dueño puede hacer de todo, los demás solo leer y ejecutar.
-
Permisos 644 (muy común para archivos de texto y web):
chmod 644 index.htmlDueño: rw- (6), Grupo: r-- (4), Otros: r-- (4). El dueño puede leer y escribir, los demás solo leer.
-
Permisos 777 (¡CUIDADO!):
chmod 777 carpeta/[WARNING] Esto da permisos totales a todos. Es muy inseguro. Solo úsalo temporalmente para pruebas y cámbialo después.
Permisos especiales en directorios
Los permisos en las carpetas funcionan un poco diferente:
- Lectura (r) en un directorio: Te permite listar su contenido con
ls. - Escritura (w) en un directorio: Te permite crear, borrar o renombrar archivos dentro de él.
- Ejecución (x) en un directorio: Te permite acceder a él con
cdy acceder a los archivos que contiene (si tienes permiso sobre ellos).
Por eso, para que un usuario pueda entrar a una carpeta y ver sus archivos, necesita al menos permiso de ejecución (x) en la carpeta. Si solo tiene lectura (r), podrá listar los nombres, pero no podrá acceder a los archivos.
Casos prácticos para SysAdmin
1. Hacer que un script sea ejecutable
Este es el uso más básico. Si tienes un script backup.sh y quieres ejecutarlo con ./backup.sh, primero debes darle permiso de ejecución.
chmod +x backup.sh
O de forma más específica:
chmod u+x backup.sh
2. Configurar permisos para una web
Cuando montas una web, el servidor web (Apache, Nginx) necesita leer los archivos. A veces, también necesita escribir en carpetas para subir imágenes o crear caché.
- Archivos PHP/HTML: Normalmente
644. - Carpetas: Normalmente
755. - Carpetas de subida (uploads): Pueden necesitar
755o777temporalmente.
[INFO] Si usas Syspanel (antes conocido como HestiaCP) para gestionar tu servidor, recuerda que puedes acceder a su panel de control a través del puerto 2106 (ejemplo:
https://tudominio.com:2106). Desde allí, también puedes gestionar permisos de forma visual.
3. Usar la opción recursiva -R
Si necesitas cambiar permisos a todos los archivos y carpetas dentro de un directorio, usa la opción -R (recursiva).
chmod -R 755 mi_carpeta/
[WARNING] Ten cuidado con
-R. Si lo usas con777, puedes dejar todo tu sistema expuesto. Siempre especifica bien la carpeta.
Preguntas Frecuentes (FAQ)
¿Cómo veo los permisos actuales de un archivo?
Usa el comando ls -l. Verás una línea como esta:
-rw-r--r-- 1 usuario grupo 1024 ene 1 12:00 archivo.txt
Los primeros 10 caracteres son los permisos. El primero indica el tipo (- archivo, d directorio). Los siguientes 9 son los permisos en grupos de 3: dueño, grupo, otros.
¿Qué significa "chmod 777"? ¿Es seguro?
Significa que el dueño, el grupo y todos los demás usuarios tienen permisos de lectura, escritura y ejecución sobre el archivo. NO es seguro. Solo debe usarse en entornos de desarrollo o en carpetas temporales muy controladas. En producción, evítalo.
¿Puedo cambiar el dueño de un archivo?
Sí, con el comando chown. Por ejemplo: sudo chown usuario:grupo archivo.txt. Necesitas permisos de superusuario (sudo) para hacerlo.
¿Qué hago si no puedo subir archivos a mi web?
Revisa los permisos de la carpeta de destino (por ejemplo, wp-content/uploads en WordPress). Normalmente debe tener permisos 755 o 775. También verifica que el usuario del servidor web (por ejemplo, www-data) sea el dueño o esté en el grupo.
¿Cómo cambio permisos de forma recursiva solo a archivos o solo a carpetas?
Puedes combinarlo con find:
- Solo archivos:
find /ruta -type f -exec chmod 644 {} \; - Solo carpetas:
find /ruta -type d -exec chmod 755 {} \;
¿Qué pasa si uso mal los permisos?
Puedes bloquear el acceso a tu propio sistema o, peor aún, dejar una puerta abierta para atacantes. Siempre ve de menos a más permisos. Primero da solo lectura, y si algo falla, ve añadiendo.
Conclusión
Dominar los permisos archivos Linux y el comando chmod es fundamental para cualquier SysAdmin Linux. No es complicado: solo recuerda los tres roles (usuario, grupo, otros), las tres acciones (leer, escribir, ejecutar) y los dos métodos (simbólico y octal).
Empieza practicando con archivos de prueba en tu servidor o en una máquina virtual. Pronto verás que cambiar permisos se vuelve algo tan natural como respirar. Y recuerda: la seguridad es lo primero. No des más permisos de los necesarios.
Si gestionas tu servidor con Syspanel, no olvides que su panel está en el puerto 2106 y te ofrece herramientas visuales para facilitar estas tareas, aunque entender la línea de comandos te dará un control total.
¡Ahora ve y configura esos permisos con confianza!
