sudo su "Benutzername" vs. su "Benutzername"

sudo su "Benutzername" vs. su "Benutzername"

Erklären Sie mir bitte, was der Unterschied ist zwischen:sudo su "Benutzername"Vergleichesu "Benutzername"

Welches hat höhere Rechte? Wenn ich mich als root anmelde mitsudo su "Benutzername", ich bin nur für einen Befehl root? Es kann also sein, dass der Anfang des Skripts einwandfrei funktioniert, der Rest aber nicht? In diesem Fallsu "Benutzername"wird empfohlen, weil es höhere Berechtigungen hat? Bitte erklären Sie mir den Unterschied zwischen den beiden Befehlen, danke.

Antwort1

Hier sind die Unterschiede:

  • su <someuser>startet eine Shell für den Benutzer someuser. Sofern Sie nicht root sind, werden Sie nach dem Passwort für gefragt someuser.
  • su(ohne Benutzernamen) Starten Sie eine Shell für den Benutzer root(nachdem Sie nach dem Root-Passwort gefragt haben).
  • sudofragt nach Ihrem Kennwort und führt (vorausgesetzt, Sie verfügen über Sudo-Rechte) einen Befehl mit Root-Rechten aus ( sudo rebootfragt nach Ihrem Kennwort und startet den Computer neu).
  • sudo su <somesuer>wird mit Root-Rechten ausgeführt su. Es fragt also nicht nach someuserdem Passwort von . Es fragt jedoch nachdeinPasswort, um Ihre Sudo-Rechte zu bestätigen. Danach wird eine Shell gestartetfür Benutzer someuser.

In Bezug auf Privilegiengibt es keinen Unterschied, ob die Shell von sudo su <someuser>oder von geöffnet wird su <someuser>. Diesist nichtein Sicherheitsproblem, da der Shell-Prozess nicht die Berechtigungen des übergeordneten Prozesses erlangen kann.

DudürfenSie sehen den Unterschied, wenn Sie sich den Prozessbaum ansehen. sudo su <someuser>Er zeigt (unter der Annahme von Bash):

+───bash───su───bash

Während su <someuser>zeigt:

+───bash───sudo───su───bash

Ihre nächste Frage ist wahrscheinlich, wie Sie ein Passwort in einem unbeaufsichtigten Skript übergeben, das keine Benutzereingabe erfordert. Ich denke, es gibt zwei Möglichkeiten:

  • Führen Sie das Skript von cron (oder einer beliebigen Variante davon) aus und führen Sie es als Root aus
  • Führen Sie das Skript von Ihrem eigenen Konto aus und verwenden Sie die Option -S von sudo wie folgt: echo <yourpassword> | sudo -S su -l <someuser>oder noch besser: echo <yourpassword> | sudo -S su -l <someuser> -c '<somecommand>'. Stellen Sie sicher, dass das Skript nur von Ihnen selbst gelesen werden kann, da Ihr Passwort darin enthalten ist. Indirekter können Sie Ihr Passwort in einer Datei speichern und diese an sudo senden. Dann kann Ihr Skript gelesen werden, Ihre Passwortdatei jedoch nicht.

verwandte Informationen