Нет пароля для запуска команды как root для фиксированной команды?

Можно ли определить правило в sudoers, чтобы один пользователь мог выполнить одну четко определенную команду как root, без пароля или другой аутентификации, за исключением того, что был правильным пользователем?

Существуют ли альтернативы для решения этого (или что-то очень похожее)?

Использовать бит разрешения suid? Может быть, использовать ключи ssh?

Файл sudoers позволяет указать команды для разрешения:

 username ALL=(root) NOPASSWD: /bin/foo bar baz 

Здесь username – это пользователь, которого вы хотите разрешить, и команда идет в конце строки. Если вы укажете аргументы для команды, пользователь сможет запускать ее только с этими аргументами, но если вы не укажете их здесь, пользователь может запустить команду с любыми аргументами, которые они выбирают. Вы можете указать несколько команд, разделенных запятыми или как отдельные строки.

Отредактируйте файл sudoers с помощью visudo (как root) и добавьте строку в этом формате, с соответствующими изменениями, и пользователю будет разрешено выполнять точно указанную вами команду с повышенными привилегиями.


NOPASSWD: позволяет пользователю запускать команду без запроса. ALL – ограничение хоста, которое вы, вероятно, можете игнорировать (вы узнаете, не можете ли вы). (root) означает, что они могут выполнять только команду в качестве пользователя root.


Поскольку вы спрашиваете, это можно сделать с ssh тоже, хотя sudo лучше. Вы можете поместить COMMAND=something в начале строки в /root/.ssh/authorized_keys и предоставить пользователю специальный SSH-ключ, соответствующий этой команде. Единственными возможными причинами, которые были бы лучше, чем sudo является то, что вы не хотите, чтобы у пользователя был какой-либо другой доступ к машине, или если вы не хотели, чтобы им приходилось писать команду самостоятельно.