Chmod en Linux: guía rápida de permisos de archivos
Los permisos de archivos en Linux determinan quién puede leer, escribir y ejecutar archivos, y el comando chmod te da un control total sobre ellos. En esta guía aprenderás paso a paso cómo funciona chmod, incluidos los ajustes numéricos y simbólicos, los errores más frecuentes y consejos de seguridad.
1. ¿Qué son los permisos de archivos en Linux?
En Linux y Unix, cada archivo y cada carpeta tiene determinados permisos, que establecen quién tiene acceso y qué puede hacer con ellos. Estos permisos se dividen en tres categorías:
- Propietario (user - u): el usuario que ha creado el archivo.
- Grupo (group - g): otros usuarios que forman parte del mismo grupo.
- Otros (others - o): cualquier persona que no sea el propietario ni esté en el grupo.
Cada archivo tiene tres permisos:
- r (read): leer un archivo o ver el contenido de una carpeta.
- w (write): modificar o eliminar un archivo.
- x (execute): ejecutar un archivo (por ejemplo, un script o un programa).
Puedes ver los permisos de un archivo con:
ls -l bestand.txt
Esto muestra, por ejemplo:
-rw-r--r-- 1 gebruiker groep 1234 mrt 17 10:00 bestand.txt
Aquí ves:
- rw- (lectura y escritura para el propietario)
- r-- (solo lectura para el grupo)
- r-- (solo lectura para los demás)
2. Uso básico de chmod
La sintaxis general de chmod es:
chmod [opties] rechten bestand
Ejemplos:
- chmod 755 script.sh → hace que un script sea ejecutable para todos.
- chmod 644 document.txt → solo el propietario puede escribir, los demás pueden leer.
3. Modo numérico: chmod con números
Puedes establecer los permisos con una notación octal (números). Cada permiso tiene un valor numérico:
- r = 4 (read)
- w = 2 (write)
- x = 1 (execute)
Combinaciones:
- 7 (rwx) → lectura, escritura y ejecución.
- 6 (rw-) → lectura y escritura.
- 5 (r-x) → lectura y ejecución.
- 4 (r--) → solo lectura.
Ejemplo:
chmod 755 script.sh
Con esto, el propietario obtiene todos los permisos (rwx = 7), mientras que el grupo y los demás solo obtienen permisos de lectura y ejecución (r-x = 5).
4. Modo simbólico: chmod con letras
En lugar de números, también puedes cambiar los permisos con símbolos:
- u (user: propietario)
- g (group: grupo)
- o (others: otros usuarios)
- a (all: todos)
Y con operadores:
- + (añadir permisos)
- - (quitar permisos)
- = (establecer los permisos exactos)
Ejemplos:
chmod u+x script.sh # Geeft de eigenaar uitvoerrechten chmod g-w bestand.txt # Verwijdert schrijfrechten van de groep chmod o= bestand.txt # Verwijdert alle rechten van anderen 5. Ajustes de chmod más habituales
Estos son algunos ajustes estándar y cuándo se usan:
| Código chmod | Descripción | Aplicación |
|---|---|---|
| 755 | El propietario tiene todos los permisos; los demás, solo lectura y ejecución | Scripts y programas |
| 644 | El propietario puede escribir; los demás pueden leer | Archivos de configuración, páginas web |
| 700 | Solo el propietario tiene acceso | Archivos privados, claves SSH |
| 600 | Solo el propietario puede leer y escribir | Archivos sensibles, como contraseñas |
| 777 | Todos tienen todos los permisos (¡peligroso!) | Solo en casos excepcionales |
6. Opciones avanzadas
a) Usar chmod de forma recursiva (-R)
¿Quieres aplicar chmod a una carpeta entera, incluidas sus subcarpetas y archivos? Usa la opción -R:
chmod -R 755 mijnmap/
Así, todos los archivos y subcarpetas dentro de mijnmap/ obtienen los mismos permisos.
b) SUID, SGID y el sticky bit
Además de los permisos estándar, existen tres bits especiales:
- SUID (Set User ID - 4xxx): hace que un archivo se ejecute siempre como su propietario.
- SGID (Set Group ID - 2xxx): los archivos nuevos de una carpeta reciben automáticamente los permisos de grupo.
- Sticky bit (1xxx): impide que otros eliminen archivos en una carpeta de uso compartido.
Ejemplo:
chmod 4755 script.sh # SUID instellen chmod 2755 mijnmap/ # SGID instellen chmod 1777 /tmp # Sticky bit instellen (gebruikelijk voor de /tmp map) 7. Aplicaciones prácticas
a) Hacer que un script sea ejecutable
¿Tienes un script que quieres ejecutar? Dale permisos de ejecución:
chmod +x mijnscript.sh ./mijnscript.sh
b) Proteger archivos contra cambios
¿Quieres proteger un archivo contra cambios no deseados?
chmod 444 belangrijk.txt # Alleen-lezen voor iedereen
c) Permisos correctos para las claves SSH
Las claves SSH requieren permisos específicos:
chmod 600 ~/.ssh/id_rsa # Privésleutel (alleen eigenaar mag lezen/schrijven) chmod 644 ~/.ssh/id_rsa.pub # Publieke sleutel (iedereen mag lezen) 8. Errores frecuentes y riesgos de seguridad
a) Por qué chmod 777 suele ser una mala idea
Dar todos los permisos (chmod 777) a un archivo o una carpeta significa que todos pueden hacer de todo. Es un gran riesgo de seguridad, sobre todo en servidores web:
chmod 777 /var/www/html/index.php # Fout! Iedereen kan dit bestand aanpassen.
Mejor:
chmod 644 /var/www/html/index.php # Alleen de eigenaar kan schrijven.
b) Errores habituales
- Olvidar dar permisos de ejecución a un script:
Solución:chmod +x script.sh - Permisos incorrectos en las claves SSH:
Solución:chmod 600 ~/.ssh/id_rsa
9. Herramientas adicionales para gestionar permisos
Además de chmod, hay otros comandos útiles:
- chown: cambia el propietario de un archivo.
chown gebruiker:groep bestand.txt - chgrp: cambia solo el grupo de un archivo.
chgrp groepnaam bestand.txt - umask: determina los permisos predeterminados al crear archivos nuevos.
umask 022 # Nieuwe bestanden krijgen standaard 644, mappen 755
10. Conclusión: buenas prácticas
- Ten cuidado con chmod 777: úsalo solo cuando sea realmente necesario.
- Usa la notación numérica o la simbólica según la situación.
- Haz que los scripts sean ejecutables con chmod +x.
- Protege los archivos sensibles, como las claves SSH, con chmod 600.
- Usa chmod -R solo si sabes con seguridad lo que haces.
Con estos conocimientos puedes gestionar los permisos de archivos en Linux de forma segura y eficaz.
¿Buscas servidores dedicados? Consulta nuestra oferta.
A 0 de 0 personas les ha resultado útil