AccesoInicial

Permisos de archivos: lectura, escritura y ejecucion

Aprende como Linux controla quien puede leer, escribir y ejecutar cada archivo y directorio, y como interpretar y modificar permisos.

Principiantelinuxpermissions

Introducción

En la leccion anterior aprendiste que cada proceso en Linux se ejecuta como un usuario que pertenece a grupos. Pero saber quien eres no es suficiente. Lo que determina que puedes hacer con un archivo concreto es su sistema de permisos.

En esta leccion vas a aprender como funcionan los permisos de lectura, escritura y ejecucion, como leerlos en la salida de ls -l, y como modificarlos con chmod. Este es el mecanismo central de control de acceso en Linux, y entenderlo es indispensable para la seguridad ofensiva.

¿Por que importan los permisos?

Los permisos son la primera linea de defensa del sistema. Deciden quien puede leer un archivo de configuracion con contraseñas, quien puede ejecutar un script, y quien puede escribir en un directorio critico.

En escalada de privilegios, los permisos mal configurados son uno de los vectores mas comunes. Un archivo ejecutable propiedad de root con permisos demasiado abiertos, un directorio donde cualquier usuario puede escribir, un script de cron que un usuario no privilegiado puede modificar: todos estos son errores de permisos que un atacante puede explotar.

El modelo de permisos

Tres permisos, tres niveles

Cada archivo y directorio en Linux tiene tres tipos de permiso:

  • r (read, lectura): permite ver el contenido del archivo o listar el contenido del directorio
  • w (write, escritura): permite modificar el archivo o crear/eliminar archivos dentro del directorio
  • x (execute, ejecucion): permite ejecutar el archivo como programa o entrar en el directorio con cd

Estos tres permisos se aplican en tres niveles:

  • Propietario (user, u): el usuario dueño del archivo
  • Grupo (group, g): los usuarios que pertenecen al grupo del archivo
  • Otros (others, o): todos los demas usuarios del sistema

Leyendo la cadena de permisos

Cuando ejecutas ls -l, la primera columna muestra los permisos:

text
1-rwxr-xr--  1 user user 1024 mar 15 10:00 script.sh
2

La cadena -rwxr-xr-- se lee asi:

  • Posicion 0: tipo (- = archivo, d = directorio)
  • Posiciones 1-3: permisos del propietariorwx (puede leer, escribir y ejecutar)
  • Posiciones 4-6: permisos del grupor-x (puede leer y ejecutar, pero no escribir)
  • Posiciones 7-9: permisos de otrosr-- (solo puede leer)

Permisos en la practica

Crea un archivo y observa sus permisos predeterminados:

bash
1$ touch ejemplo.txt
2$ ls -l ejemplo.txt
3-rw-r--r-- 1 user user 0 mar 15 10:00 ejemplo.txt
4

Los permisos por defecto son rw-r--r--: el propietario puede leer y escribir, el grupo y otros solo pueden leer. Nadie puede ejecutarlo (no tiene x).

Modificar permisos con chmod

chmod cambia los permisos de un archivo. Hay dos formas de usarlo. La forma simbolica es mas intuitiva:

bash
1$ chmod u+x ejemplo.txt
2$ ls -l ejemplo.txt
3-rwxr--r-- 1 user user 0 mar 15 10:00 ejemplo.txt
4

u+x significa: al propietario (u), añadirle (+) permiso de ejecucion (x). La sintaxis es quien+/-permiso:

  • u, g, o, a (propietario, grupo, otros, todos)
  • + añade, - quita, = establece exactamente
  • r, w, x

Algunos ejemplos comunes:

bash
1$ chmod g+w ejemplo.txt    # grupo puede escribir
2$ chmod o-r ejemplo.txt    # otros no pueden leer
3$ chmod a+x script.sh      # todos pueden ejecutar
4

Notacion octal

La forma octal usa numeros. Cada permiso tiene un valor: r=4, w=2, x=1. Se suman para cada nivel:

  • rwx = 4+2+1 = 7
  • r-x = 4+0+1 = 5
  • r-- = 4+0+0 = 4
bash
1$ chmod 755 script.sh
2$ ls -l script.sh
3-rwxr-xr-x 1 user user 0 mar 15 10:00 script.sh
4

755 significa: propietario puede todo (7), grupo puede leer y ejecutar (5), otros pueden leer y ejecutar (5). Este es el permiso tipico para scripts ejecutables.

Otros valores comunes:

  • 644: archivos normales (propietario lee/escribe, el resto solo lee)
  • 700: solo el propietario puede hacer todo (privado)
  • 777: todos pueden todo (casi nunca es buena idea)

Permisos como mapa de acceso

Cuando analizas permisos en un sistema, la pregunta clave es: ¿quien puede hacer que con este archivo? La respuesta depende de tres datos:

  1. ¿Quien es el propietario del archivo?
  2. ¿A que grupo pertenece?
  3. ¿Que permisos tiene cada nivel?

Si encuentras un archivo propiedad de root con permisos 777, cualquier usuario puede modificarlo. Si ese archivo es un script que root ejecuta periodicamente, tienes un camino directo a ejecutar codigo como root. Este tipo de analisis es la base de la enumeracion de permisos en escalada de privilegios.

Errores comunes

Advertencia

Confundir permisos de archivo con permisos de directorio. El permiso x en un archivo significa que puedes ejecutarlo. El permiso x en un directorio significa que puedes entrar con cd. Sin x en un directorio, no puedes acceder a su contenido aunque tengas r.

Advertencia

Usar `chmod 777` como solucion rapida. Si un archivo "no funciona" y le pones chmod 777, estas dando acceso total a todos los usuarios. Es una solucion que crea un problema de seguridad. Identifica que permiso falta y ajusta solo ese.

Consejo

Lee permisos de izquierda a derecha. Practica leyendo cadenas de permisos en voz alta: "propietario puede leer, escribir y ejecutar; grupo puede leer y ejecutar; otros solo leen." Cuanto mas rapido puedas interpretar una cadena de permisos, mas eficiente seras al enumerar un sistema.

Conclusión

Los permisos en Linux controlan quien puede leer, escribir y ejecutar cada archivo y directorio. Se aplican en tres niveles (propietario, grupo, otros) y se modifican con chmod usando notacion simbolica o octal. Entender y leer permisos rapidamente es una habilidad critica tanto para administrar sistemas como para encontrar configuraciones inseguras. En la siguiente leccion aprenderas a ver y controlar los procesos que se estan ejecutando en el sistema.