Setuid y Setgid son términos de Unix, abreviaturas para "Set User ID" y "Set Group ID", respectivamente. Setuid, también llamado a veces "suid", y "setgid" son permisos de acceso que pueden asignarse a archivos o directorios en un sistema operativo basado enUnix. Se utilizan principalmente para permitir a los usuarios del sistema ejecutar binarios con privilegios elevados temporalmente para realizar una tarea específica.
Estos permisos son los siguientes:
set-user-ID-on-executionPermite 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 módulo, escribir en logs, leer/escribir de dispositivos, etc.
SGID, set-group-ID-on-execution permite que, al ejecutarse un fichero, se realice bajo los privilegios del grupo propietario del ficheros.
Hacer SET UID y GID a ficheros y directorios, generalmente a estos últimos, permitirá una "herencia" de características del directorio anterior al siguiente, y todos los ficheros/directorios que se generen/cree/copien en los directorios SET GID, tendrán las características del directorio padre.
Generalmente se permite GID para que los usuarios de un grupo puedan trabajar con los ficheros de ese mismo grupo, UID podrá hacer cambiar por otra persona del GRUPO el dueño del fichero y los permisos, si tiene activo la opción "pinchable"
SET GID es una opción interesante si muchos usuarios van a acceder a un sistema de almacenamiento común, bien sea
- SAMBA
- FTP
- HTTP
- Bases de Datos
Ejemplo para implementar SET UID y GID
Desde la terminal realizamos las siguiente tareas:
Creamos un directorio de ejemplo:
[root@root] mkdir EJEMPLOListamos el directorio:
[root@root] vdirCambiamos los permisos del directorio para que solo los usuarios del grupo “programadores” puedan acceder, los permisos son parámetros del comando chmod y son los siguientes
+s: para activar el modo suid
g+s: para activar el modo sgid
[root@root]# chown usuario.programadores
[root@root]# chmod g+s EJEMPLO
[root@root]# vdirListamos el directorio y veremos el contenido
4 drwxrwxrwx 2 usuario programadores EJEMPLOPor defecto ningún usuario que no pertenezca al grupo “programadores” podrá trabajar con los archivos de ese directorio. Por otra parte los usuarios del grupo podrán trabajar con los ficheros dependiendo de sus atributos que tengan los usuarios, si tienen permisos de solo lectura o escritura.
Algunos software y servicios como Samba, FTP, HTTP, tienen características especiales que no se rigen por estas normas y las complementan enriqueciéndolas.
Ahora que hemos creado el SET UID y GID, si creamos un archivo o directorio dentro de ejemplo desde cualquier usuario, este heredara las caracteristicas que hemos definidos anteriormente, independientemente de quien lo haya creado y los permisos que tenga.
Como ejemplo podemos decir si creamos un archivos informe.txt en el directorio EJEMPLO y el usuario que lo ha creado es root, y sin embargo el grupo es programadores, el grupo al que pertenecerá el archivo será programadores.
Al estar el directorio EJEMPLO con los atributos: drwxrwsrwx, indicandolas, que el directorio se encuentra SET GID, todos los ficheros que se creen en el pertencerán al usuario y al grupo que indique el SET GID.
Si vemos un listado con varios archivos se vería así:
4 drwxr-Sr-x 2 jose programadores 4096 home.html 4 drwxr-Sr-x 2 carlos programadores 4096 dependencias.txt 4 drwxr-Sr-x 2 root programadores 4096 informe-proyecto.odfEspero que os sirva este tutorial.