
Есть ли способ сделать запись sudoers, которая позволяет выполнять только определенную команду без дополнительных аргументов? Я не могу найти ресурс, описывающий, как работает сопоставление команд с sudoers.
Допустим, я хочу предоставить sudo для /path/to/executable arg
.
Делает ли запись следующего вида:
user ALL=(ALL) /path/to/executable arg
строго разрешает доступ sudo к команде, точно соответствующей этой? То есть, он не предоставляет пользователю привилегии sudo для /path/to/executable arg arg2
?
решение1
Я нахожу следующее в 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