У нас есть автоматический скрипт на одном из наших серверов, запущенный observatory-user. Он должен сообщить другому скрипту, запущенному primary-user, обновить файл журнала.
Код для этого:sudo kill -UPDATE_LOG pid
Очевидно, у observatory-user должны быть разрешения на запуск этой команды. Однако я не хочу давать этому автоматическому скрипту разрешение на завершение процессов по понятным причинам.
Я хотел бы сделать что-то вродеalias update_log='kill -UPDATE_LOG; grant update_log on observing_user
решение1
вероятно, используя
sudo pkill -UPDATE_LOG <process-name>
вместо убить будет достаточно ограничительным для удовлетворения ваших потребностей?
Другой способ решения этой проблемы — встроить команду, которую вы хотите предложить с помощью sudo, в пользовательский скрипт или exec для выполнения этого действия.
решение2
Итак, я нашел ответ, изменив ключевые слова.
Смотрите также: Как запретить пользователям sudo выполнять определенные команды?
Шаг 1:
sudo visudo
Синтаксис такой:
user host=command
Это дает sudo доступ к заданной команде. Вы также можете делать группы, как
%group host=command
Вы можете использовать ALL в любом из 3 «столбцов», чтобы применить это к любому хосту, любой команде или любому пользователю.
Мое решение было
observing_user ALL=kill -USR1 *