GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Unterschied zwischen Owner/root und Ruid/euid?

Ich bin relativ neu in den in der Frage erwähnten Konzepten und das Lesen aus verschiedenen Quellen macht sie nur noch verwirrender. Also das habe ich bisher verstanden:

Wenn wir Berechtigungen für eine Datei erhalten, sehen sie so aus:

-rwsr-xr-- 1 user1 users 190 Oct 12 14:23 file.bin

Wir gehen davon aus, dass ein Benutzer user2 wer ist in der Gruppe users versucht, file.bin auszuführen . Wenn das Setuid-Bit nicht gesetzt wäre, würde dies bedeuten, dass sowohl die RUID als auch die EUID von file.bin waren gleich der UID von user2 . Aber da das Setuid-Bit gesetzt ist, bedeutet dies, dass die RUID jetzt gleich der UID von user2 ist , während EUID die UID des Eigentümers der Datei ist, user1 .

Meine Fragen sind:

  1. Was ist der Unterschied zwischen dem Eigentümer der Datei und root ? Hat root haben die gleichen Berechtigungen wie der Besitzer? Oder bräuchten wir einen separaten Eintrag in der Berechtigungsliste für root ?
  2. Unterschied zwischen RUID und EUID?
    • Nach meinem Verständnis werden RUID und EUID nur auf Prozesse angewendet. Wenn das der Fall ist, warum haben sie den Wert von Benutzer-IDs?
    • Wenn RUID der Benutzer ist, der den Prozess erstellt, und EUID der Benutzer ist, der den Prozess derzeit ausführt, dann ergibt der erste Satz der ersten Antwort auf diese Frage für mich keinen Sinn.
    • Habe ich richtig verstanden, was das setuid-Bit tut?

Akzeptierte Antwort:

Hier sind die Antworten:

  1. root ist immer voll Zugriff auf Dateien und Verzeichnisse. Der Besitzer der Datei hat sie normalerweise auch, aber das ist nicht immer der Fall. Zum Beispiel:

    -r-xr----- 1 user1 users 199 Oct 14 18:42 otherfile.bin
    

    user1 ist der Eigentümer; sie können jedoch nur lesen und ausführen , aber root hat immer noch vollen Zugriff (rwx ) in die Datei.

  2. RUID ist die echte Benutzer-ID und es ändert sich (fast) nie. Wenn user2 sich beim System anmeldet, wird die Shell dann gestartet, wobei ihre echte ID auf user2 gesetzt ist . Alle Prozesse, die sie von der Shell starten, erben die echte ID user2 als ihre echte ID.

    EUID ist die Effektive Benutzer-ID , ändert es sich für Prozesse (nicht für den Benutzer), die der Benutzer ausführt und die das setuid-Bit gesetzt haben .

    Wenn user2 führt file.bin aus , ist die RUID user2 und die EUID des gestarteten Prozesses ist user1 .

Nehmen wir den Fall von passwd :

-rwsr-xr-x 1 root root 45396 may 25  2012 /usr/bin/passwd
  • Wenn user2 ihr Passwort ändern möchte , führen sie /usr/bin/passwd aus .

  • Die RUID ist user2 aber die EUID dieses Prozesses wird root sein .

  • user2 kann passwd verwenden nur zu ändern ihr eigenes Passwort, weil intern passwd prüft die RUID und, wenn sie nicht root ist , sind seine Aktionen auf das Passwort des echten Benutzers beschränkt.

  • Es ist notwendig, dass die EUID zu root wird im Fall von passwd weil der Prozess schreiben muss nach /etc/passwd und/oder /etc/shadow .


Linux
  1. Unterschied zwischen Login-Shell und Nicht-Login-Shell?

  2. Der Unterschied zwischen [[ $a ==Z* ]] und [ $a ==Z* ]?

  3. Unterschied zwischen Gtk- und Qt-Anwendungen?

  4. Unterschied zwischen Piping und Befehlserweiterung?

  5. Unterschied zwischen Sudo-Benutzer und Root-Benutzer?

Unterschied zwischen apt und apt-get erklärt

Der Unterschied zwischen Nss und Pam?

Unterschied zwischen $HOME und '~' (Tilde)?

unterschied zwischen netstat und ss unter linux?

Unterschied zwischen ${} und $() in Bash

Unterschied zwischen Cgroups und Namespaces