Consultas, desarrollo de programas y petición de presupuestos:

jueves, 12 de julio de 2012

Superar las limitaciones del los servicios de permisos básicos de gnu/linux.

Hay situaciones que se requieren tener niveles especificos. Un usuario que necesita ejecutar un proceso (por ejemplo cambiar tu propia contraseña), con privilegios de root.

Acceso a archivos especiales:
El Archivo /etc/shadow no tenemos acceso un usuario normal, pero la contraseña que quieras cambiar, tienes que tener acceso a el para escribirla.

Para permitir eso, algunos procesos tienen que tener privilegios root.

Suid: establece el id del usuario.
Los programas que lo tienen activado, hace que el usuario que lo pone en marcha fuera el dueño del fichero.

Ejemplo para explicarlo:
ls -l /usr/bin/passwd
El nombre del fichero lo pone rojo, fijaos en los permisos:
- rws r-x r-x 1
fichero s=suid cantidad de enlaces que tenia el fichero.

Nota:
Tiene que tener el permiso de ejecución x, ya que si no pondria S y no valdria para nada.

El dueño del programa passwd es el root, con el indicativo s, indicamos que cuando se ejecute el programa, lo hagas como sifueras el dueño.

Ahora ejecutamos:
ls -l /etc/shadow

Leerlo solo lo puede leer el root, y los del grupo shadow. El usuario normal no tiene permisos para escribir en el archivo.

El programa que se encargue de escribir en ese fichero (passwd), si tiene activado s, lo podemos ejecutar como su fueramos su dueño (el root) y cambiar ese archivo shadow.


SGID:
Igual pero a nivel de grupo.

STI:
Hoy en dia no es demasiado útil, pero tiene su gracia. Lo que hacia que un programa que se va a ejecutar muy a menuda permanezca siempre en memoria. Asi conseguimos que solo se lea una vez y se ejecute mas rápidamente las otras veces. Puede dar el problema de que si tienes muchos programas con ese bit activado, te quedes sin memoria.

Hoy si tiene sentido, para en lugar que se active en fichero se active en directorios. Escribir un directorio podemos modificar, crear y borrar ficheros o subdirectorios. Si tenemos todos los ususarios activados, puedes borrar todos los ficheros de otros usuarios. Si el STI esta activado, solo puedes borrar ficheros cuyo dueño solo seas tu. (es una medida de seguridad)
Por ejemplo el directorio /tmp, podemos borrar los ficheros temporales de todos los usuarios, para evitar eso le damos el permiso STI, y asi solo podria borrar solos los temporales generados por ti.

Ejemplo: ls -l /
Vemos que en la carpeta tmp, pone: drwxrwxrwt

No hay comentarios:

Publicar un comentario