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

Sudo vs. root; irgendwelche tatsächlichen unterschiede?

Es hängt stark davon ab, wie Sie Ihr Programm mit sudo aufrufen oder su .
Z.B. auf dem System, auf dem ich mich gerade befinde:

                  .bashrc                        
    COMMAND        $HOME   $USER  Env.  $PATH
 1. sudo -i        (root)   root  root  [1]
 2. sudo -s        (USER)   root  USER  /home/${USER}/bin:[1]
 3. sudo /bin/bash (USER)   root  USER  /home/${USER}/bin:[1]  
 4. sudo su        (root)   root  USER  [1]:/usr/games:/usr/local/games  
 5. sudo su -      (root)   root  root  [1] 

Wobei [1]=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Env=Umgebungsvariablen werden für 1 und 5 zurückgesetzt, genommen von $USER in 2,3,4.

Ein Skript oder ein Programm, das mit einer anderen Option gestartet wird, kann also andere $PATH sehen , $HOME , seine Shell kann verschiedene .bashrc lesen ,.profile und Umgebungsvariablen. Es liest die Datei, die sich auf den $HOME bezieht . Jeder Benutzer kann seine Umgebung auf unterschiedliche Weise modifizieren (Variablen, $PATH , .bashrc, .profile, .bash_profile, Alias...). Insbesondere kann ein Benutzer in seinem $PATH eine andere Reihenfolge der Verzeichnisse haben und folglich kann ein Skript einen Befehl ausführen, z. in /home/$USER/bin stattdessen dann diejenige im Pfad, die von root erwartet wird.

Sie können das Programm unter sudo -i ausführen da Sie als root mit su - angemeldet waren , aber Sie können ein anderes Verhalten haben, wenn Sie es mit sudo MyCommand ausführen oder mit su -c MyCommand .

Ab man su :

Im Beschreibungsteil:
Die aktuelle Umgebung wird an die neue Shell übergeben . Der Wert von $PATH wird zurückgesetzt nach /bin:/usr/bin für normale Benutzer oder /sbin:/bin:/usr/sbin:/usr/bin für den Superuser
...
Im Optionsteil:
- , -l, --login
Stellen Sie eine Umgebung ähnlich wie bereit was der Benutzer erwarten würde, wenn sich der Benutzer direkt angemeldet hätte .

Von Mann sudo

-ich , --Anmeldung
Führen Sie die durch den Kennwortdatenbankeintrag des Zielbenutzers angegebene Shell als Anmelde-Shell aus. Dies bedeutet, dass Login-spezifische Ressourcendateien wie .profile oder .login von der Shell gelesen werden. Wenn ein Befehl angegeben ist, wird er über die Shell-Option -c zur Ausführung an die Shell übergeben. Wenn kein Befehl angegeben ist, wird eine interaktive Shell ausgeführt. sudo versucht, in das Home-Verzeichnis dieses Benutzers zu wechseln, bevor die Shell ausgeführt wird. Der Befehl wird in einer Umgebung ausgeführt, die der ähnelt, die ein Benutzer bei der Anmeldung erhalten würde . Der Abschnitt Befehlsumgebung im sudoers(5)-Handbuch dokumentiert, wie die Option -i die Umgebung beeinflusst, in der ein Befehl ausgeführt wird, wenn die sudoers-Richtlinie verwendet wird.


Wenn Sie volle sudo haben Zugriff haben, können Sie root werden mit sudo su - , also ist der Sicherheitspunkt strittig.

Tatsächlich gibt es eine Möglichkeit, den Unterschied zwischen einem Programm zu erkennen, das als root ausgeführt wird und ein Programm lief unter sudo - mit getuid gegenüber geteuid - aber das ist ein erfundener Trick. Warum sollte ein Patch-System das tun?


Es gibt ein paar Unterschiede, wenn Sie eine Root-Shell erhalten, wie von @Hastur hervorgehoben.

Wenn Sie keine Root-Shell erhalten, gibt es weitere Unterschiede. Das Support-Mitglied hat möglicherweise Erfahrung damit, Dinge wie sudo patch -p0 < /root/patch.file zu tun wobei patch wird als root ausgeführt, aber < (Piping aus einer Datei) ist es nicht.


Linux
  1. Von Vim aus Root werden?

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

  3. Wie lässt sich ein Skript rückwirkend als Root ausführen?

  4. Wie führe ich das Terminal als Root aus?

  5. Speichern Sie die Datei als Root, nachdem Sie sie als Nicht-Root bearbeitet haben

So ändern Sie das Sudo- oder Root-Passwort in Ubuntu

So wechseln Sie zum Root-Benutzer in Ubuntu 22.04

Terminal immer als Root-Benutzer (sudo) in Ubuntu starten

Wo werden sudo-Vorfälle gemeldet?

Das Ändern des Root-Passworts ändert nicht das Sudo-Passwort

Wird sudo su - als schlechte Praxis angesehen?