Вы не использовали никаких подстановочных знаков, но предоставили два аргумента. Следовательно Sudo
Sudo ищет команды именно так, как написано (исключая путь к пути) (из MAN 5 Sudoers
):
If a Cmnd has associated command line arguments, then the arguments in
the Cmnd must match exactly those given by the user on the command line
(or match the wildcards if there are any).
Попробуйте что-то вроде:
Cmnd_Alias AWSS3_CMD = /usr/local/bin/aws s3 cp *, /usr/local/aws/bin/aws s3 cp *
Обратите внимание, что:
Wildcards in command line arguments should be used with care. Because
command line arguments are matched as a single, concatenated string, a
wildcard such as ‘?’ or ‘*’ can match multiple words.
так Только один подстановочный знак нужен за команду.
То же, что и @muru, но для тех, кто любит полный рабочий пример:
# Cmnd alias specification
Cmnd_Alias ECHO_CMD=/bin/echo A *,/bin/echo B *
# Make USER run specific commands on given HOSTNAME
# USER_NAME
#userx
userx ALL=(root) NOPASSWD: /sbin/cmd1,/sbin/cmd2,ECHO_CMD
В то время как /sbin/cmd1
, /sbin/cmd2
могут быть любыми другими командами.
Цель ECHO_CMD
состоит в том, чтобы представить, что sudo echo X A
будет запрашивать кодовую фразу, а sudo echo A X
нет, и позволить вам обрести уверенность посредством такого простого эксперимента.
(Предполагалось, что эхо находится в /bin/echo
, чтобы проверить, где оно находится в вашей системе, попробуйтеwhereis echo
)