Hay 3 permisos especiales que están disponibles para los archivos y directorios ejecutables. Estos son :
1. Permiso SUID
2. Permiso SGID
3. Sticky bit
- Set-user Identification (SUID)
- ¿Cómo establecer SUID en un archivo?
- Set-group identification (SGID)
- Permiso SGID en archivo ejecutable
- ¿Cómo establecer el GUID en un archivo?
- SGID en un directorio
- Cómo establecer el SGID en un directorio
- Bit pegajoso
- Ejemplo de sticky bit :
- ¿Cómo establecer el permiso de sticky bit?
Set-user Identification (SUID)
¿Has pensado alguna vez, cómo un usuario no root puede cambiar su propia contraseña cuando no tiene permiso de escritura en el archivo /etc/shadow. hmmm… interesante no? Bueno, para entender el truco comprueba el permiso del comando /usr/bin/passwd :
# ls -lrt /usr/bin/passwd-r-sr-sr-x 1 root sys 31396 Jan 20 2014 /usr/bin/passwd
– Si te fijas bien, encontrarás las 2 S en el campo de permiso. La primera s representa el SUID y la segunda el SGID.
– Cuando se ejecuta un comando o script con el bit SUID activado, su UID efectivo pasa a ser el del propietario del archivo, en lugar del usuario que lo ejecuta.
– Otro buen ejemplo de SUID es el comando su :
# ls -l /bin/su -rwsr-xr-x-x 1 root user 16384 Jan 12 2014 /bin/su
– El permiso setuid se muestra como una «s» en el campo de ejecución del propietario.
¿Cómo establecer SUID en un archivo?
# chmod 4555
Si aparece una «S» mayúscula en el campo de ejecución del propietario, indica que el bit setuid está activado, y el bit de ejecución «x» para el propietario del fichero está desactivado o denegado.
Set-group identification (SGID)
Permiso SGID en archivo ejecutable
– El permiso SGID es similar al permiso SUID, la única diferencia es – cuando el script o comando con SGID activado se ejecuta, se ejecuta como si fuera un miembro del mismo grupo en el que el archivo es un miembro.
# ls -l /usr/bin/write-r-xr-sr-x 1 root tty 11484 Jan 15 17:55 /usr/bin/write
– El permiso setgid se muestra como una «s» en el campo de ejecución del grupo.
– Si aparece una letra «l» minúscula en el campo de ejecución del grupo, indica que el bit setgid está activado, y el bit de ejecución para el grupo está desactivado o denegado.
¿Cómo establecer el GUID en un archivo?
# chmod 2555
SGID en un directorio
– Cuando se establece el permiso SGID en un directorio, los ficheros creados en el mismo pertenecen al grupo del que es miembro el directorio.
– Por ejemplo si un usuario que tiene permiso de escritura en el directorio crea un fichero allí, ese fichero es miembro del mismo grupo que el directorio y no del grupo del usuario.
– Esto es muy útil en la creación de directorios compartidos.
Cómo establecer el SGID en un directorio
# chmod g+s
Bit pegajoso
– El bit pegajoso se utiliza principalmente en directorios compartidos.
– Es útil para los directorios compartidos como /var/tmp y /tmp porque los usuarios pueden crear archivos, leer y ejecutar archivos propiedad de otros usuarios, pero no se les permite eliminar archivos propiedad de otros usuarios.
– Por ejemplo, si el usuario bob crea un archivo llamado /tmp/bob, otro usuario tom no puede eliminar este archivo aunque el directorio /tmp tenga un permiso de 777. Si el bit sticky no está configurado, entonces tom puede eliminar /tmp/bob, ya que el archivo /tmp/bob hereda los permisos del directorio padre.
– el usuario root (¡Por supuesto!) y el propietario de los archivos pueden eliminar sus propios archivos.
Ejemplo de sticky bit :
# ls -ld /var/tmpdrwxrwxrwt 2 sys sys 512 Jan 26 11:02 /var/tmp
- T refers to when the execute permissions are off.- t refers to when the execute permissions are on.
¿Cómo establecer el permiso de sticky bit?
# chmod +t or # chmod 1777