Mi Blog
Qué es el Sticky Bit, SUID y GUID en GNU/Linux

Qué es el Sticky Bit, SUID y GUID en GNU/Linux

 
(8 votos)

En los sistemas operativos basados en Unix, existen tres permisos especiales aplicables a directorios y/o ficheros.  Sticky bit (bit de permanencia), SUID (Set User ID o setuid) y SGID (Set Group ID o setgid).

Seguid leyendo y os enseñaré las diferencias entre sticky bit, suid y guid...

⬇️ Compra en Amazon el hardware que utilizo ⬇️

🔥 ¡DESCÚBRELOS! 🔥

 

 

¿QUÉ SON LOS PERMISOS ESPECIALES?

Existen una serie de permisos "raros" o especiales en GNU/Linux que no son habituales, pero que son necesarios conocerlos.

En los sistemas basados en Unix existen tres permisos especiales que pueden ser aplicados tanto a directorios como a ficheros. A estos permisos se les conoce como sticky bit (bit de permanencia), SUID (Set User ID o setuid) y SGID (Set Group ID o setgid). Los permisos en los sistemas GNU/Linux & Unix pueden ser representados con su correspondiente número octal que varían entre el 000 y el 777. Sin embargo, los permisos especiales varían entre el número octal entre 0000 y 7777.

  • Sticky bit: 1000
  • SGID: 2000
  • SUID: 4000

 

Los permisos especiales suelen resultar muy útiles para algunas determinadas tareas. Por ejemplo, crear un directorio colaborativo entre varios usuarios o ejecutar binarios con privilegios elevados temporalmente.

 

 

Por seguridad, debemos manejar con cuidado los permisos especiales

 

 

1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL

  • Un PC con GNU/Linux

 

 

2.- STICKY BIT

El archiconocido sticky bit es un permiso especial que puede ser aplicado tanto a ficheros como a directorios. El permiso especial sticky bit se asigna sumando 1000 a la representación octal del directorio o fichero.

En la actualidad, este permiso se suele asignar en directorios donde todos los usuarios del sistema tienen acceso. Dentro de un directorio donde hemos aplicado el sticky bit se evita que un usuario pueda borrar o renombrar elementos que pertenecen a otro usuarios. Cuando se le asigna el sticky bit a un directorio, significa que los elementos que hay en ese directorio, solo pueden ser renombrados o borrados por su propietario o bien por root. El resto de usuarios que tengan permisos de lectura y escritura, los podrán leer y modificar, pero no borrar.

En los sistemas GNU/Linux y Unix algunos de los directorios donde el sticky bit está aplicado por defecto son /tmp y /var/tmp.

Para aplicar el "sticky bit" a un directorio, primero creamos un directorio de pruebas con el comando:

raul@debian:~$ sudo mkdir /testing

 

 

Ahora aplicamos el sticky bit sobre dicho directorio:

raul@debian:~$ sudo chmod 1777 /testing/

 

 

O bien:

raul@debian:~$ sudo chmod +t /testing/

 

 

Si comprobamos los permisos del directorio vemos que son los siguientes:

drwxrwxrwt   2 root root  4096 Feb 22 11:45 testing

 

 

Para comprobar el funcionamiento del sticky bit crearemos un fichero de pruebas con un usuario y probaremos a borrarlo con otro usuario. Creamos un fichero con el usuario raul:

raul@debian:~$ touch /testing/fichero_raul.txt

 

 

Ahora, con el usuario paco probamos a borrarlo (y no debería dejar):

paco@debian:~$ rm -f /testing/fichero_raul.txt 
rm: cannot remove '/testing/fichero_raul.txt': Operation not permitted

 

 

Para quitar el sticky bit a un directorio ejecutaremos el comando:

raul@debian:~$ sudo chmod 0777 /testing/

 

 

O bien:

raul@debian:~$ sudo chmod -t /testing/

 

 

3.- SUID

Cuando activamos el bit SUID sobre un fichero significa que: el usuario que ejecute dicho fichero va a tener los mismos permisos que el usuario que creó ese archivo. Debemos prestar mucha atención ya que el SUID puede presentar graves problemas de seguridad. El permiso especial "SUID" se asigna sumando 4000 a la representación octal del directorio o fichero.

Para activar el bit SUID sobre un ejecutable ejecutaremos el comando:

raul@debian:~$ chmod 4777 /testing/script.sh

 

 

O bien:

raul@debian:~$ chmod u+s /testing/script.sh

 

 

Para comprobar que el bit SUID está activado, en los permisos del fichero vemos que está activado en el propietario: rws

-rwsrwxrwx 1 raul raul 0 Feb 22 12:03 /testing/script.sh

 

 

Para desactivar el bit SUID ejecutaremos:

raul@debian:~$ chmod 0777 /testing/script.sh

 

 

O bien:

raul@debian:~$ chmod u-s /testing/script.sh

 

 

4.- GUID

El bit SGID es exactamente lo mismo que el SUID pero a nivel de grupo en lugar de usuario. El permiso especial GUID se asigna sumando 2000 a la representación octal del directorio.

Por tanto, cualquier archivo que tenga activado el bit SGID, al ser ejecutado, el usuario que lo ejecuta tendrá los privilegios del grupo al que pertenece dicho fichero. El bit SGID es la opción correcta si lo que buscamos es configurar un directorio compartido para diferentes usuarios.

Cuando aplicamos el bit GUID a un directorio, todos los ficheros almacenados en dicho directorio, tendrán asignado el grupo al que pertenece el directorio padre. 

Para activar el bit GUID sobre un directorio ejecutaremos el comando:

raul@debian:~$ chmod 2775 directorio

 

 

O bien:

raul@debian:~$ chmod g+s directorio

 

Para desactivar el bit GUID ejecutaremos:

raul@debian:~$ chmod 0777 directorio

 

 

O bien:

raul@debian:~$ chmod g-s directorio

 

 

Para comprobar como funciona el uso en detalle del bit GUID, podéis revisar el siguiente tutorialCómo configurar un directorio compartido en GNU/LINUX

 

 

ENJOY!


Acerca de Mi

RPF

Soy Ingeniero Téc. Industrial Mecánico, Administrador de Sistemas Informáticos, Desarrollador de Aplicaciones Informaticas Web, Técnico Superior en PRL, Experto en Energías Renovables... y trabajo actualmente como Senior DevOPS en HP SCDS.

Contactar conmigo

Dirección: León, España

E-Mail: Contactar

Web: https://www.raulprietofernandez.net

Skype: raul.lnx

APÚNTATE GRATIS

VIP RPF
Entra en la Comunidad VIP y consigue acceso a las descargas en PDF, Trucos y Videotutoriales ocultos y mucho más... ¡Muy Pronto!

Si haces login, serás automáticamente suscrito a mi lista de Newsletter. Siempre podrás borrarte cuando quieras.