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

Führen Sie Befehle als ein anderer Benutzer über Sudo in Linux aus

Stellen Sie sich dieses Szenario vor. Sie verwalten einen Linux-Server, auf den mehrere Benutzer zugreifen. Alle Benutzer haben sudo Rechte. Sie möchten bestimmte Linux-Befehle mit verschiedenen Benutzern testen. Wie würdest du das machen? Melden Sie sich als ein Benutzer an und testen Sie die Befehle und melden Sie sich dann ab und wieder als ein anderer Benutzer an und testen Sie die Befehle? Ja, es ist eine Möglichkeit, es zu tun. Es gibt jedoch eine einfache Möglichkeit, Befehle als anderer Benutzer über sudo in Linux auszuführen. Lesen Sie weiter, um es herauszufinden.

Für diese Anleitung habe ich zwei Benutzerkonten erstellt, nämlich "senthil" und "kumar" in meiner AlmaLinux 8 Testmaschine. Ich werde "senthil" als aktuellen Benutzer und "kumar" als Zielbenutzer verwenden.

Ich möchte, dass der Benutzer „senthil“ jeden Befehl als Benutzer „kumar“ auf allen Hosts ausführen kann, ohne sich tatsächlich als „kumar“ anzumelden. Verstanden? Lassen Sie mich Ihnen ein Beispiel zeigen.

Führen Sie Befehle als ein anderer Benutzer über Sudo aus

Ich bin derzeit als Benutzer "senthil" angemeldet. Lassen Sie mich Ihnen den aktuell angemeldeten Benutzer mit whoami anzeigen Befehl.

$ whoami
senthil

Jetzt werde ich ein einfaches "echo ausführen " Befehl mit sudo als Zielbenutzer "kumar", während Sie als "senthil" angemeldet sind:

$ sudo -u kumar bash -c 'echo "My Username is $USER, and my user ID is $UID"'

Sie werden aufgefordert, das Passwort des aktuellen Benutzers einzugeben (in diesem Fall „senthil“). Einmal authentifiziert, das echo Der Befehl wird als Benutzer „kumar“ ausgeführt und zeigt den Benutzernamen und die Benutzer-ID von „kumar“ an.

Beispielausgabe:

[sudo] password for senthil: 
My Username is kumar, and my user ID is 1001

Was wir gerade getan haben, ist, dass wir das "echo " Befehl als Benutzer "kumar", während wir uns als "senthil" angemeldet haben. Deshalb sehen Sie den Benutzernamen und die Benutzer-ID von kumar, aber nicht die von senthil.

Lassen Sie uns mit id überprüfen, ob die uid des Benutzers "kumar" korrekt ist Befehl.

$ id kumar
uid=1001(kumar) gid=1001(kumar) groups=1001(kumar),10(wheel)

Ja, die UID von kumar ist in beiden Ausgaben korrekt.

Hier das -u Flag wird verwendet, um den angegebenen Befehl als ein anderer Benutzer auszuführen (d. h. in diesem Fall kumar) und bash -c wird verwendet, um den Namen des Befehls anzugeben. Sie sollten den Befehl in einfachen Anführungszeichen erwähnen.

Wenn Sie bash -c nicht verwenden Option, das echo Der Befehl gibt den Benutzernamen und die UID des aktuellen Benutzers anstelle des Zielbenutzers zurück.

$ sudo -u kumar echo "My Username is $USER, and my user ID is $UID"
My Username is senthil, and my user ID is 1000

Ebenso können Sie alle Befehle als anderer Benutzer ausführen.

Bitte beachten Sie, dass ich in unserem vorherigen Beispielbefehl sudo nicht eingegeben habe Kennwort für den Zielbenutzer. Wieso den? Denn das echo Der Befehl erfordert kein sudo Passwort.

Wenn Sie einen Befehl ausführen, der sudo erfordert Berechtigung als anderer Benutzer müssen Sie das Passwort eingeben. Hier ist ein weiteres Beispiel.

$ sudo -u kumar bash -c 'sudo dnf --refresh update'

Beispielausgabe:

[sudo] password for senthil: 
[sudo] password for kumar: 
AlmaLinux 8 - BaseOS                                                                                                                                                               344  B/s | 4.3 kB     00:12    
AlmaLinux 8 - AppStream                                                                                                                                                            388  B/s | 4.7 kB     00:12    
AlmaLinux 8 - Extras                                                                                                                                                               316  B/s | 3.9 kB     00:12    
Dependencies resolved.
Nothing to do.
Complete!

Haben Sie bemerkt, dass ich sudo eingegeben habe Passwort für beide Benutzer? Ja. Denn wir führen "sudo dnf update “, was erhöhte Rechte erfordert. Deshalb muss der sudo eingegeben werden Kennwort für den Zielbenutzer. Für normale Befehle z.B. ls , uname usw. müssen wir das Passwort des Zielbenutzers nicht eingeben.

Nicht nur Linux-Befehle, Sie können diese Methode auch zum Ausführen von Skripten anwenden. Angenommen, Sie möchten ein Sicherungsskript ausführen, das in $HOME gespeichert ist Verzeichnis eines anderen Benutzers. Sie können das Skript einfach vom aktuellen Benutzer als anderer Benutzer ausführen, indem Sie diesen Befehl verwenden:

$ sudo -u kumar bash -c '~/backup_script_name'

Befehle ohne Sudo-Passwort ausführen

Manchmal befinden Sie sich möglicherweise in einer Situation, in der Sie das sudo-Passwort nicht für alle Befehle eingeben möchten. In solchen Fällen können Sie die Passwortabfrage für bestimmte Befehle überspringen, indem Sie NOPASSWD hinzufügen Option in /etc/sudoers Datei.

Angenommen, Sie möchten einem bestimmten Benutzer erlauben, dnf auszuführen Befehl ohne sudo-Passwort. Suchen Sie dazu zunächst den Pfad des dnf Befehl mit which oder whereis Befehle.

$ which dnf
/usr/bin/dnf
$ whereis dnf
dnf: /usr/bin/dnf /etc/dnf /usr/share/man/man8/dnf.8.gz

Wie Sie sehen können, ist der ausführbare Pfad von dnf Befehl ist /usr/bin/dnf .

Bearbeiten Sie nun /etc/sudoers Dateien mit dem Befehl:

$ sudo visudo

Vorsicht: Bitte beachten Sie, dass Sie die sudoers nicht manuell bearbeiten sollten Datei mit einem beliebigen Texteditor. Verwenden Sie immer visudo Befehl, um die sudoers sicher zu bearbeiten Datei.

Fügen Sie am Ende der Datei die folgende Zeile hinzu, damit der Benutzer namens "kumar" dnf ausführen kann Befehle ohne sudo-Passwort.

kumar ALL=NOPASSWD:/usr/bin/dnf

Speichern Sie die Datei und beenden Sie sie.

Von nun an kann der Benutzer "kumar" dnf ausführen Befehle ohne sudo Passwort.

[[email protected] ~]$ sudo -u kumar bash -c 'sudo dnf --refresh update'
[sudo] password for senthil: 
AlmaLinux 8 - BaseOS                                                                                                                                                               358  B/s | 4.3 kB     00:12    
AlmaLinux 8 - AppStream                                                                                                                                                            324  B/s | 4.7 kB     00:14    
AlmaLinux 8 - Extras                                                                                                                                                               302  B/s | 3.9 kB     00:13    
Dependencies resolved.
Nothing to do.
Complete!

Sehen? Wir müssen sudo nicht eingeben Passwort für "kumar".

Um dieses Verhalten aufzuheben, entfernen Sie einfach die obige Zeile.

Haftungsausschluss: Sie sollten bei der Anwendung dieser Methode sehr vorsichtig sein. Diese Methode kann sowohl für produktive als auch für destruktive Zwecke verwendet werden. Sagen Sie zum Beispiel, wenn Sie Benutzern erlauben, 'rm' auszuführen Befehl ohne sudo Passwort, könnten sie versehentlich oder absichtlich wichtige Dateien löschen. Tun Sie dies nur, wenn es wirklich notwendig ist.

Schlussfolgerung

In diesem kurzen Tutorial haben wir besprochen, wie Sie Benutzern erlauben können, Befehle als ein anderer Benutzer über sudo in Linux auszuführen. Wir haben auch gelernt, wie man die sudo-Passwortabfrage für bestimmte Benutzer deaktiviert, wenn man bestimmte Befehle ausführt, indem man sudoers modifiziert Datei.

Wie ich bereits gewarnt habe, müssen Sie vorsichtig sein, wenn Sie diese Methode auf einem Produktionssystem testen. Sie können einem Benutzer unwissentlich erlauben, einen schädlichen Befehl auszuführen (z. B. rm ) ohne das sudo-Passwort eingeben zu müssen. Sie sollten beim Testen dieser Art von Linux-Tipps immer vorsichtig sein.

Verwandte Lektüre:

  • Befehle auf Remote-Linux-Systemen über SSH ausführen
  • So führen Sie bestimmte Befehle ohne Sudo-Passwort in Linux aus

AlmaLinux
  1. 20 wichtige Linux-Befehle für jeden Benutzer

  2. Verwenden von sudo zum Delegieren von Berechtigungen in Linux

  3. Untersuchung der Unterschiede zwischen den Befehlen sudo und su in Linux

  4. sudo-Befehlsbeispiele in Linux

  5. Windows UAC vs. Linux sudo

Geben Sie Linux-Befehle in Großbuchstaben ein, um sie als Sudo-Benutzer auszuführen

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

So erstellen Sie einen Sudo-Benutzer in Ubuntu Linux

So führen Sie Sudo-Befehle ohne Passwort aus

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

So führen Sie sudo-Befehle ohne Passwort aus