Il existe 3 permissions spéciales qui sont disponibles pour les fichiers et répertoires exécutables. Ce sont :
1. SUID permission
2. SGID permission
3. Sticky bit
- Set-user Identification (SUID)
- Comment définir SUID sur un fichier ?
- Set-group identification (SGID)
- Autorisation SGID sur le fichier exécutable
- Comment définir le GUID sur un fichier ?
- SGID sur un répertoire
- Comment définir le SGID sur un répertoire
- Sticky Bit
- Exemple de sticky bit :
- Comment définir la permission de sticky bit ?
Set-user Identification (SUID)
Avez-vous déjà pensé, comment un utilisateur non-root peut changer son propre mot de passe alors qu’il n’a pas le droit d’écriture sur le fichier /etc/shadow. hmmm… intéressant n’est-ce pas ? Eh bien pour comprendre l’astuce vérifiez la permission de la commande /usr/bin/passwd :
# ls -lrt /usr/bin/passwd-r-sr-sr-x 1 root sys 31396 Jan 20 2014 /usr/bin/passwd
– Si vous vérifiez attentivement, vous trouverez les 2 S dans le champ de permission. Le premier s représente le SUID et le second le SGID.
– Lorsqu’une commande ou un script avec le bit SUID activé est exécuté, son UID effectif devient celui du propriétaire du fichier, plutôt que celui de l’utilisateur qui l’exécute.
– Un autre bon exemple de SUID est la commande su :
# ls -l /bin/su -rwsr-xr-x-x 1 root user 16384 Jan 12 2014 /bin/su
– La permission setuid affichée comme un « s » dans le champ execute du propriétaire.
Comment définir SUID sur un fichier ?
# chmod 4555
Si un « S » majuscule apparaît dans le champ execute du propriétaire, cela indique que le bit setuid est activé, et que le bit execute « x » pour le propriétaire du fichier est désactivé ou refusé.
Set-group identification (SGID)
Autorisation SGID sur le fichier exécutable
– L’autorisation SGID est similaire à l’autorisation SUID, la seule différence est – lorsque le script ou la commande avec SGID activé est exécuté, il s’exécute comme s’il était membre du même groupe dans lequel le fichier est membre.
# ls -l /usr/bin/write-r-xr-sr-x 1 root tty 11484 Jan 15 17:55 /usr/bin/write
– L’autorisation setgid s’affiche comme un « s » dans le champ execute du groupe.
– Si une lettre minuscule « l » apparaît dans le champ execute du groupe, cela indique que le bit setgid est activé, et que le bit execute du groupe est désactivé ou refusé.
Comment définir le GUID sur un fichier ?
# chmod 2555
SGID sur un répertoire
– Lorsque la permission SGID est définie sur un répertoire, les fichiers créés dans le répertoire appartiennent au groupe dont le répertoire est membre.
– Par exemple si un utilisateur ayant la permission d’écrire dans le répertoire y crée un fichier, ce fichier est membre du même groupe que le répertoire et non du groupe de l’utilisateur.
– Ceci est très utile pour créer des répertoires partagés.
Comment définir le SGID sur un répertoire
# chmod g+s
Sticky Bit
– Le sticky bit est principalement utilisé sur les répertoires partagés.
– Il est utile pour les répertoires partagés tels que /var/tmp et /tmp car les utilisateurs peuvent créer des fichiers, lire et exécuter des fichiers appartenant à d’autres utilisateurs, mais ne sont pas autorisés à supprimer des fichiers appartenant à d’autres utilisateurs.
– Par exemple, si l’utilisateur bob crée un fichier nommé /tmp/bob, l’autre utilisateur tom ne peut pas supprimer ce fichier même si le répertoire /tmp a une permission de 777. Si le bit collant n’est pas activé, alors tom peut supprimer /tmp/bob, car le fichier /tmp/bob hérite des permissions du répertoire parent.
– L’utilisateur root (Hors cours !) et le propriétaire des fichiers peuvent supprimer leurs propres fichiers.
Exemple 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.
Comment définir la permission de sticky bit ?
# chmod +t or # chmod 1777
.