Рубрики
Bash CentOS Gentoo Linux SSH Ubuntu Администрирование Пароли Справочник комманд Удаленный доступ

делегирование прав 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]

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *