sudoers

Borune

Постоянный пользователь
Пользователь
12 Фев 2005
986
63
28
36
кантима
Господа, вот такой вот вопрос у меня, как разрешить пользователю перезапускать сервис без ввода пароля?

Тема такая: я хочу при загрузке системы перезапускать самбу. Для этого дописываю в sudoers строку такого содержания:
Код:
UserName   ALL = NOPASSWD: /etc/init.d/samba restart
и вставляю в /etc/rc.local строку sudo /etc/init.d/samba restart

При загрузке служба не перезапускается. Мало того, при попытке набрать в терминале:
Код:
$ sudo /etc/init.d/samba restart
sudo требует ввести пароль. Что я делаю не так?

зы ОС ubuntu 9.04
 
Последнее редактирование модератором:

NicoN

Постоянный пользователь
Пользователь
9 Фев 2005
1.424
5
38
33
mobile.unifree.ru
потому что скарее всего у тебя служба не под рутом работает пишешь killall samba и запускаешь под рутом, хотя я не догоняю ваще зачем под рутом ет все делать?
 

Borune

Постоянный пользователь
Пользователь
12 Фев 2005
986
63
28
36
кантима
эм..чо-то я не совсем понял смысл..служба работает под рутом, так как если я напишу:
Код:
$ /etc/init.d/samba restart
То выскакивает сообщение от start-stop daemon:
Код:
 * Stopping Samba daemons                                                     
start-stop-daemon: warning: failed to kill 4166: Operation not permitted
start-stop-daemon: warning: failed to kill 4169: Operation not permitted
                                                                      [ OK ]
 * Starting Samba daemons                                             [fail]
Под рутом это делать не надо. Просто по умолчанию служба samba может быть запущена только суперпользователем. Я хочу разрешить запускать ее обычному пользователю без ввода пароля. Поэтому и спрашиваю, как это сделать, как правильно отредактировать sudoers..
 

NicoN

Постоянный пользователь
Пользователь
9 Фев 2005
1.424
5
38
33
mobile.unifree.ru
ааа я чет просто тебя не понял в первом сабже
ну так вот, залез на свою убунту, случайно запорол КДЕ))) но всетки сделал то что у тебя не получается. Фишка в чем по докам от sudoersa мона посмареть примерный вид комманды у ня ет выглядело так:

user ALL:sad:root) /etc/init.d/samba restart
- одоптировал чуток под тебя

после чего по принцыпу со своей учетки я мог ребутить апач, который запущен от wwwdata. Но если по какимто причинам у тебя пахать не будет можно прописать алиасы к командам и тупо перечислять, пример:
# Cmnd alias specification
Cmnd_Alias HWCLOCK=/sbin/hwclock
Cmnd_Alias IFCONFIG=/sbin/ifconfig
Cmnd_Alias MODINFO=/sbin/modinfo
Cmnd_Alias REBOOT=/sbin/reboot
Cmnd_Alias SHUTDOWN=/sbin/shutdown
 
Последнее редактирование модератором:

Borune

Постоянный пользователь
Пользователь
12 Фев 2005
986
63
28
36
кантима
погоди-ка. Насколько я понял из ознакомления с man-ом, строка
Код:
user ALL=(root) /etc/init.d/samba restart
разрешает пользователю user выполнять команду /etc/init.d/samba restart от имени рута. Это понятно, но мне нужно, чтоб при этом sudo не требовал пользователя вводить пароль..

вот смотри, что выводит sudo -l, если написать так, как ты предлагаешь:
Код:
$ sudo -l
User user may run the following commands on this host:
    (root) /etc/init.d/samba restart
    (ALL) ALL
то есть смысла писать строку, предложенную тобой, вообще нет, так как мне (user) разрешено выполнять абсолютно все действия от имени абсолютно любого пользователя, об этом свидетельствует строка (ALL) ALL. Мне нужно сделать так, чтоб я мог выполнять эту команду БЕЗ ВВОДА ПАРОЛЯ.
 
Последнее редактирование модератором:

wext

Король пиратов
Пользователь
11 Фев 2005
3.774
22
38
34
grand line
madfrager.ru
Ну
start-stop-daemon: warning: failed to kill 4166: Operation not permitted
не говорит еще, что процесс под рутом, вполне возможно, что он просто под другим пользователем или у тебя нету прав.
 

Borune

Постоянный пользователь
Пользователь
12 Фев 2005
986
63
28
36
кантима
у меня всего два пользователя - я и рут, так что выбор не богат
 

Borune

Постоянный пользователь
Пользователь
12 Фев 2005
986
63
28
36
кантима
solved

В самом низу sudoers была написана такая строка:
Код:
%admin ALL = (ALL) ALL
Видимо, admin это был псевдоним моего пользователя. Я закаментил эту строку и добавил такую:
Код:
user ALL = (ALL) ALL, NOPASSWD: /etc/init.d/samba restart
и, вуаля, все заработало)

Вскоре выяснилось, что можно было дописать вниз аналогично:
Код:
%admin ALL = (ALL) ALL, NOPASSWD: /etc/init.d/samba restart
и все тоже работает

Видимо надо писать именно в одну строку, потому что два этих предложения немного противоречат друг другу, в одном говорится, что пользователь может запускать любую команду, но при этом он должен вводить пароль (об этом говорится в строке user ALL = (ALL) ALL), а в другой строке говорится о том, что одну команду пользователь может выполнять без ввода пароля. Получается противоречие и линух решает его не в мою пользу.)

всем спасибо)
 
Последнее редактирование модератором:

wext

Король пиратов
Пользователь
11 Фев 2005
3.774
22
38
34
grand line
madfrager.ru
Ну на счет пользователей ты ошибаешься. Выполни команду:
gedit /etc/passwd
Скорее всего при установке пакета создался пользователь специально для самбы.
 

Borune

Постоянный пользователь
Пользователь
12 Фев 2005
986
63
28
36
кантима
ну я имею ввиду тех пользователей, которые реальны и могут войти в систему. Пользователя для самбы нет.
 
Последнее редактирование модератором: