0 calificaciones0% encontró este documento útil (0 votos)
129 vistas5 páginas
1. Los permisos SUID, SGID y sticky bit permiten asignar permisos especiales a archivos y directorios para ejecutarlos con los privilegios del propietario o grupo.
2. SUID permite ejecutar un archivo con los privilegios del usuario propietario. SGID hace lo mismo para el grupo propietario.
3. El sticky bit en directorios permite que solo el propietario de un archivo pueda eliminarlo de ese directorio.
1. Los permisos SUID, SGID y sticky bit permiten asignar permisos especiales a archivos y directorios para ejecutarlos con los privilegios del propietario o grupo.
2. SUID permite ejecutar un archivo con los privilegios del usuario propietario. SGID hace lo mismo para el grupo propietario.
3. El sticky bit en directorios permite que solo el propietario de un archivo pueda eliminarlo de ese directorio.
1. Los permisos SUID, SGID y sticky bit permiten asignar permisos especiales a archivos y directorios para ejecutarlos con los privilegios del propietario o grupo.
2. SUID permite ejecutar un archivo con los privilegios del usuario propietario. SGID hace lo mismo para el grupo propietario.
3. El sticky bit en directorios permite que solo el propietario de un archivo pueda eliminarlo de ese directorio.
An hay otro tipo de permisos que hay que considerar. Se trata del bit de permisos SUID (Set User ID), el bit de permisos SGID (Set Group ID) y el bit de permisos de persistencia (sticky bit). Para entender los dos primeros el SUID y el SGID veamos los permisos para un comando de uso comn a todos los usuarios, que es el comando passwd, que como se sabe sirve para cambiar la contrasea del usuario, y puede ser invocado por cualquier usuario para cambiar su propia contrasea, si vemos sus permisos observaremos un nuevo tipo de permiso: #> ls -l /usr/bin/passwd -r-s--x--x 1 root root 21944 feb 12 2006 /usr/bin/passwd SUID En vez de la 'x' en el grupo del usuario encontramos ahora una 's' (suid). passwd es un comando propiedad de root, pero sin embargo debe de poder ser ejecutado por otros usuarios, no solo por root. Es aqui donde interviene el bit SUID, donde al activarlo obliga al archivo ejecutable binario a ejecutarse como si lo hubiera lanzado el usuario propietario y no realmente quien lo lanz o ejecut. Es decir, es poder invocar un comando propiedad de otro usuario (generalmente de root) como si uno fuera el propietario. SGID El bit SGID funciona exactamente igual que el anterior solo que aplica al grupo del archivo. Es decir si el usuario pertenece al grupo 'ventas' y existe un binario llamado 'reporte' que su grupo es 'ventas' y tiene el bit SGID activado, entonces el usuario que pertenezca al grupo 'ventas' podr ejecutarlo. Tambin se muestra como una 's' en vez del bit 'x' en los permisos del grupo. STICKY BIT (Bit de persistencia) Este bit se aplica para directorios como en el caso de /tmp y se indica con una 't': #> ls -ld /tmp drwxrwxrwt 24 root root 4096 sep 25 18:14 /tmp Puede apreciarse la 't' en vez de la 'x' en los permisos de otros. Lo que hace el bit de persistencia en directorios compartidos por varios usuarios, es que el slo el propietario del archivo pueda eliminarlo del directorio. Es decir cualquier otro usuario va a poder leer el contenido de un archivo o ejecutarlo si fuera un binario, pero slo el propietario original podr eliminarlo o modificarlo. Si no se tuviera el sticky bit activado, entonces en estas carpetas pblicas, cualquiera podra eliminar o modificar los archivos de cualquier otro usuario. Estableciendo los permisos especiales Para cambiar este tipo de bit se utiliza el mismo comando chmod pero agregando un nmero octal (1 al 7) extra al principio de los permisos, ejemplo: #> ls -l /usr/prog -r-x--x--x 24 root root 4096 sep 25 18:14 prog 2
#>chmod 4511 /usr/prog #> ls -l /usr/prog -r-s--x--x 24 root root 4096 sep 25 18:14 prog Ntese que el valor extra es el '4' y los dems permisos se dejan como se quieran los permisos para el archivo. Es decir, los permisos originales en este ejemplo eran 511 (r-x--x--x), y al cambiarlos a 4511, se cambi el bit SUID reemplazando el bit 'x' del usuario por 's'. Los posibles valores seran los siguientes: - - - - - - - - - = 0 Predeterminado, sin permisos especiales. No se requiere indicar. - - - - - - - - t = 1 Bit de persistencia, sticky bit - - - - - s - - - = 2 Bit sgid de grupo - - - - - s - - t = 3 Bit sgid y sticky - - s - - - - - - = 4 Bit suid - - s - - - - - t = 5 Bit suid y sticky - - s - - s - - - = 6 Bit suid y sgid - - s - - s - - t = 7 Bit suid, sgid y sticky MUY IMPORTANTE: Algo sumamente delicado y que se tiene que tomar muy en cuenta es lo que decidas establecer con permisos de bit SUID y SGID, ya que recuerda que al establecerlos de esta manera, cualquier usuario podr ejecutarlos como si fueran el propietario original de ese programa. Y esto puede tener consecuencias de seguridad severas en tu sistema. Siempre considera y reconsidera si conviene que un usuario normal ejecute aplicaciones propias de root a travs del cambio de bits SUID o SGID. Mejores alternativas pueden ser los comandos sudo y su, en este tip de LinuxTotal.com.mx encuentras una manera de identificar archivos y ejecutables con estos bits establecidos.
Permisos preestablecidos con umask El comando umask establece la mscara de permisos de directorio y de archivos. Es decir los nuevos directorios y archivos que se crean obtienen el valor de los permisos a partir de los valores de umask. $> umask 0002 (o en formato simblico con la opcin -S) $> umask -S 3
u=rwx,g=rwx,o=rx Lo anterior indica que un directorio y archivos ejecutables se crearn con los permisos 775 y los archivos comunes con los permisos 664. Esto se logra restando de 777 el valor de umask (777-002) y (666-002) respectivamente. El primer valor de umask corresponde para valores de Sticky bit, GUID o SUID, que por default es 0. $> umask 0002 (Creamos un archivo y segn la mscara debemos de tener 666-002=664 o rw-rw-r--) $> touch archivo $> ll archivo -rw-rw-r-- 1 sergio sergio 0 sep 25 20:14 archivo (Ahora creamos un directorio y segn la mscara debemos de tener 777-002=775 o rwxrwxr-x) $> mkdir dir $> ls -ld dir drwxrwxr-x 2 sergio sergio 4096 sep 25 20:20 dir Para establecer el valor de la mscara, simplemente se usa el mismo comando umask seguido del valor de mscara que se desee: $> umask 0022 Para dejarlo fijo en la sesin, entonces conviene agregarlo a .bash_profile o .bash_rc de nuestro directorio de inicio.
set-user-ID-on-execution (AKA SUID) permite que, al ejecutarse un fichero, se realice bajo los privilegios del propietario. Por ejemplo, si necesitamos ejercer los privilegios de root para poder acceder a cierto mdulo, escribir en logs, leer/escribir de dispositivos, etc. set-group-ID-on-execution (AKA SGID) permite que, al ejecutarse un fichero, se realice bajo los privilegios del grupo propietario del fichero. Sticky bit: Este permiso, si se asigna a un ejecutable, nos permite que este se guarde directamente en memoria para que al ejecutarse las siguientes veces, sea leido desde all. Realmente lo que hace es guardar copia en la swap, por lo que en los sistemas modernos, poco o nada nos va a beneficiar. Lo que todava resulta muy interesante es al asignarlo a un directorio. Si se lo asignamos al directorio, nos permite que los ficheros creados en el mismo, independientemente de los permisos que tengan, nicamente podrn ser eliminados y/o renombrados por el propietario de los ficheros residentes en el mismo. Un claro ejemplo de esto es el directorio /tmp.
4
Ajustar permisos especiales en ficheros y directorios: Sticky bit, SUID Y SGID Los permisos de los archivos en Linux/Unix se establecen mediante un nmero octal que permite ajustar los permisos del usuario, el grupo y otros y que vara entre 000 y 777. Y que determinan quin puede leer, escribir y/o ejecutar un fichero o directorio determinado.
Sin embargo, existen unos bits que nos ofrecen la posiblidad de tener unas medidas de proteccin adicional ajustando permisos especiales sobre ficheros y directorios: El sticky bit, el bit SGID y el bit SGUID.
Su representacin en octal es la siguiente: Sticky bit --> 1000. Bit setgid --> 2000. Bit setuid --> 4000.
Sticky bit.
El sticky bit se utilizaba antiguamente en sistemas UNIX para conseguir que el sistema operativo mantuviera en memoria los programas que tenan el sticky bit activado, con el fin de facilitar ejecuciones posteriores. Al permanecer el programa en memoria, no haba necesidad de volver a cargarlo. Como los sistemas de almacenamiento (discos duros, etc...) han mejorado mucho, ste uso ya no es necesario.
Hoy en da, utilizamos el sticky bit con ficheros y directorios.
Cuando se lo asignamos a un directorio, conseguimos que los elementos (ficheros y/o directorios) que haya en ese directorio slo pueden ser renombrados o borrados por: El propietario del elemento contenido en el directorio. El propietario del directorio. El usuario root. El sticky bit prevalece sobre los permisos normales y los elementos, lo que quiere decir que tan slo podrn renombrar o borrar los elementos los usuarios mencionados, aunque el resto de usuarios tenga permisos de escritura.
Ejemplo:
# chmod 1755 /home/aulas
Si queremos comprobar, en nuestro sistema, qu ficheros o directorios tienen el sticky bit activado, usaremos el comando find:
# find / -perm -1000 -exec ls -la {} \;
Bit suid.
El bit SUID activado sobre un fichero indica que todo aqul que ejecute el archivo va a tener, durante la ejecucin, los mismos privilegios que quin lo cre. As que es importante usarlo lo menos posible y con precaucin. Si el administrador crea un fichero y activa el bit SUID, todo aquel usuario que lo ejecute, dispondr, hasta que el programa finalice, de un nivel de privilegio total en el sistema.
El bit SUID o setuid se activa sobre un fichero aadindole 4000 a la representacin octal de los permisos del archivo y otorgndole adems permiso de ejecucin al propietario del mismo.
5
# chmod 4775 /home/prueba
Tambin puede activarse usando el modo simblico:
# chmod +s /home/prueba
Si hacemos: #chmod u+s /home/prueba
En la primera terna de los permisos, en lugar de la x, aparecer una s o una S. La S aparecer si no hemos otorgado el permiso de ejecucin correspondiente, en cuyo caso el bit no tiene efecto.
No olvidemos que, con sto, un usuario normal, sin ningn privilegio especial en el sistema, cuando ejecuta el programa con el bit SUID activado, est trabajando con un usuario efectivo (EUID o Effective UID) que, en el caso de que el propietario sea el administrador, sera 0, lo que le otorga todo el poder del administrador.
Y sto puede no tener mayor importancia en un ejecutable que haga una funcin muy concreta, pero, si el ejecutable fuera una copia de un shell, el usuario normal tendra todos los privilegios del root mientras no finalice la ejecucin, es decir, hasta que no se teclee exit en la lnea de rdenes!!!
Bit sgid.
Todo lo que acabamos de explicar con respecto al bit SUID es aplicable al bit SGID tan slo que aplicado a nivel de grupo del fichero en lugar de propietario.
En el caso del bit SGID, en lugar de trabajar con el EUID del propietario, todo usuario que ejecute un programa al que se le ha activado el bit SGID, tendr los privilegios del grupo al que pertenece el archivo.
El bit SGID se activa sobre un fichero sumando 2000 a la representacin octal del permiso del fichero y dandole, adems, permiso de ejecucin a la terna de grupo. Para ver si hemos activado el bit SGID veremos si, al hacer un ls -l, aparece s o S aparecer en lugar de la x en esta terna.
Si el fichero es un directorio y no un archivo plano, el bit SGID afecta a los ficheros y subdirectorios que se creen en l. Y los ficheros y sudirectorios tendrn como grupo propietario al mismo que el directorio al que se le ha aplicado el bit SGID, siempre que el proceso que los cree pertenezca a dicho grupo.