binden Sie den root-Befehl in den sudo-Befehl

350
Suhayb Kharabsheh

Ist es möglich, einen Sudo-Befehl mit dem Administratorkennwort auszuführen?

Beispiel:

sudo apt-get update -password is 'root' 

Hiermit wird beim Start von Ubuntu, das Root-Zugriff benötigt, ein Befehl in eine Anwendung eingefügt

1
Sie können die Sudoers-Datei ändern, um die Kennwortaufforderung für den Benutzer zu deaktivieren, der das Programm ausführt. cascer1 vor 7 Jahren 1
@ cascer1 Nein, es ist wichtig, dass das Passwort aktiviert ist Suhayb Kharabsheh vor 7 Jahren 0
Ist das Passwort aktiviert, aber irgendwo in Klartext geschrieben? Möglicherweise haben Sie nicht verstanden, dass @ cascer1 von einer Möglichkeit spricht, die kennwortlose Ausführung für ein bestimmtes Paar (Benutzer / Befehl) selektiv zuzulassen, was als eine ziemlich gute Idee erscheint. Der Benutzer muss weiterhin ein Kennwort für andere sudo-Befehle eingeben. Sie können sich die Sudoer-Datei-Dokumentationen anschauen. A. Loiseau vor 7 Jahren 3

2 Antworten auf die Frage

1
hvindin

Wenn Sie möchten, dass ein spezieller Prozess beim Start als root ausgeführt wird, würde ich vorschlagen, dass Sie ihn in ein systemd / init.d-Skript packen. Für systemd würde so etwas wahrscheinlich funktionieren:

[Unit] Description=Some command  [Service] User=root Type=oneshot ExecStart=/usr/bin/whateverprogram and associated arguments  [Install] WantedBy=multi-user.target 

Obwohl ich im obigen Beispiel glaube, ist die User-Direktive überflüssig.

Alternativ, ohne ein Geheimtool für die Verwaltung von Geheimnissen zu implementieren (siehe hashicorps vault, ansible hat eine ähnliche Funktion usw.), stehen Ihnen zwei Optionen offen:

Erstellen Sie eine /etc/sudoers.d/somefile mit einem Eintrag zu allen Programmen, die mit erhöhten Berechtigungen ohne das Kennwort ausgeführt werden sollen. Ie.

ALL ALL=/usr/bin/theprogramtorun NOPASSWD 

Oder wenn Sie sich überhaupt nicht für die Sicherheit des Systems interessieren und Ihr Benutzer ein Sudoer ist, könnten Sie versuchen, ein Scripting wie folgt auszuführen:

echo "thisisaterribleidea" | sudo -S /usr/bin/command 

Um das Passwort im Klartext über die Befehlszeile zu übergeben

-1
Suhayb Kharabsheh

Nun, beste Praxis ist:

echo "your password" | sudo --stdin command 

Dieser Befehl wird zuerst ausgeführt und dann das in der Echo-Anweisung eingegebene Passwort eingegeben.

Diese Lösung hat zwei negative Auswirkungen. Das eine ist, dass sich das Passwort in der Historie der Shell befindet und das zweite, dass Sie nichts eingeben können, während der Befehl ausgeführt wird. pbies vor 7 Jahren 1
@pbies Nun, das erste ist eine echte Bedrohung, ich interessiere mich nicht für das zweite, da ich versuche, beim Systemstart ein Skript auszuführen Suhayb Kharabsheh vor 7 Jahren 0
Sie können dies in der Datei /etc/rc.local tun. pbies vor 7 Jahren 0
Um die erste Tatsache etwas zu verringern, möchten Sie vielleicht eine private, versteckte schreibgeschützte Datei "cat". Ein weiterer Nachteil ist, dass Sie alle Ihre Skripts überprüfen müssen, wenn Sie Ihr Kennwort ändern. A. Loiseau vor 7 Jahren 1