Wie gebe ich Befehlsargumente in sudoers an? Als Hintergrund ist aws
Befehl eigentlich ein Gateway zu einer ganzen Reihe von Subsystemen, und ich möchte den Benutzer darauf beschränken, nur ausgeführt zu werdenaws s3 cp ...any other args...
Wenn ich folgendes versuche in /etc/sudoers
Cmnd_Alias AWSS3_CMD = /usr/local/bin/aws s3 cp, /usr/local/aws/bin/aws s3 cp
gbt1 ALL=(gbt-ops) NOPASSWD: AWSS3_CMD
Die Shell fordert leider zur Passworteingabe auf
$ sudo -u gbt-ops aws s3 cp helloworld s3://my-bucket/hw.1
gbt-ops's password:
Wenn ich die Befehlsargumente in Cmnd_Alias entferne, fließt es wie gewünscht (ohne Passwortabfrage), aber die Berechtigungen sind viel zu breit. Also, was ist der richtige Weg, um nur bestimmte Arten von Befehlsaufrufen einzuschränken .
Cmnd_Alias AWSS3_CMD = /usr/local/bin/aws, /usr/local/aws/bin/aws
Dann
$ sudo -u gbt-ops aws s3 cp helloworld s3://my-bucket/hw.1
...happy
Vielen Dank.
Antworten:
Sie haben keine Platzhalter verwendet, aber zwei Argumente angegeben. Sucht daher
sudo
nach Befehlen genau so, wie sie geschrieben wurden (mit Ausnahme der Pfadsuche) (vonman 5 sudoers
):Versuchen Sie etwas wie:
Beachten Sie, dass:
Pro Befehl wird also nur ein Platzhalter benötigt.
quelle
/usr/local/bin/aws s3 cp
in sudoers anzugeben , ist es sicherer, dies durch ein Skript zu ersetzen (das nur von root geschrieben werden kann).Das gleiche wie @muru, aber für diejenigen, die ein voll funktionsfähiges Beispiel mögen:
Während
/sbin/cmd1
,/sbin/cmd2
können andere Befehle sein.Der Zweck von
ECHO_CMD
ist es,sudo echo X A
einen Code zu präsentieren, der nach einer Passphrase fragt, während diessudo echo A X
nicht der Fall ist , und Ihnen zu ermöglichen, durch ein so einfaches Experiment Vertrauen zu gewinnen.(Es wurde davon ausgegangen, dass Echo vorhanden ist
/bin/echo
, um zu überprüfen, wo es sich auf Ihrem System befindet.whereis echo
)quelle
/bin/echo
Binärdatei, aber die meisten Shells verfügen auch über eine integrierte Funktionecho
, die anstelle dieser Binärdatei verwendet wird, wenn Sie nicht den vollständigen Pfad angeben.