Was ist sicherer? sudo dnf update ODER su - ; dnf update

Was ist sicherer? sudo dnf update ODER su - ; dnf update

Ist es sicherer, Folgendes zu tun:

  1. $ sudo dnf update[Benutzerpasswort eingeben]

oder

  1. $ su - [enter root password]
    # dnf update
    
    

Ich bin immer davon ausgegangen, dass es sich dabei um genau dasselbe handelt, da sudo „setuid-root“ verwendet und der Prozess, der als erstes Argument von sudo ausgeführt wird, daher mit der effektiven ID von sudo ausgeführt wird, also „root“.

Ich denke, meine Frage ist:Ändert sudo seine effektive ID irgendwann zu der des normalen Benutzers? In diesem Fall wäre Nummer 1 oben die sicherere Wahl, denn wenn das Programm, mit dem sudo ausgeführt wird, von einem Angreifer kompromittiert wird, besteht die Möglichkeit, dass der Angreifer nicht als Root ausgeführt wird, weil das Privileg bereits gelöscht wurde?

Antwort1

Dieser erste Befehl erfordert (wahrscheinlich) Ihr korrektes Passwort, wird dnf updateals Root ausgeführt und beendet sich dann:

$ sudo dnf update [enter user password]

Dieser zweite Befehl erfordert das Root-Passwort und startet dann eine Root-Shell. In dieser Shell führen Sie Folgendes aus dnf update:

$ su - [enter root password]
# dnf update

Sie vergleichen nicht wirklich Gleiches mit Gleichem. Sie könnten diese beiden Befehle vergleichen, die beide eine Root-Shell starten, in der Sie (mindestens) den Befehl ausführendnf update

sudo -s
dnf update

su -
dnf update

Oder Sie vergleichen diese beiden Befehle, die beide eine Instanz mit Root-Rechten starten dnf updateund dann zur Shell des Anrufers zurückkehren.

sudo dnf update

su root -c 'dnf update'

Ich glaube, Sie fragen eigentlich, ob es besser ist, einen einzelnen Befehl mit Root-Rechten aufzurufen oder eine Shell mit Root-Rechten zu starten, in der ein oder mehrere Befehle ausgeführt werden.

  • Wenn die dnfFunktionalität oder die Downloads in irgendeiner Weise beeinträchtigt sind, dann ist es egal, wie es ausgeführt wird. Das Problem ist, dass es überhaupt ausgeführt wird.
  • Wenn Sie über die Gefährdung Ihres Systems sprechen, kommt es auf die Sicherheit des Benutzerkennworts ( sudo) gegenüber dem Rootkennwort ( su) an.
  • Wenn Sie überlegen, ob Sie dem Benutzer vertrauen können, dann ist es nicht wirklich wichtig, ob Sie eine Root-Shell erhalten, in der Sie mehrere Befehle ausführen, oder eine Root-Shell, in der Sie jeweils einen Befehl ausführen. Das Problem besteht darin, dass Befehle als Root ausgeführt werden können.

Persönlich kombiniere ich die Verwendung je nach Bedarf. Ich verwende es selten, suaber sudo {command....}für schnelle einmalige Aktionen oder sudo -sfür eine kurze Sitzung, in der ich mehrere Befehle ausführen muss (z. B. Debian-Paketverwaltungstools, apt-get updategefolgt von apt-get upgrade).

Antwort2

Ja, sudoPrivilegien werden gelöscht, wenn der untergeordnete Prozess endet. In diesem Fall dnf. Wobei suPrivilegien gelöscht werden, wenn der untergeordnete Prozess endet. In diesem Fall eine interaktive Shell. Daher werden im sudoBeispiel Privilegien früher gelöscht.

sudohat auch andere Vorteile, die hier nicht behandelt werden. (Zum Beispiel sudoerskann die Datei verwendet werden, um mehr Kontrolle darüber zu geben, was jeder Benutzer tun kann und was nicht).

verwandte Informationen