![Gibt es eine Möglichkeit, die Root-Anforderungen für einen bestimmten Befehl in Linux zu entfernen? Wenn ja, wie?](https://rvso.com/image/1316781/Gibt%20es%20eine%20M%C3%B6glichkeit%2C%20die%20Root-Anforderungen%20f%C3%BCr%20einen%20bestimmten%20Befehl%20in%20Linux%20zu%20entfernen%3F%20Wenn%20ja%2C%20wie%3F.png)
Ich verwende Ubuntu 12.04 LTS und versuche, den spezifischen Befehl
dhclient
erfordert keine Root-Rechte. Ich habe einige Nachforschungen angestellt und bin zu der Überzeugung gelangt, dass ich einen „su“-Benutzer freischalten könnte, für den ich zu nichts Root-Rechte benötige, aber ich habe Angst, dass ich auf diese Weise etwas kaputt mache.
Vielleicht stelle ich zwei getrennte Fragen:
Wo befinden sich in meinem Betriebssystem alle Befehle, für die keine Root-Rechte erforderlich sind?
Kann ich diesen Befehl dorthin verschieben?
In meinem Fall funktioniert jede Methode, und ehrlich gesagt bin ich mir nicht einmal sicher, ob sich die Befehle des normalen Benutzers dadurch vom Rest unterscheiden.
Antwort1
Am besten geht das mit sudo, das sehr gut konfigurierbar ist, was die Auswahl der Benutzer betrifft, die welche Befehle ausführen dürfen. Verwenden Sie visudo
zum Bearbeiten /etc/sudoers
(bearbeiten Sie diese Datei niemals direkt – wenn Sie einen Fehler machen, sperren Sie sich selbst vollständig aus). Der folgende Eintrag würde dem Benutzer bob
die Ausführung dhclient
ohne Kennwort ermöglichen.
bob ALL = (root) NOPASSWD: /sbin/dhclient
Bob würde es ausführen sudo dhclient
, wenn es nötig wäre.
Antwort2
Ob ein bestimmter Benutzer ein Programm (Binärprogramm oder Skript) erfolgreich ausführen kann oder nicht, hängt von zwei Dingen ab:
Der Benutzer benötigt Ausführungsberechtigungen für die Datei.
Dies ist kein Problem:
ls -l
zeigt, dass jeder Benutzer ausführen kann/sbin/dhclient
.Der Benutzer benötigt Lese-, Schreib- und/oder Ausführungsrechte für die Dateien, auf die das Programm zugreift.
Dieser Teil ist viel, viel schwieriger und gefährlicher, da dabei möglicherweise die Berechtigungen vieler Dateien geändert werden müssen.
Weitere Informationen finden Sie unterChmod - Wikipedia.
Der normale Weg, einen Befehl mit Root-Rechten auszuführen, istsudo
. Von dermanpage:
sudoermöglicht einem berechtigten Benutzer die Ausführung einesBefehlals Superuser oder ein anderer Benutzer, wie in dersudoersDatei. Die reale und effektive UID und GID werden so eingestellt, dass sie mit denen des Zielbenutzers übereinstimmen, wie in der Passwd-Datei angegeben, und der Gruppenvektor wird basierend auf der Gruppendatei initialisiert (es sei denn, der-POption angegeben wurde). Wenn der aufrufende Benutzer root ist oder der Zielbenutzer derselbe ist wie der aufrufende Benutzer, ist kein Passwort erforderlich. Andernfallssudoerfordert, dass sich Benutzer standardmäßig mit einem Passwort authentifizieren ( HINWEIS: in der Standardkonfiguration ist dies das Passwort des Benutzers, nicht das Root-Passwort). Sobald ein Benutzer authentifiziert wurde, wird ein Zeitstempel aktualisiert und der Benutzer kann sudo dann für einen kurzen Zeitraum (5 Minuten, sofern nicht insudoers).
Die grundlegende Syntax in Ihrem speziellen Fall lautet:
sudo dhclient
Zu Ihren anderen Fragen:
1. Wo befinden sich in meinem Betriebssystem alle Befehle, die keine Root-Rechte erfordern?
Die meisten Binärdateien für alle Benutzer befinden sich in /bin
und ./usr/bin
/usr/local/bin
Die meisten Systembinärdateien (erfordern Root-Rechte) befinden sich in /sbin
.
Dies ist nur eine Faustregel. Sie können Binärdateien platzieren, wo immer Sie möchten.
Siehe auch:Dateisystemhierarchiestandard
2. Kann ich diesen Befehl dorthin verschieben?
Abgesehen davon, dass möglicherweise etwas kaputt geht, hätte dies absolut keine Auswirkungen.