GNU/Linux >> Tutoriels Linux >  >> Linux

Différence entre propriétaire/racine et Ruid/euid ?

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 :

  1. Quelle est la différence entre le propriétaire du fichier et root ? Est-ce que root avez les mêmes autorisations que le propriétaire ? Ou aurions-nous besoin d'une entrée distincte dans la liste des autorisations pour root ?
  2. 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 :

  1. 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 , mais root a toujours un accès complet (rwx ) au fichier.

  2. 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 sur user2 . Tous les processus qu'ils démarrent à partir du shell hériteront du véritable ID user2 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écute file.bin , le RUID sera user2 et l'EUID du processus lancé sera user1 .

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 sera root .

  • user2 peut utiliser passwd pour changer uniquement leur propre mot de passe car en interne passwd vérifie le RUID et, s'il n'est pas root , ses actions seront limitées au mot de passe de l'utilisateur réel.

  • Il faut que l'EUID devienne root dans le cas de passwd car le processus doit écrire vers /etc/passwd et/ou /etc/shadow .


Linux
  1. Différence entre le shell de connexion et le shell sans connexion ?

  2. Différence entre 2>&-, 2>/dev/null, |&, &>/dev/null et>/dev/null 2>&1 ?

  3. Quelle est la différence entre Sudo Su - et Sudo Su - ?

  4. Différence entre Eot et Eof?

  5. Différence entre [0-9], [[:digit:]] et D ?

Différence entre apt et apt-get expliquée

Différence entre CLOCK_REALTIME et CLOCK_MONOTONIC ?

Différence entre GNUWin32 et cygwin

différence entre netstat et ss sous linux?

Différence entre ${} et $() dans Bash

différence entre les cgroups et les espaces de noms