делегирование прав sudo другому пользователю

нужно чтобы пользователь мог зайти на Linux в SSH или с консоли напрямую и выполнить какую-то команду, требующую прав root

ну не давать ему же пароль от root!

Можно включить его в группу admin, но и это лишнее количество передаваемых прав. Так он дел натворит! Можно дать ему доступ к sudo на конкретные команды или (и) переменные среды конкретного пользователя. Этому и посвящена эта запись.

Идея в том, что будет один пользователь и он сможет выполнять определенные команды от sudo не имея root прав. Но можно сделать это и нескольким пользователям.

[su_note note_color=”#fff666″]

Общий вид команд этого файла:

[пользователь] [хост]=([кем может стать]) [что может сделать]

#TVS
#%tvs-ssh-system-views TVS-Laptop = NOPASSWD: /home/tvs/scripting/test.sh  # этот вариант с правами на выполнение скрипта группе не работает. Нужно указывать каждому пользователю.

[/su_note]

[su_box title=”запуск файла редактирования и делегирования прав sudo” style=”glass” radius=”4″]

sudo visudo

[/su_box]

[su_box title=”настройка делегирования прав sudo” style=”glass” radius=”4″]

[bash]

vova TVS-Laptop = NOPASSWD: /home/tvs/scripting/test.sh

tvs TVS-Laptop = NOPASSWD: /home/tvs/scripting/test.sh

[/bash]

[/su_box]

чтобы указанная в visudo команда работала нужно сделать

1) chmod 771 имя_файла.sh
2) запускать имя файла.sh без source имя_файла.sh
т.е.
[su_box title=”запуск скрипта от sudo” style=”glass” radius=”4″]

[bash]
sudo имя_файла.sh
[/bash]

[/su_box]

Также здесь, в настройках, указывается какие пользователи могут выполнять команды от sudo

[su_note note_color=”#66ff6e”]

# 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 дать разрешение выполнять любые команды

[/su_note]

[su_box title=”команды проверки конфигурации sudo” style=”glass” radius=”4″]

[su_note note_color=”#040404″ text_color=”#22ea3f”]

sudo -l

[/su_note]

[su_spoiler title=”пример результатов работы этой команды:” style=”fancy” icon=”arrow-circle-1″]

[su_note note_color=”#040404″ text_color=”#22ea3f”]

tvs@TVS-Laptop:~$ sudo -l
Matching Defaults entries for tvs on this host:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User tvs may run the following commands on this host:
(ALL : ALL) ALL
(root) NOPASSWD: /home/tvs/scripting/test.sh
tvs@TVS-comp:~$

[/su_note]

[/su_spoiler]

[su_note note_color=”#040404″ text_color=”#22ea3f”]

sudo -ll # показать полные данные по правам sudo для текущего пользователя

[/su_note]

[su_spoiler title=”пример результатов работы этой команды:” style=”fancy” icon=”arrow-circle-1″]

[su_note note_color=”#040404″ text_color=”#22ea3f”]

tvs@comp:~$ sudo -ll

Matching Defaults entries for tvs on this host:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User tvs may run the following commands on this host:

Sudoers entry:
RunAsUsers: ALL
RunAsGroups: ALL
Commands:
ALL

Sudoers entry:
RunAsUsers: root
Commands:
NOPASSWD: /home/tvs/scripting/test.sh

[/su_note]

[/su_spoiler]

[su_note note_color=”#040404″ text_color=”#22ea3f”]

sudo -lU user_name

[/su_note]

[su_spoiler title=”пример результатов работы этой команды:” style=”fancy” icon=”arrow-circle-1″]

[su_note note_color=”#040404″ text_color=”#22ea3f”]

tvs@comp:~$ sudo -lU vova
User vova is not allowed to run sudo on TVS-comp.

[/su_note]

[/su_spoiler]

[/su_box]

[su_spoiler title=”редактирование файла настроек sudo напрямую” style=”fancy” icon=”arrow-circle-1″]

nano /etc/sudoers

#    /etc/sudoers файл настроек sudo.

команда visudo проверяет синтаксис этого файла и не дает его сохранить если в нем есть ошибки.

[/su_spoiler]

 

+ Нет комментариев

Добавить свой