Noch hat niemand ein ✓, also habe ich eine Antwort zusammengestellt, die alles enthält, was mir einfällt.
1 Wenn Sie eine ausführbare Datei ausführen, verweigert das Betriebssystem manchmal Ihre Berechtigung. Zum Beispiel benötigt das Ausführen von make install mit dem Präfix als Systempfad sudo, während mit dem Präfix als Nicht-Systempfad nicht nach sudo gefragt wird. Wie entscheidet das Betriebssystem, dass das Ausführen einer ausführbaren Datei mehr Berechtigungen erfordert als ein Benutzer, noch bevor das Programm etwas unternimmt?
Nein, es wird nicht ausgeführt, wenn eine ausführbare Datei gestartet wird. Dies geschieht, wenn die ausführbare Datei versucht, etwas zu tun.
Die Betriebssysteme prüfen die Dateisystemberechtigungen und -fähigkeiten (diese sind nicht durch Dateisystemberechtigungen abgedeckt und umfassen das Reduzieren von Nizza-Level, Mknode, einige Netzwerk-Low-Level-Sachen, das Beenden der Prozesse anderer, Neustarten, Einstellen der Zeit usw.). Wenn Sie nicht über die Berechtigungen verfügen, können Sie dies nicht tun. Root verfügt über alle Funktionen, einschließlich CAP_DAC_OVERRIDE (Dateiberechtigung ignorieren).
2 Manchmal wird dem Ausführen eines Programms die Berechtigung nicht verweigert, aber das Programm kann mehr, wenn es mit sudo ausgeführt wird. Wenn du beispielsweise in einem Systemverzeichnis ausgeführt wird, kann nur mit sudo auf ein bestimmtes Verzeichnis zugegriffen werden. Warum verweigert das Betriebssystem die Ausführung eines solchen Programms nicht, oder es wird eine freundlichere Benachrichtigung mit mehr Berechtigungen bevorzugt, bevor das Programm ausgeführt werden kann?
Das Betriebssystem kann nicht wissen, was das Programm tun wird. Es liegt also am Programm, die Berechtigungen vor dem Start zu überprüfen und zu entscheiden, was zu tun ist. Das muss es aber nicht.
Hinweis: Auf Android gibt es ein Manifest, in dem die Anwendung deklariert, welche Berechtigungen sie verwenden darf. Das Betriebssystem beendet jede Anwendung, die versucht, ein nicht deklariertes Privileg zu verwenden, und das Betriebssystem garantiert nicht immer, dass ein Privileg anerkannt werden kann. zB Netzwerkzugriff ist möglicherweise nicht verfügbar.
2 Stimmt es, dass wenn sudo funktioniert, auch su funktioniert und wenn su funktioniert, auch sudo funktioniert? oder mit su kann ein benutzer mehr als mit sudo? Wie entscheidet das Betriebssystem, wann sudo funktioniert und wann su benötigt wird?
sudo
und su
mach ungefähr das gleiche. Einige Unterschiede bestehen in der Handhabung von Umgebungsvariablen und in der Vermeidung solcher Sicherheitsprobleme. Sie sind jedoch beide Tools, mit denen Sie ein anderer Benutzer werden können, und beide verfügen über einen Standardbenutzer von root.
su
Wenn es sich um das ursprüngliche Tool handelt, müssen Sie das Kennwort des Benutzers / der Gruppe eingeben, zu dem / der Sie wechseln.
sudo
ist neuer und erfordert standardmäßig die Eingabe eines eigenen Passworts, kann jedoch so konfiguriert werden, dass das Passwort des Benutzers / der Gruppe, zu der / der Sie wechseln, akzeptiert wird, oder dass überhaupt kein Passwort eingegeben wird. Es ermöglicht auch eine Vielzahl von Konfigurationen, mit welchen Befehlen, für wen und wie es sich mit diesem Programm für diesen Benutzer auf diesem Computer authentifiziert. Es ist auch sudoedit
dieser Teil ist sudo
und verwendet werden kann , die Bearbeitung als ein anderen Benutzer zu ermöglichen und die Frage der Sicherheit von Unter Beschuss aus einem Editor (Aufruf exec aus dem Editor einen beliebigen Prozess mit erweiterten Rechten ausführen) zu vermeiden.