URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7027
[ Назад ]

Исходное сообщение
"shutdown не из под рута"

Отправлено bopurod , 12-Дек-07 14:19 
делаю програму под suse linux 10.2
столкнулся с такой проблемой:
программа должна в определенный момент выключить систему (когда батарейка на упсе садится)
несмотря на то что пользователь из под которого запускается служба имеет право на выполнение shutdown, shutdown не выполняется потому что сам проверяет является ли пользователь root'ом и отказывает в выполнении. как можно сделать чтобы обычный пользователь мог выключить компютер? ведь когда я работаю в графической оболочке я могу это сделать из под обычного пользователя, к томуже не хочется запускать недоделанную службу из под рута.

Содержание

Сообщения в этом обсуждении
"shutdown не из под рута"
Отправлено NuINu , 12-Дек-07 14:49 
>делаю програму под suse linux 10.2
>столкнулся с такой проблемой:
>программа должна в определенный момент выключить систему (когда батарейка на упсе садится)
>
>несмотря на то что пользователь из под которого запускается служба имеет право
>на выполнение shutdown, shutdown не выполняется потому что сам проверяет является
>ли пользователь root'ом и отказывает в выполнении. как можно сделать чтобы
>обычный пользователь мог выключить компютер? ведь когда я работаю в графической
>оболочке я могу это сделать из под обычного пользователя, к томуже
>не хочется запускать недоделанную службу из под рута.

У меня есть идея!!! не побоюсь этого слова гениальная!! :)
А что если взять и отменить проверку на рута?
:)


"shutdown не из под рута"
Отправлено bopurod , 12-Дек-07 14:57 

>У меня есть идея!!! не побоюсь этого слова гениальная!! :)
>А что если взять и отменить проверку на рута?
>:)

а как? можно конечно взять исходник убрать проверку и пересобрать shutdown. а есть ли другой способ? ну чтобы не пришлось это делать на другом компутере еще раз? ведь в КДЕ я работаю не из под рута, но могу выключить компьютер


"shutdown не из под рута"
Отправлено NuINu , 12-Дек-07 15:39 
>
>>У меня есть идея!!! не побоюсь этого слова гениальная!! :)
>>А что если взять и отменить проверку на рута?
>>:)
>
>а как? можно конечно взять исходник убрать проверку и пересобрать shutdown. а
>есть ли другой способ? ну чтобы не пришлось это делать на
>другом компутере еще раз? ведь в КДЕ я работаю не из
>под рута, но могу выключить компьютер

:) признаться я не внимательно прочитал что вы написали :) поэтому ответил немного не в попад.
сам shutdown на самом деле ничего не проверяет, кроме текущих юзерских привилегий которые изменяются через sudo.
из слаквары sudoers:

%users localhost=/sbin/shutdown -h now

итого члены группы юзерс могут выполнить команду!!! с привилегиями рута.


"shutdown не из под рута"
Отправлено ymkin , 12-Дек-07 15:12 
например, в slackware это сделано через sudo - смотрите /etc/sudoers



"shutdown не из под рута"
Отправлено bopurod , 12-Дек-07 16:16 
>например, в slackware это сделано через sudo - смотрите /etc/sudoers

а можно поподробнее?.... как это сделано в slackware?


"shutdown не из под рута"
Отправлено mixa , 12-Дек-07 18:15 
>>например, в slackware это сделано через sudo - смотрите /etc/sudoers
>
>а можно поподробнее?.... как это сделано в slackware?

Куда ж еще подробнее? :)
sudo но и в Африке sudo
Например, если через веб надо выключить, то в файлике sudoers примерно так:
www     ALL=NOPASSWD: /sbin/shutdown

В вашем же случае
>пользователь из под которого запускается служба

значит
"пользователь из под которого запускается служба"      ALL=NOPASSWD: /sbin/shutdown


"shutdown не из под рута"
Отправлено bopurod , 14-Дек-07 11:18 
спасибо, теперь понял, попорбую сегодня разобратся...

"shutdown не из под рута"
Отправлено Асен Тотин , 19-Дек-07 20:00 
Привет,

Еще можно просто в сторону SGID посмтреть - хотя спорная вещь, что лучше - дать user-у sudo с NOPASSWD или сделать приложение SGID... Я бы пошел за SGID своего приложения. Впрочем, можно посмотреть как apcupsd это решили - у них работает.

WWell,