Ich habe einer Gruppe die Berechtigung erteilt, bestimmte Befehle ohne Kennwort über sudo auszuführen. Wenn einer der Benutzer einen Tippfehler macht oder den falschen Befehl ausführt, werden sie vom System zur Eingabe ihres Kennworts aufgefordert und erhalten eine Fehlermeldung. Dies ist für den Benutzer verwirrend, daher möchte ich nur einen Fehler anzeigen, anstatt ihn zur Eingabe eines Kennworts aufzufordern. Ist das möglich?
Hier ist ein Beispiel meiner sudoers-Datei:
%mygroup ALL=(ALL) NOPASSWD:/usr/local/bin/myscript.sh *
Beispiel, wenn sie das falsche Skript ausführen:
# sudo /usr/local/bin/otherscript.sh
[sudo] password for user:
Sorry, user user is not allowed to execute '/usr/local/bin/otherscript.sh' as root on <hostname>.
Gewünschte Ausgabe:
Sorry, user user is not allowed to execute '/usr/local/bin/otherscript.sh' as root on <hostname>. Please check the command and try again.
Beachten Sie die fehlende Passwortabfrage.
Mein Google-Fu hat mich im Stich gelassen und liefert nur Ergebnisse auf nicht nach einem Passwort gefragt , wenn der Benutzer wird erlaubt , den Befehl auszuführen.
sudo
Sie ausführen können, ohne Ihr Kennwort einzugeben . Mit der gewünschten Funktion konnte ich diese Informationen für bestimmte Befehle abrufen.sudo
ist ein ebenso großes Problem, wenn Benutzer Schreibzugriff auf diese Dateien haben.Antworten:
Aus einer kurzen Lektüre von
sudo(8)
Und für die Zweifler:
So getestet:
Also würde ein
alias
fürsudo
diese Leute wahrscheinlich den Trick tun, um die Passwortabfrage zu verhindern. Warum dies eine benutzerdefinierte Kompilierung erfordertsudo
, weiß ich nicht, ich habe nur das Handbuch gelesen.quelle
alias sudo="$(which sudo) -n"
in / etc / bashrc einfügen und dann je nach Wunsch entwedersudo
(angepasstes Verhalten) odercommand sudo
(Standardverhalten) verwenden.Eine Sache, die bei mir (Sudo-Version 1.8.17p1) funktioniert hat, aber nur einen Teil Ihres Problems befriedigt, ist, die Anzahl der Kennwortversuche auf 0 zu setzen.
Dadurch wird sudo mit Code 1 beendet, wenn ein Befehl ausgeführt wird, für den ein Kennwort erforderlich ist. Es wird jedoch keine Fehlermeldung ausgegeben.
quelle
Du kannst nicht.
Erst wenn Sie sich authentifiziert haben, können Sie feststellen, wer Sie sind. Standardmäßig können Sie sich nicht ohne ein Kennwort authentifizieren.
Sie können die Authentifizierung ändern, um USB-Sticks, Fingerabdruckscanner, Sprachauthentifizierung, Gesichtserkennung oder eine Reihe anderer Dinge zu verwenden, aber der Punkt ist der gleiche.
Sie können sich nicht authentifizieren, ohne UND zu authentifizieren, bevor Sie sich authentifizieren. Sudo kann Ihnen nicht sagen, was Sie ausführen können oder nicht.
quelle
@StrongBad hat einen Kommentar verfasst, der eine Antwort verdient:
Ich denke, die beste Lösung wäre, ein Wrapper-Skript zu schreiben, das immer
sudo
mit den richtigen Parametern aufruft . (Einschließlich-n
)Das Wrapper-Skript kann Argumente analysieren usw., so dass das aufgerufene Sudo-Skript so klein wie möglich und daher weniger fehleranfällig wird.
quelle
Das ist nicht möglich. Die einzige Möglichkeit ist, den Quellcode zu ändern und Ihren eigenen Fork von zu kompilieren
sudo
quelle