GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So führen Sie bestimmte Befehle ohne Sudo-Passwort in Linux aus

Ich verwende ein Skript in meinem Ubuntu-System, das auf AWS bereitgestellt wird. Der Hauptzweck dieses Skripts besteht darin, zu überprüfen, ob ein bestimmter Dienst in regelmäßigen Abständen ausgeführt wird (um genau zu sein, jede Minute) und diesen Dienst automatisch zu starten, wenn er aus irgendeinem Grund gestoppt wird. Das Problem ist jedoch, dass ich sudo-Berechtigungen benötige, um den Dienst zu starten. Wie Sie vielleicht bereits wissen, sollten wir ein Passwort angeben, wenn wir etwas als sudo-Benutzer ausführen. Aber das will ich nicht. Was ich eigentlich tun möchte, ist, den Dienst als sudo ohne Passwort auszuführen. Wenn Sie sich jemals in einer solchen Situation befinden, kenne ich eine kleine Problemumgehung. Heute werde ich Ihnen in dieser kurzen Anleitung beibringen, wie Sie bestimmte Befehle ohne sudo-Passwort in Linux und Unix-ähnlichen Betriebssystemen ausführen.

Sehen Sie sich das folgende Beispiel an.

$ sudo mkdir /ostechnix
[sudo] password for sk:

Wie Sie im obigen Screenshot sehen können, muss ich das sudo-Passwort angeben, wenn ich ein Verzeichnis namens ostechnix im Stammordner (/) erstelle. Immer wenn wir versuchen, einen Befehl mit sudo-Berechtigungen auszuführen, müssen wir das Passwort eingeben. In meinem Szenario möchte ich jedoch das sudo-Passwort nicht angeben. Hier ist, was ich getan habe, um einen sudo-Befehl ohne Passwort auf meiner Linux-Box auszuführen.

Haftungsausschluss: Dies dient nur zu Bildungszwecken. Sie sollten bei der Anwendung dieser Methode sehr vorsichtig sein. Diese Methode ist sowohl produktiv als auch destruktiv. Sagen Sie zum Beispiel, wenn Sie Benutzern erlauben, 'rm' auszuführen Befehl ohne sudo-Passwort, könnten sie versehentlich oder absichtlich wichtige Inhalte löschen. Sie wurden gewarnt!

Führen Sie bestimmte Befehle ohne sudo-Passwort in Linux aus

Wenn Sie aus irgendeinem Grund einem Benutzer erlauben möchten, einen bestimmten Befehl auszuführen, ohne das sudo-Passwort anzugeben, müssen Sie diesen Befehl in sudoers hinzufügen Datei.

Ich möchte den Benutzer namens sk um mkdir auszuführen Befehl, ohne das sudo-Passwort anzugeben. Mal sehen, wie es geht.

Sudoers-Datei bearbeiten:

$ sudo visudo

Fügen Sie die folgende Zeile am Ende der Datei hinzu.

sk ALL=NOPASSWD:/bin/mkdir

Hier, sk ist der Benutzername. Gemäß der obigen Zeile ist der Benutzer sk kann 'mkdir' ausführen Befehl von jedem Terminal aus, ohne sudo-Passwort.

Sie können zusätzliche Befehle hinzufügen (zum Beispiel chmod ) mit durch Kommas getrennten Werten wie unten gezeigt.

sk ALL=NOPASSWD:/bin/mkdir,/bin/chmod

Speichern und schließen Sie die Datei. Melden Sie sich von Ihrem System ab (oder starten Sie es neu). Melden Sie sich jetzt als normaler Benutzer „sk“ an und versuchen Sie, diese Befehle mit sudo auszuführen, und sehen Sie, was passiert.

$ sudo mkdir /dir1

Sehen? Obwohl ich 'mkdir' ausgeführt habe Befehl mit sudo-Berechtigungen gab es keine Passwortabfrage. Von nun an sk der Benutzer müssen das sudo-Passwort nicht eingeben, während 'mkdir' ausgeführt wird Befehl.

Wenn Sie alle anderen Befehle außer den in sudoers-Dateien hinzugefügten Befehlen ausführen, werden Sie aufgefordert, das sudo-Passwort einzugeben.

Lassen Sie uns einen weiteren Befehl mit sudo ausführen.

$ sudo apt update

Sehen? Dieser Befehl fordert mich auf, das sudo-Passwort einzugeben.

