Как дать полномочия завершения работы пользователю?

Я использую Ubuntu 11.04. Я хочу запустить скрипт, который проверяет на рабочий процесс и закрывает систему, когда тот процесс заканчивается. Чтобы сделать это, пользователь требует доступа завершения работы так, чтобы сценарий мог быть выполнен, не требуя пароля.

Я упомянул эту страницу и добавил текст в моем sudoers файле. Однако это все еще спрашивает меня пароль каждый раз, когда я выполняюсь sudo shutdown -h now. Кроме того, я получаю ошибку при высказывании, что полномочия пользователя root требуются, когда я выполняю завершение работы без sudo.

Мой sudoers файл выглядит примерно так.

# Cmnd alias specification
Cmnd_Alias      SHUTDOWN = /sbin/shutdown

# User privilege specification
root    ALL=(ALL:ALL) ALL
myusername    ALL = NOPASSWD: SHUTDOWN

Как я могу дать разрешение пользователю выполнить команду завершения работы, не имея необходимость вручную вводить пароль?

Спасибо.

9
задан 20 June 2011 в 03:55

4 ответа

Можно закрыть или перезапустить использование HAL или ConsoleKit, который не потребует, чтобы Вы ввели имя пользователя:

HAL (более старые версии Ubuntu):

dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown

ConsoleKit (более новые версии Ubuntu, протестированные на Ubuntu 11.04):

dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
6
ответ дан 23 November 2019 в 04:57

Я сделал это как в этом ответе, работы безупречно для меня. Возможно, Ваш подход отсутствует visudo часть?

Откройте командную строку и тип:

sudo visudo 

В Файле, который открывается, добавляют следующую строку в конце:

yourusername ALL=NOPASSWD: /sbin/halt

Затем выйдите из редактора и сейфа это (CTRL+x).

Теперь можно закрыть компьютер из командной строки, например, после загрузки чего-то:

wget UrlOfTheFileYouWantToDownload ; sudo halt
7
ответ дан 23 November 2019 в 04:57

Некоторое время назад я сделал это путем установки suid (идентификатор Пользователя аппарата). Это заставляет программу выполниться как владелец файла, не пользователь, выполняющий его. Так как завершение работы принадлежит корню, которого это должно позволить Вам завершить работу без sudo.

chmod u+s /sbin/shutdown

Существуют последствия безопасности хотя, так как любой может затем выполнить завершение работы. http://en.wikipedia.org/wiki/Setuid

1
ответ дан 23 November 2019 в 04:57

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

0
ответ дан 23 November 2019 в 04:57

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

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