LINUX.ORG.RU
ФорумAdmin

Как дать право юзеру start stop службы без пароля?

 


1

1

сейчас
service test stop или start просит пароль
при успехе:
==== AUTHENTICATION COMPLETE ===

1)как отключить пароль при запуске только этой службы
2)как запретить все другие административные команды этому юзеру типа poweroff restart systemctl и тд. Просто чтоб с файлами мог работать и с одной службой


1. в crontab -e пишите простой скрипт типа

* * * * * test -a /home/username/.kek-as-service && /etc/rc.d/daemon $(< /home/username/.kek-as-service) && rm /home/username/.kek-as-service

2. от простого юзера выполняете echo start > .kek-as-service

3. система безопасносте

Spoofing ★★★★★
()

В /etc/sudoers прописать все наборы команд с параметрами, а не просто /usr/bin/systemctl

futurama ★★★★★
()

создаешь my_service_base_start.sh my_service_base_stop.sh внутре которых прописываешь необходимые команды выполняемые от суперпупера.

к ним делаешь еще комплект mysrv_start.sh mysrv_stop.sh внутре которых только команды на запуск скриптов чуть выше через sudo. «sudo /path/to/my_service_base_start.sh», «sudo /path/to/my_service_base_stop.sh»

потом вкореживаешь в /etc/sudoers (а лучше отдельным файликом в /etc/sudoers.d)

%имя_пользователя% NOPASSWD: /path/to/my_service_base_start.sh,/path/to/my_service_base_stop.sh

вкореживать очень аккуратно, лучше через visudo или держать открытую консоль root на время работы с /ets/sudoers

через mysrv_start.sh mysrv_stop.sh теперь можно старт/стопить твой сервис.

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 2)

Systemd позволяет сделать это через правила polkit, и я когда-то давно так делал. Подробности сейчас не вспомню, смотри документацию.

Можно разрешать определенные actions по-отдельности для каждой службы. Например, только reload для httpd.

Khnazile ★★★★★
()
Последнее исправление: Khnazile (всего исправлений: 1)
Ответ на: комментарий от zemidius

за то понятно по какому принципу оно работает и можно доработать, а не так, что завтра найдётся очередное повышение привелегий через sudo.

Spoofing ★★★★★
()
Ответ на: комментарий от Spoofing

Я почти так же делал, но только не код из файла на исполнение отправлял, а просто проверял наличие файла и делал заранее определенный экшон. Дешево, сердито.

slowpony ★★★★★
()

как отключить пароль при запуске только этой службы

Смотря в какой системе инициализации. В Systemd можно от имени пользователя сервисы запускать:

systemctl start --user srvname.service

В Upstart, ЕМНИП, это через start-stop-daemon делается.

как запретить все другие административные команды этому юзеру типа poweroff restart systemctl и тд. Просто чтоб с файлами мог работать и с одной службой

Убрать из группы wheel/группу пользователя из /etc/sudoers (открывать только через vim).

Korchevatel ★★★★★
()
Ответ на: комментарий от Spoofing

за то понятно по какому принципу оно работает и можно доработать

Отвратительный костылище в стиле быдлоадминов, пихающих в сервере поднятие сети в rc.local

а не так, что завтра найдётся очередное повышение привелегий через sudo.

Ну так ты уже моментально зевнул повышение привилегий в одной строчке.

zemidius
()

Если надо вручную что-то запускать/перезапускать, то добавь в /etc/sudoers:

$ sudo visudo

# например
# restart tor service
%wheel ALL = NOPASSWD: /usr/bin/systemctl restart tor.service

Соответственно если хочешь делать stop/enable/start, нужно такие же строчки сделать для них. Пользователь должен быть в группе %wheel или указать прямо.

Im_not_a_robot ★★★★★
()
Ответ на: комментарий от slowpony

Я почти так же делал, но только не код из файла на исполнение отправлял, а просто проверял наличие файла и делал заранее определенный экшон. Дешево, сердито.

Файл-флаг, конечно, еще тот костыль, но уже гораздо менее былдокод. А еще есть incron.

zemidius
()
Ответ на: комментарий от frunobulax

Не пойму тонко или толсто. :D

Ты не поверишь, как часто на таких мелочах люди спотыкаются. Я, к примеру, лично видел, как человек этот файл напрямую в NotepadQQ открывал.

Хотя я тут и вправду прикололся, visudo никто не отменял.

Korchevatel ★★★★★
()
Ответ на: комментарий от Im_not_a_robot

1. почему именно через visudo а не через nano?
2. почему даем права группе а не юзеру?


-

%user% NOPASSWD: /usr/bin/systemctl restart mc

так выдается ошибка.

Regacar
() автор топика
Последнее исправление: Regacar (всего исправлений: 1)
Ответ на: комментарий от Regacar

Да это просто пример.

почему именно через visudo а не через nano?

visudo – это просто название команды, на самом деле она запускает не vi, а дефолтный текстовый редактор. Если EDITOR=nano, то запустит nano.

А использовать эту команду вместо запуска текстового редактора нужно потому что она в конце проверяет корректность файла sudoers.

почему даем права группе а не юзеру?

Можно и просто юзеру.

Im_not_a_robot ★★★★★
()
Ответ на: комментарий от Regacar

%user% NOPASSWD: /usr/bin/systemctl restart mc

Насколько я понимаю, это неправильный синтксис. Нужно так:

user ALL= NOPASSWD: /usr/bin/systemctl restart mc

# или

%group ALL = NOPASSWD: /usr/bin/systemctl restart mc

ALL – означает, что на любом компьютере. Т.е. вместо ALL можно написать имя конкретной машины (тебе это не надо, я просто объясняю синтаксис).

p.s. mc – это надеюсь просто странное имя systemd сервиса, а не попытка запустить midnight commander? :)

Im_not_a_robot ★★★★★
()
Последнее исправление: Im_not_a_robot (всего исправлений: 1)
Ответ на: комментарий от Regacar

-а без sudo и без пароля можно как то сделать?
-если пишу visudo ... restart... то недоступны start и стоп. как их добавить?

Regacar
() автор топика
Последнее исправление: Regacar (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.