Je suis relativement nouveau dans les concepts mentionnés dans la question et la lecture à leur sujet de différentes sources ne fait que les rendre plus déroutants. Voici donc ce que j'ai compris jusqu'à présent :
Lorsque nous recevons des autorisations pour un fichier, elles ressemblent à ceci :
-rwsr-xr-- 1 user1 users 190 Oct 12 14:23 file.bin
Nous supposons qu'un utilisateur user2
qui est dans le groupe users
tente d'exécuter file.bin
. Si le bit setuid n'était pas défini, cela signifierait que le RUID et l'EUID de file.bin
étaient égaux à l'UID de user2
. Mais puisque le bit setuid est défini, cela signifie que le RUID est maintenant égal à l'UID de user2
, tandis que EUID est l'UID du propriétaire du fichier, user1
.
Mes questions sont :
- Quelle est la différence entre le propriétaire du fichier et
root
? Est-ce queroot
avez les mêmes autorisations que le propriétaire ? Ou aurions-nous besoin d'une entrée distincte dans la liste des autorisations pourroot
? - Différence entre RUID et EUID ?
- Si je comprends bien, le RUID et l'EUID ne s'appliquent qu'aux processus. Si tel est le cas, pourquoi ont-ils la valeur d'un identifiant utilisateur ?
- Si RUID est l'utilisateur qui crée le processus et EUID est l'utilisateur qui exécute actuellement le processus, alors la première phrase de la première réponse de cette question n'a aucun sens pour moi.
- Ai-je bien compris ce que fait le bit setuid ?
Réponse acceptée :
Voici les réponses :
-
root
a toujours plein accès aux fichiers et aux répertoires. Le propriétaire du fichier les a généralement aussi, mais ce n'est pas toujours vrai. Par exemple :-r-xr----- 1 user1 users 199 Oct 14 18:42 otherfile.bin
user1
est le propriétaire; cependant, ils ne peuvent que lire et exécuter , maisroot
a toujours un accès complet (rwx ) au fichier. -
RUID est le ID utilisateur réel et ça ne change (presque) jamais. Si
user2
se connecte au système, le shell est alors lancé avec son identifiant réel défini suruser2
. Tous les processus qu'ils démarrent à partir du shell hériteront du véritable IDuser2
comme véritable identifiant.L'EUID est l'ID utilisateur effectif , cela change pour les processus (pas pour l'utilisateur) que l'utilisateur exécute et qui ont défini le bit setuid .
Si
user2
exécutefile.bin
, le RUID serauser2
et l'EUID du processus lancé serauser1
.
Utilisons le cas de passwd
:
-rwsr-xr-x 1 root root 45396 may 25 2012 /usr/bin/passwd
-
Lorsque
user2
veut changer son mot de passe , ils exécutent/usr/bin/passwd
. -
Le RUID sera
user2
mais l'EUID de ce processus seraroot
. -
user2
peut utiliserpasswd
pour changer uniquement leur propre mot de passe car en internepasswd
vérifie le RUID et, s'il n'est pasroot
, ses actions seront limitées au mot de passe de l'utilisateur réel. -
Il faut que l'EUID devienne
root
dans le cas depasswd
car le processus doit écrire vers/etc/passwd
et/ou/etc/shadow
.