- Wenn Sie eine ausführbare Datei ausführen, verweigert das Betriebssystem manchmal Ihre Berechtigung. Zum Beispiel muss ausgeführt werden,
make install
wobei das Präfix ein Systempfad istsudo
, während für das Präfix kein Nicht-Systempfad angefordert wirdsudo
. Wie entscheidet das Betriebssystem, dass das Ausführen einer ausführbaren Datei mehr Berechtigungen erfordert als ein Benutzer, noch bevor das Programm etwas unternimmt? - Manchmal wird das Ausführen eines Programms nicht verweigert, aber das Programm kann mehr, wenn es mit ausgeführt wird
sudo
. Wenn Sie zum Beispieldu
ein Systemverzeichnis ausführen, kann nursudo
dieses auf ein bestimmtes Verzeichnis zugreifen. Warum verweigert das Betriebssystem nicht die Berechtigung zum Ausführen eines solchen Programms, oder es wird eine freundlichere Benachrichtigung mit mehr Berechtigungen bevorzugt, bevor das Programm ausgeführt werden kann? - Stimmt es, dass wann immer es
sudo
funktioniert,su
auch funktioniert und wann immer essu
funktioniert,sudo
auch funktioniert? oder mitsu
, kann ein Benutzer mehr als mitsudo
? Wie entscheidet das Betriebssystem, wann essudo
funktioniert und wannsu
es benötigt wird?
permissions
sudo
Tim
quelle
quelle
Antworten:
sudo
, wird es unter einem anderen Benutzernamen ausgeführt. Wenn dieser Benutzer "in der Lage ist, mehr Dinge zu tun" als Ihr Benutzer und diesudo
Konfiguration es Ihnen ermöglicht, diese Dinge im Namen des anderen Benutzers zu tun, können Sie mit "Ja"sudo
mehr Dinge tun. Dies ist jedoch nicht erforderlich. Wenn Sie nursudo
am Anfang der Befehlszeile weitermachen, werden Sie tatsächlichsudo
alsroot
, so dass Sie in der Regel mehr als nur Sterbliche tun können.sudo
Sie Ihr eigenes Benutzerkennwort angeben, und dann dürfen Sie einige Dinge im Namen des Zielbenutzers tun. Für die Verwendungsu
benötigen Sie das Kennwort des Zielbenutzers. Wenn Sie über dieses Kennwort verfügen, werden Sie für das System zum Zielbenutzer und können alle Aktionen ausführen, die dieser Benutzer ausführen kann.Siehe auch
quelle
chmod
Sie entweder der Eigentümer der Datei sind oderroot
.chmod 400 hello && /lib64/ld-linux-x86-64.so.2 ./hello
produziert eine schöne "Hallo, Welt!" Ausgabe.Für die beschriebenen Zwecke entscheidet das Betriebssystem nicht, ob Sie sudo benötigen, um das Programm zum ersten Mal auszuführen . Stattdessen
/usr/bin
verhindert das Betriebssystem den Dateizugriff , nachdem das Programm gestartet wurde und versucht hat, etwas zu tun, das der aktuelle Benutzer nicht zulässt (z. B. das Schreiben einer Datei , um einen neuen Befehl zu installieren). Die Maßnahme, um diese Bedingung zu erfüllen, liegt im Ermessen des Programms.make
stoppt die Ausführung, fährt jedochdu
nach dem Drucken einer Nachricht mit der nächsten Datei bzw. dem nächsten Verzeichnis fort.Mit den Befehlen
su
undsudo
können Sie ein Programm mit Root-Rechten auf zwei verschiedene Arten ausführen. Abhängig von den verwendeten Optionen können sie sich in geringfügigen Details wie dem Inhalt der Umgebung beim Starten des neuen Programms unterscheiden. Das Betriebssystem muss nicht entscheiden, wann das eine oder andere funktionieren könnte.quelle
su
undsudo
sind privilegierte Programme.su
Ändert (nach erfolgreicher Authentifizierung) die tatsächliche und effektive Benutzer- und Gruppen-ID in die des Benutzers, den Sie verwendensu
. Sosu
ist ähnlich wielogin
. Beachten Sie, dass Siesu
damit zu jedem Benutzer wechseln können, nicht nur zu root.sudo
Ändert auch die realen und effektiven Benutzer- und Gruppen-IDs. Bis zu diesem Punktsu
undsudo
sind ähnlich (aber nicht verwandt), darüber hinaus sind sie sehr unterschiedlich.Mit
su
müssen Sie das Kennwort des Ziels kennen, und sobald Sie sich authentifiziert haben, können Sie als dieser Benutzer alles tun, was Sie wollen. Die Verwendungsu
kann durch Einstellung eingeschränkt seinSU_WHEEL_ONLY
in/etc/login.defs
. Wenn es festgelegt ist, dürfen nur Benutzer in der Gruppewheel
es verwendensu
, andernfalls ist es nicht eingeschränkt. Ansonstensu
ist alles oder nichts.sudo
ist diesbezüglich völlig anders. Mit könnensudo
Sie recht komplexe Richtlinien definieren, die festlegen,/etc/sudoers
was der Sudoer (der anrufende Benutzersudo
) tun darf. Beispielsweise können Sie Richtlinien definieren, in denen bestimmte Benutzer möglicherweise nur bestimmte Programme mit bestimmten Berechtigungen ausführen, während andere Benutzer möglicherweise andere Programme mit anderen Berechtigungen ausführen.Eines der auffälligsten Merkmale von
sudo
ist, dass Sie es so konfigurieren können, dass sich ein Benutzer mit seinem eigenen Passwort (anstelle des des Ziels) authentifizieren muss . Dahersudo
ist es unter Administratoren sehr beliebt, da es Benutzern ermöglicht, nur definierte privilegierte Vorgänge auszuführen, ohne das Superuser-Kennwort zu verteilen, und Sie erhalten ein gewisses Maß an Verantwortlichkeit.quelle
Der Zugriff wird vom Benutzer bestimmt, der die Anwendung ausführt, und
sudo
führt die Anwendungen als anderer Benutzer aus.Vollversion:
Es weiß es nicht. UNIX verwaltet Berechtigungen nicht auf Anwendungsebene, sondern auf Dateisystemebene: Benutzern werden Berechtigungen für den Zugriff auf bestimmte Dateien erteilt. Die Anwendungen werden dann im Auftrag des Benutzers ausgeführt. Jedem ausgeführten Prozess ist ein Benutzer zugeordnet. Mit diesem Benutzer werden die Berechtigungen für diese Anwendung festgelegt. Sudo führt Anwendungen im Auftrag eines anderen Benutzers aus (mit Berechtigungen, die diesem anderen Benutzer zugeordnet sind), nämlich
root
des Superbenutzers.Wie für Ihre Beispiele:
Wenn der Benutzer Schreibzugriff auf ein bestimmtes Verzeichnis hat, kann er
make install
in dieses Verzeichnis zugreifen . Andernfalls müssen sie esroot
tun - mitsudo
.Wenn Sie nicht auf Dateien in einem Verzeichnis zugreifen können, können Sie auch nicht darauf zugreifen, wenn Sie
du
für ausgeführt werden.root
kann auf praktisch jede Datei zugreifen, kann alsosudo du
(du
im Auftrag vonroot
) auch auf sie zugreifen.Ja und nein. Ja, wenn das Programm tatsächlich ausgeführt wird, sollte es sich unter beiden
sudo
und gleich verhaltensu
. Jedochsudo
ermöglicht eine feinkörnige Kontrolle über liefert , wer was in gespeicherten Satz von Regeln ausführen kann/etc/sudoers
Datei.su
ist einfacher: Wenn Sie das Kennwort des Zielbenutzers kennen, können Sie Programme für diesen Benutzer ausführen.Letzte Anmerkung: Wie die Anwendung die Verweigerung des Zugriffs behandelt (ob sie den Benutzer abbricht oder ignoriert oder warnt), hängt von der Anwendung ab.
quelle
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
undsu
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 auchsudoedit
dieser Teil istsudo
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.quelle