нужно чтобы пользователь мог зайти на Linux в SSH или с консоли напрямую и выполнить какую-то команду, требующую прав root
ну не давать ему же пароль от root!
Можно включить его в группу admin, но и это лишнее количество передаваемых прав. Так он дел натворит! Можно дать ему доступ к sudo на конкретные команды или (и) переменные среды конкретного пользователя. Этому и посвящена эта запись.
Идея в том, что будет один пользователь и он сможет выполнять определенные команды от sudo не имея root прав. Но можно сделать это и нескольким пользователям.
Общий вид команд этого файла:
[пользователь] [хост]=([кем может стать]) [что может сделать]
#TVS
#%tvs-ssh-system-views TVS-Laptop = NOPASSWD: /home/tvs/scripting/test.sh # этот вариант с правами на выполнение скрипта группе не работает. Нужно указывать каждому пользователю.
sudo visudo
vova TVS-Laptop = NOPASSWD: /home/tvs/scripting/test.sh tvs TVS-Laptop = NOPASSWD: /home/tvs/scripting/test.sh
чтобы указанная в visudo команда работала нужно сделать
sudo имя_файла.sh
Также здесь, в настройках, указывается какие пользователи могут выполнять команды от sudo
# User privilege specification
root ALL=(ALL:ALL) ALL
Defaults env_reset #команда сбрасывает все переменные среды. Если нужен доступ к каким-то переменным среды, то их нужно указать здесь.
Defaults:%admin !env_reset # не сбрасывать переменные среды для группы admin
которая будет сохранять переменные окружения для всех пользователей группы admin, или:
Defaults:tvs env_keep=my_var1 #сохранить для пользователя tvs переменную var1
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL #членам группы admin дать все права root
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL #членам группы sudo дать разрешение выполнять любые команды
sudo -l
sudo -ll # показать полные данные по правам sudo для текущего пользователя
sudo -lU user_name