Нужны ли вам права sudo для выключения в Ubuntu?

Я собираюсь перенести приложение Snoozer, которое я первоначально написал в Windows на AutoIt, а когда дело доходит до него, это Shutdown Snoozer.

Я перечисляю, как засыпаю в кино или шоу, но я просыпаюсь, если мой компьютер работает всю ночь. Поэтому я создал приложение, которое уведомляет вас о предстоящем завершении работы, и у вас есть 10 минут, чтобы отложить это, в противном случае компьютер выключается. Приложение позволяет повторить это приглашение для X раз и с интервалом Y.

Мой вопрос: в Ubuntu мне понадобятся права sudo для завершения работы. Если да, то как я могу запретить приложению постоянно запрашивать у пользователя аутентификацию как sudo для правильного завершения работы системы?

0
задан 7 November 2012 в 14:31

2 ответа

Да, пользователь должен иметь права sudo, но вы все равно можете использовать NOPASSWD, чтобы пропустить аутентификацию по паролю.

Чтобы позволить пользователю запускать определенные команды, в этом случае команду shutdown, отредактируйте файл / etc / sudoers, например:

user ALL=/usr/bin/apt-get,/sbin/shutdown

Более подробная версия, которая лучше соответствует вашим требованиям ( Пользователь может завершить работу с помощью sudo shutdown -h now и перезагрузиться с помощью sudo reboot. Пользователи, желающие выключить систему, также могут использовать poweroff или halt без пароля):

user hostname =NOPASSWD: /sbin/shutdown -h now,/sbin/halt,/sbin/poweroff,/sbin/reboot

Вы можете использовать следующие Команда, показывающая, что пользователь может запустить, скажет нам, какие команды пользователь может запустить с помощью sudo:

sudo -U user –l
0
ответ дан 7 November 2012 в 14:31

Очень давно я написал это для кого-то с таким же вопросом. Я понятия не имею, работает ли он по-прежнему и не может сейчас проверить, потому что я не хочу перезапускать: -).

Вот, пожалуйста,

#!/usr/bin/env python

import dbus

def main():
    answer = raw_input("Do you really want to shutdown your computer? (Y/n): ")
    if answer in ('y', 'Y', ''):
        bus = dbus.SystemBus()
        bus_object = bus.get_object("org.freedesktop.Hal", "/org/freedesktop/Hal/devices/computer")
        bus_object.Shutdown(dbus_interface="org.freedesktop.Hal.Device.SystemPowerManagement")

if __name__ == "__main__":
    main()
.
0
ответ дан 7 November 2012 в 14:31

Другие вопросы по тегам:

Похожие вопросы: