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, sudo
da 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 vim
einfach 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.