Wenn Sie nicht möchten, dass dieser Befehl Sie auffordert, nach dem sudo-Passwort zu fragen, bearbeiten Sie die sudoers-Datei:

$ sudo visudo

Fügen Sie 'apt' hinzu Befehl in der Visudo-Datei wie folgt:

sk ALL=NOPASSWD: /bin/mkdir,/usr/bin/apt

Haben Sie bemerkt, dass sich der Pfad der ausführbaren apt-Binärdatei von mkdir unterscheidet? Ja, Sie müssen den korrekten Pfad der ausführbaren Datei angeben. Um den ausführbaren Dateipfad eines beliebigen Befehls zu finden, zum Beispiel 'apt' , verwenden Sie 'whereis' Befehl wie unten.

$ whereis apt
apt: /usr/bin/apt /usr/lib/apt /etc/apt /usr/share/man/man8/apt.8.gz

Wie Sie sehen, ist die ausführbare Datei für den apt-Befehl /usr/bin/apt , daher habe ich es in die sudoers-Datei eingefügt.

Wie ich bereits erwähnt habe, können Sie beliebig viele Befehle mit kommaseparierten Werten hinzufügen. Speichern und schließen Sie Ihre sudoers-Datei, wenn Sie fertig sind. Melden Sie sich von Ihrem System ab und wieder an.

Prüfen Sie nun, ob Sie den Befehl ohne Verwendung des sudo-Passworts ausführen können:

$ sudo apt update

Sehen? Der apt-Befehl hat mich nicht nach dem Passwort gefragt, obwohl ich ihn mit sudo ausgeführt habe.

Hier ist noch ein weiteres Beispiel. Wenn Sie einen bestimmten Dienst ausführen möchten, zum Beispiel Apache2, fügen Sie ihn wie unten gezeigt hinzu.

sk ALL=NOPASSWD:/bin/mkdir,/usr/bin/apt,/bin systemctl restart apache2

Jetzt kann der Benutzer 'sudo systemctl restart apache2' ausführen Befehl ohne sudo-Passwort.

Empfohlener Download - Kostenloser Spickzettel:"Linux-Befehlszeilen-Spickzettel"

Kann ich mich im obigen Fall bei einem bestimmten Befehl erneut authentifizieren? Natürlich ja! Entfernen Sie einfach den hinzugefügten Befehl. Abmelden und wieder anmelden.

Alternativ können Sie 'PASSWD:' hinzufügen Direktive vor dem Befehl. Sehen Sie sich das folgende Beispiel an.

Fügen Sie die folgende Zeile wie unten gezeigt hinzu/ändern Sie sie.

sk ALL=NOPASSWD:/bin/mkdir,/bin/chmod,PASSWD:/usr/bin/apt

In diesem Fall sk der Benutzer kann 'mkdir' ausführen und 'chmod' Befehle ohne Eingabe des sudo-Passworts. Er muss jedoch das sudo-Passwort angeben, wenn er 'apt' ausführt Befehl.

Empfohlene Lektüre:

  • Erteilen und Entfernen von Sudo-Berechtigungen für Benutzer unter Ubuntu
  • So ändern Sie die Standard-Sudo-Protokolldatei in Linux
  • So stellen Sie Sudo-Berechtigungen für einen Benutzer wieder her
  • So finden Sie alle Sudo-Benutzer in Ihrem Linux-System
  • So zwingen Sie Benutzer, bei der Verwendung von sudo das Root-Passwort anstelle ihres eigenen Passworts zu verwenden

Linux
  1. Führen Sie Container unter Linux ohne sudo in Podman aus

  2. So zeigen Sie Sternchen beim Eingeben des Sudo-Passworts in Linux an

  3. Wie führe ich Linux-Bash-Befehle in einem PERL-Skript aus?

  4. Wie führe ich ein bestimmtes Programm als Root ohne Passwortabfrage aus?

  5. So führen Sie SCP ohne Unterbrechung der Kennwortabfrage unter Linux aus

So ändern Sie das Sudo-Passwort-Timeout in Linux

So führen Sie mehrere Linux-Befehle in einem einzigen Befehl aus

So führen Sie Sudo-Befehle ohne Passwort aus

So führen Sie mehrere Linux-Befehle gleichzeitig im Linux-Terminal aus

So führen Sie einen Alias ​​mit Sudo in Linux aus

So führen Sie sudo-Befehle ohne Passwort aus