Есть ли способ создать запись sudoers, которая позволяет выполнять только определенную команду без каких-либо дополнительных аргументов? Кажется, я не могу найти ресурс, который описывает, как сопоставление команд работает с sudoers.
Скажем, я хочу предоставить sudo для /path/to/executable arg
.
Имеет ли запись подобное:
user ALL=(ALL) /path/to/executable arg
строго разрешить доступ sudo к команде, которая точно соответствует этому? То есть он не предоставляет пользователю привилегий sudo для /path/to/executable arg arg2
?
Я нахожу следующее в man sudoers
, рядом с определением Cmnd_List:
A simple filename allows the user to run the command with any arguments
he/she wishes. However, you may also specify command line arguments
(including wildcards). Alternately, you can specify "" to indicate
that the command may only be run without command line arguments.
Это могло бы означать, что конкретное разрешение "arg" отключит "arg arg2". С другой стороны, я видел некоторую несогласованность в том, как файл sudoers обрабатывается в разных ОС (например, Linux против Solaris). Поэтому вам следует протестировать свою собственную среду.
Одно, несколько уродливое решение: создайте отдельный исполняемый сценарий, который запускает указанную команду только с желаемым аргументом, и предоставьте sudo доступ к этому сценарию, а не к исходной команде.
#!/bin/bash
/path/to/executable arg