destapeman
FUCK PUSSYS, YES BADASS
Moderador
Paladín de Nodo
Jinete de Nodo
Burgués de Nodo
Noderador
Nodero
Noder
Buenas tardes Noders,
Otro post educativo para la comunidad donde os enseñaré la importancia de saber utilizar la herramienta chmod y lo crítico que puede ser para un host, infraestructura, servicio... el tener una mala configuración de permisos.
Antes de nada veamos que es chmod:
Vista la primera parte del man, nos ha quedado claro que chmod es un comando, con el que vamos a poder modificar los permisos de ficheros, directorios y todo lo que se nos ocurra y, la nomenclatura para poder utilizarlo... bueno, eso todavía no, ya que nos indica que podemos cambiarlo del modo "simbólico" o del modo octal, vamos a entrar en detalles:
El formato del modo simbólico es [ugoa...][[+-=][perms...]...] donde perms es cero o más letras del conjunto rwxXst, o una sola letra del conjunto ugo. Se pueden dar múltiples modos simbólicos, separados por comas.
En lugar de una o varias de estas letras, se puede especificar exactamente una de las letras ugo: los permisos concedidos al usuario propietario del archivo (u), los permisos concedidos a otros usuarios miembros del grupo del archivo (g) y los permisos concedidos a usuarios que no se encuentren en ninguna de las dos categorías anteriores (o).
Vamos a hacer una prueba simple para confirmar lo que os he dicho, según lo visto anterior, cualquier usuario podría leer lo que pone en el archivo test.sh pero solo el usuario usuario podría modificar su contenido.
Como se ha quedado un post bastante largo hasta aquí, el modo octal lo haré en otro post, no tardaré mucho en subirlo porque tengo el texto más menos desarrollado.
Tened en cuenta el peligro que tiene un mal uso de este comando, si os pasáis dando permisos a un archivo podéis encontraros con una brecha de seguridad muy gorda. Habéis visto que con el comando echo que es un comando que no necesita permisos de administrador, podéis modificar el contenido de un archivo si tenéis permisos para ello. Si por ejemplo un atacante ve un archivo con permisos de ejecución y lectura para cualquier usuario, podría sobrescribir el contenido de ese fichero añadiendo las órdenes que quisiese con echo y descargarse documentación sensible si el propietario del dichero por ejemplo es root o joderos parte del sistema borrando binarios haciendo la administración del servidor imposible o realizar conexiones maliciosas a sitios peligrosos... en fin... lo que se os pueda ocurrir.
Un saludo.
Otro post educativo para la comunidad donde os enseñaré la importancia de saber utilizar la herramienta chmod y lo crítico que puede ser para un host, infraestructura, servicio... el tener una mala configuración de permisos.
Antes de nada veamos que es chmod:
- Para ello ejecutaremos
Bash:
man chmod
- Nos indica con ese (1) que se trata de un comando, a parte del descriptivo "User Commands" que vemos en el encabezado. Para un archivo de configuración por ejemplo nos aparecería como (5):
- Vemos que la descripción del nombre nos da un pequeño resumen de lo que hace el comando, modifica los permisos en modo bit.
- Y en la sinopsis del comando, la nomenclatura para poder utilizarlo:
- Nos indica con ese (1) que se trata de un comando, a parte del descriptivo "User Commands" que vemos en el encabezado. Para un archivo de configuración por ejemplo nos aparecería como (5):
Vista la primera parte del man, nos ha quedado claro que chmod es un comando, con el que vamos a poder modificar los permisos de ficheros, directorios y todo lo que se nos ocurra y, la nomenclatura para poder utilizarlo... bueno, eso todavía no, ya que nos indica que podemos cambiarlo del modo "simbólico" o del modo octal, vamos a entrar en detalles:
MODO SIMBÓLICO
El formato del modo simbólico es [ugoa...][[+-=][perms...]...] donde perms es cero o más letras del conjunto rwxXst, o una sola letra del conjunto ugo. Se pueden dar múltiples modos simbólicos, separados por comas.
¿Qué es ugoa?
Las letras ugoa controlan el acceso de los usuarios al archivo que se modificará:- El usuario propietario (u).
- Otros usuarios del grupo del archivo (g).
- Resto de usuarios que no pertenezcan al grupo del archivo (o).
- Todos los usuarios (a).
¿Cómo funcionan los operadores?
Los operadores sirven para añadir o quitar permisos a los usuarios seleccionados en el anterior punto:- El operador + hace que los bits de permisos del archivo seleccionado, se añada a los bits de permisos del archivo.
- El operador - hace que se eliminen.
- El operador = hace que se añadan y que se eliminen los permisos no especificados.
¿Qué es rwxXst?
Las letras rwxXst son los permisos persé que queramos modificar, quitar o añadir a los usuarios seleccionados previamente:- Permisos de lectura (r).
- Permisos de escritura (w).
- Permisos de ejecución (o buscar en directorios) (x).
- Permisos de ejecución/búsqueda sólo si el archivo es un directorio o ya tiene permiso de ejecución para algún usuario (X).
- Establecer el ID de usuario o grupo en ejecución (s).
- Indicador de borrado restringido o sticky bit (quien puede eliminar el archivo/directorio) (t).
En lugar de una o varias de estas letras, se puede especificar exactamente una de las letras ugo: los permisos concedidos al usuario propietario del archivo (u), los permisos concedidos a otros usuarios miembros del grupo del archivo (g) y los permisos concedidos a usuarios que no se encuentren en ninguna de las dos categorías anteriores (o).
Veamos unos ejemplos básicos:
- Primero vamos a crear un archivo con contenido, para ello utilizaré la forma más sencilla y correcta de crearlo, que es usando redirecciones:
-
Bash:
echo "echo test" > test.sh
Vamos a hacer una prueba simple para confirmar lo que os he dicho, según lo visto anterior, cualquier usuario podría leer lo que pone en el archivo test.sh pero solo el usuario usuario podría modificar su contenido.
- Para ello primero vamos a comprobar que podemos leer el contenido de test.sh con el usuario usuario y pepe. Con el comando cat podemos leer por pantalla el contenido del archivo:
- Y como esperábamos, podemos leer el contenido del archivo, pero ¿podremos escribir sobre él con ambos usuarios?
- Como vimos anteriormente, se cumple lo que dije. Actualmente solo el usuario propietario del archivo tiene permisos para escribir sobre el mismo, de la misma forma que tampoco podremos ejecutarlo ya que NO tenemos actualmente permisos de ejecución.
- Ahora que tenemos claro los permisos con los que cuenta el archivo test.sh, vamos a modificarlos, por ejemplo para que el usuario propietario pueda ejecutar el script:
-
Bash:
chmod u+x test.sh
- Se le añade la x al grupo de bits del propietario y confirmamos que se ejecuta el script. Pepe por el contrario sigue sin poder ejecutar el script.
- Lo siguiente que probaré, será a darle permisos al grupo del propietario, ya que pepe está dentro del grupo usuario (grupo que tiene el usuario usuario) por lo que dando permisos al grupo del propietario, pepe podría modificar y ejecutar el script. Ejecutaré el siguiente comando para ello:
-
Bash:
chmod g+wx test.sh
- Comprobamos ahora que pepe puede modificar y ejecutar el archivo:
Pepe y usuario pertenecen al mismo departamento, por eso queremos que ambos puedan ejecutar, leer y modificar el archivo pero el resto de usuario no, ¿por qué un usuario de contabilidad debería de poder leer o escribir sobre un programa al que no debería de estar autorizado?
- Para ello vamos a removerle todos los permisos al resto de usuarios:
-
Bash:
chmod o-r test.sh ## aquí por ejemplo, sabemos que no tiene ningún permiso más allá de lectura para el grupo de usuarios "o" pero si por ejemplo contase con más permisos, habría que añadirlos
Como se ha quedado un post bastante largo hasta aquí, el modo octal lo haré en otro post, no tardaré mucho en subirlo porque tengo el texto más menos desarrollado.
Tened en cuenta el peligro que tiene un mal uso de este comando, si os pasáis dando permisos a un archivo podéis encontraros con una brecha de seguridad muy gorda. Habéis visto que con el comando echo que es un comando que no necesita permisos de administrador, podéis modificar el contenido de un archivo si tenéis permisos para ello. Si por ejemplo un atacante ve un archivo con permisos de ejecución y lectura para cualquier usuario, podría sobrescribir el contenido de ese fichero añadiendo las órdenes que quisiese con echo y descargarse documentación sensible si el propietario del dichero por ejemplo es root o joderos parte del sistema borrando binarios haciendo la administración del servidor imposible o realizar conexiones maliciosas a sitios peligrosos... en fin... lo que se os pueda ocurrir.
Un saludo.