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 querootavez 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 :
-
roota 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.binuser1est le propriétaire; cependant, ils ne peuvent que lire et exécuter , maisroota toujours un accès complet (rwx ) au fichier. -
RUID est le ID utilisateur réel et ça ne change (presque) jamais. Si
user2se 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 IDuser2comme 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
user2exécutefile.bin, le RUID serauser2et 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
user2veut changer son mot de passe , ils exécutent/usr/bin/passwd. -
Le RUID sera
user2mais l'EUID de ce processus seraroot. -
user2peut utiliserpasswdpour changer uniquement leur propre mot de passe car en internepasswdvé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
rootdans le cas depasswdcar le processus doit écrire vers/etc/passwdet/ou/etc/shadow.