делаю програму под suse linux 10.2
столкнулся с такой проблемой:
программа должна в определенный момент выключить систему (когда батарейка на упсе садится)
несмотря на то что пользователь из под которого запускается служба имеет право на выполнение shutdown, shutdown не выполняется потому что сам проверяет является ли пользователь root'ом и отказывает в выполнении. как можно сделать чтобы обычный пользователь мог выключить компютер? ведь когда я работаю в графической оболочке я могу это сделать из под обычного пользователя, к томуже не хочется запускать недоделанную службу из под рута.
>делаю програму под suse linux 10.2
>столкнулся с такой проблемой:
>программа должна в определенный момент выключить систему (когда батарейка на упсе садится)
>
>несмотря на то что пользователь из под которого запускается служба имеет право
>на выполнение shutdown, shutdown не выполняется потому что сам проверяет является
>ли пользователь root'ом и отказывает в выполнении. как можно сделать чтобы
>обычный пользователь мог выключить компютер? ведь когда я работаю в графической
>оболочке я могу это сделать из под обычного пользователя, к томуже
>не хочется запускать недоделанную службу из под рута.У меня есть идея!!! не побоюсь этого слова гениальная!! :)
А что если взять и отменить проверку на рута?
:)
>У меня есть идея!!! не побоюсь этого слова гениальная!! :)
>А что если взять и отменить проверку на рута?
>:)а как? можно конечно взять исходник убрать проверку и пересобрать shutdown. а есть ли другой способ? ну чтобы не пришлось это делать на другом компутере еще раз? ведь в КДЕ я работаю не из под рута, но могу выключить компьютер
>
>>У меня есть идея!!! не побоюсь этого слова гениальная!! :)
>>А что если взять и отменить проверку на рута?
>>:)
>
>а как? можно конечно взять исходник убрать проверку и пересобрать shutdown. а
>есть ли другой способ? ну чтобы не пришлось это делать на
>другом компутере еще раз? ведь в КДЕ я работаю не из
>под рута, но могу выключить компьютер:) признаться я не внимательно прочитал что вы написали :) поэтому ответил немного не в попад.
сам shutdown на самом деле ничего не проверяет, кроме текущих юзерских привилегий которые изменяются через sudo.
из слаквары sudoers:%users localhost=/sbin/shutdown -h now
итого члены группы юзерс могут выполнить команду!!! с привилегиями рута.
например, в slackware это сделано через sudo - смотрите /etc/sudoers
>например, в slackware это сделано через sudo - смотрите /etc/sudoersа можно поподробнее?.... как это сделано в slackware?
>>например, в slackware это сделано через sudo - смотрите /etc/sudoers
>
>а можно поподробнее?.... как это сделано в slackware?Куда ж еще подробнее? :)
sudo но и в Африке sudo
Например, если через веб надо выключить, то в файлике sudoers примерно так:
www ALL=NOPASSWD: /sbin/shutdownВ вашем же случае
>пользователь из под которого запускается службазначит
"пользователь из под которого запускается служба" ALL=NOPASSWD: /sbin/shutdown
спасибо, теперь понял, попорбую сегодня разобратся...
Привет,Еще можно просто в сторону SGID посмтреть - хотя спорная вещь, что лучше - дать user-у sudo с NOPASSWD или сделать приложение SGID... Я бы пошел за SGID своего приложения. Впрочем, можно посмотреть как apcupsd это решили - у них работает.
WWell,