Was bestimmt, welche Linux-Befehle Root-Zugriff benötigen?

23

Was bestimmt, welche Linux-Befehle Root-Zugriff benötigen? Ich verstehe die Gründe, warum es wünschenswert ist, apt-getdass beispielsweise rootPrivilegien erforderlich sind ; aber was unterscheidet diese Befehle vom Rest? Handelt es sich lediglich um das Eigentum und die Ausführungsberechtigungen der ausführbaren Datei?

Brian Dobby
quelle
2
Dies hängt hauptsächlich davon ab, welche Datei sie berühren und welche Funktionen sie aufrufen.
Federico Klez Culloca
9
Einige Apps benötigen Zugriff auf Dateien / Verzeichnisse von root. Also rufen sie einfach an openund bekommen "Erlaubnis verweigert". Einige Apps überprüfen getuidund funktionieren nicht mehr, wenn sie nicht von root aufgerufen werden. Einige sind im physischen Besitz von root und nur der Eigentümer darf sie ausführen (siehe chmod). Wenn Sie sich fragen, ob der App-Header ein "Needs Root" -Zeichen enthält, lautet die Antwort "Nein". Es gibt keine solche Sache afaik
user996142
1
ps: Einige Syscalls (wie das Binden an einen bekannten Port <1024) benötigen möglicherweise auch Root-Zugriff.
user996142
apt-get benötigt überhaupt kein root. Es befindet sich im Verzeichnis / usr / bin, siehe askubuntu.com/a/440791/169736
Braiam
Sie könnten hier präzisieren, was Sie mit "erfordern" meinen. Meinen Sie damit, dass das Programm nur ausgeführt wird, wenn Sie als Root angemeldet sind (oder über Sudo-Berechtigungen verfügen), oder dass es als Root angemeldet sein muss, um seine Aufgabe ordnungsgemäß ausführen zu können?
Jamesqf

Antworten:

15

In Linux, an einer Stelle die Root - Rechten waren in die „Fähigkeiten“ aufgeteilt, so können Sie eine vollständige Liste der Wurzel der besonderen Privilegien erhalten , indem in dieser Dokumentation suchen: man 7 capabilities.

Um Ihre Frage zu beantworten, muss ein Befehl als root ausgeführt werden, wenn eine dieser Berechtigungen erforderlich ist, und für die ausführbare Nicht-Skript-Datei ist in den Dateimetadaten nicht die entsprechende Funktion festgelegt (z. B. wenn für ein Python-Skript die Funktion erforderlich ist, dann die Funktion) müsste sich in dem in der shebang-Zeile angegebenen Python-Interpreter befinden).

Beachten Sie, dass einige Befehle, für die Root-Zugriff erforderlich ist, nicht erforderlich sind, sudoda das SUID-Bit in ihrer ausführbaren Datei festgelegt ist. Dieses Bit bewirkt, dass die ausführbare Datei als Eigentümer (normalerweise root) ausgeführt wird, wenn sie von einem Benutzer ausgeführt wird, der über Ausführungszugriff verfügt. Ein Beispiel ist sudo, dass das Ändern von Benutzern eine privilegierte Aktion ist, die sie ausführen müssen.

BEARBEITEN: Aus Ihrer Frage geht hervor, dass Sie möglicherweise die Idee haben, festzustellen, ob für einen Befehl Root-Zugriff erforderlich ist, bevor Sie ihn ausführen. Das ist nicht der Fall. Ein Programm benötigt manchmal Root-Rechte und manchmal auch keine. Dies kann eine Entscheidung des Programms sein, die auf Daten zurückzuführen ist, die es zur Laufzeit zur Verfügung stellt. Rufen Sie zum Beispiel vimeinfach so ohne Argumente auf und sagen Sie ihm dann durch eine Reihe von Tastendrücken und Einfügen, dass er etwas in eine Datei schreiben soll, für das er keine Schreibberechtigung hat, oder führen Sie möglicherweise einen anderen Befehl aus, für den selbst Root-Berechtigungen erforderlich sind. Nichts über den Befehl vor der Ausführung kann darauf hinweisen, dass er möglicherweise Root-Zugriff erfordert. Dies kann nur an dem Punkt festgestellt werden, an dem versucht wird, etwas zu tun, das dies erfordert.

Wie auch immer, hier sind nur sehr wenige Beispiele aus der referenzierten Manpage der Privilegien von root:

  • Nehmen Sie willkürliche Manipulationen an Prozess-UIDs vor (setuid (2), setreuid (2), setresuid (2), setfsuid (2)).
  • Umgehen Sie das Lesen, Schreiben und Ausführen von Berechtigungsprüfungen für Dateien. (DAC ist eine Abkürzung für "Discretionary Access Control".)
  • Berechtigungsprüfungen zum Senden von Signalen umgehen (siehe kill (2)). Dies schließt die Verwendung der Operation ioctl (2) KDSIGACCEPT ein.
  • Führen Sie verschiedene netzwerkbezogene Vorgänge aus:
    • Schnittstellenkonfiguration;
    • Verwaltung von IP-Firewall, Masquerading und Accounting;
    • Routing-Tabellen ändern;
  • Binden Sie einen Socket an Ports mit Internetdomänenprivilegien (Portnummern unter 1024).
  • Laden und Entladen von Kernelmodulen (siehe init_module (2) und delete_module (2));
  • Systemuhr einstellen (Settimeofday (2), Stime (2), Adjtimex (2)); Echtzeituhr (Hardware) einstellen.
  • Führen Sie eine Reihe von Systemverwaltungsvorgängen aus, darunter: quotactl (2), mount (2), umount (2), swapon (2), swapoff (2), sethostname (2) und setdomainname (2);
  • Verwenden Sie reboot (2) und kexec_load (2).
  • Verwende chroot (2).
  • Erhöhen Sie den netten Wert des Prozesses (nice (2), setpriority (2)) und ändern Sie den netten Wert für beliebige Prozesse.
JoL
quelle
32

Es kommt hauptsächlich darauf an, was das Tool oder Programm leistet . Denken Sie daran, dass ein Nicht-Superuser nur Dateien berühren kann, die ihm gehören oder auf die er Zugriff hat. Jedes Tool, das in der Lage sein muss, auf alles zuzugreifen, benötigt Superuser-Zugriff, um das zu tun, was es tut. Eine kurze Auswahl von Dingen, die möglicherweise Superuser-Zugriff erfordern, sind unter anderem:

  • Öffnen eines empfangsbereiten TCP-Sockets an einem Port unter 1024
  • Ändern von Systemkonfigurationen (z. B. alles in /etc)
  • Hinzufügen neuer global zugänglicher Bibliotheken ( /libund /usr/lib) oder Binärdateien ( /bin, /usr/bin)
  • Berühren von Dateien, die nicht dem Benutzer gehören, der das Berühren ausführt und die keinen ausreichend zulässigen Modus haben
  • Ändern des Eigentums der Dateien anderer Benutzer
  • Escelating Prozessprioritäten (zB renice)
  • Starten oder Beenden der meisten Dienste
  • Kernel Konfiguration (zB Swappiness anpassen)
  • Anpassen der Dateisystemquoten
  • Schreiben auf "volle" Festplatten (die meisten Dateisysteme reservieren etwas Platz für den Root-Benutzer)
  • Aktionen als andere Benutzer ausführen
DopeGhoti
quelle
4
"Prozessprioritäten ändern" Nicht-Root-Benutzer können die Freundlichkeit ändern, um noch netter zu sein. Das Einzige, was sie nicht können, ist, weniger nett zu sein.
Braiam
1
Ich weiß , dass diese Liste nicht vollständig ist, aber ich fühle mich eine sehr wichtige Aufgabe , dass nur Superuser können tun imitiert - oder einfach in der Anmeldung als - anderen Nutzer.
Phihag
Ich habe den Aufzählungspunkt für die Prozessprioritäten angepasst und "Aktionen als andere Benutzer ausführen" hinzugefügt. Hoffentlich wird diese Liste mit genügend Zeit und Kommentaren umfassender.
DopeGhoti
0

Ich denke, es entspricht der Identität des Benutzers, Berechtigungen zu überprüfen, und nicht der Reihenfolge, in der die Berechtigungen aufgeteilt werden. Dateien und Benutzer sind privilegiert und Befehle sollten nicht geteilt werden.

Aldridge
quelle
3
Ich möchte nicht unhöflich klingen, und ich verstehe, dass Englisch möglicherweise nicht Ihre Muttersprache ist, aber ich verstehe diese Antwort überhaupt nicht, so wie das, was es zu sagen versucht. "Übereinstimmung" bedeutet "Vereinbarung" oder "Konformität"; Ich kann nicht sehen, wie es mit "Benutzeridentität" verwendet werden kann. Was meinst du mit "um die Berechtigungen zu teilen"? "Teilen" bedeutet "trennen". Wessen "Bestellung"? Wie werden Dateien "privilegiert", wenn sie keine Berechtigung haben? Ich denke, ich kann irgendwie verstehen, dass "Befehle nicht geteilt werden sollten" im Zusammenhang mit dieser Frage, aber das war's. So wie es ist, scheint es nicht zu analysieren.
JoL
@JoL Ich denke, "die Reihenfolge" ist eine Fehlübersetzung und sollte "der Befehl" sein, der eine andere Analyse dieses Satzes ermöglicht. Etwas umständlich formuliert, um das, was in dieser Antwort steht, so oft wie möglich zu verwenden: "Ich denke, es hängt davon ab, wie die Identität des Benutzers verwendet wird, um Berechtigungen zu überprüfen, die nicht gemäß dem Befehl aufgeteilt wurden. Berechtigungen gelten für Dateien und Benutzer sei nicht gespalten für Befehle. " Dies ist immer noch nicht zu klar, aber es macht für mich ein bisschen mehr Sinn als für Sie. Ich hoffe, dass mein Kommentar jemandem hilft, diese Antwort vollständig zu verstehen und sie in Form zu bringen
hvd