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

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

51
задан 5 August 2010 в 20:11

9 ответов

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

Редактируйте файл /usr/share/polkit-1/action/org.freedesktop.consolekit.policy, используя ваш любимый текстовый редактор. Вам понадобятся права root'а.

Измените раздел, относящийся к выключению, когда другие пользователи вошли в систему с

  <action id="org.freedesktop.consolekit.system.stop-multiple-users">
    <description>Stop the system when multiple users are logged in</description>
    <message>System policy prevents stopping the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
  </action>

до

  <action id="org.freedesktop.consolekit.system.stop-multiple-users">
    <description>Stop the system when multiple users are logged in</description>
    <message>System policy prevents stopping the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>

и раздел, относящийся к перезагрузке, когда другие пользователи вошли в систему с

  <action id="org.freedesktop.consolekit.system.restart-multiple-users">
    <description>Restart the system when multiple users are logged in</description>
    <message>System policy prevents restarting the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
  </action>

до

  <action id="org.freedesktop.consolekit.system.restart-multiple-users">
    <description>Restart the system when multiple users are logged in</description>
    <message>System policy prevents restarting the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>

И это позволит вам выключать и перезагружать компьютер, когда несколько пользователей вошли в систему. Хотите ли вы сделать это - вопрос другой.

27
ответ дан 5 August 2010 в 20:11

Кажется, теперь HAL устарел и не установлен в последних выпусках Ubuntu.

Вы должны использовать ConsoleKit и UPower службы dbus для управления питанием состояние

Завершение работы:

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

Перезагрузка:

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart

Приостановка:

dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend

Гибернация:

dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate

Благодаря форумам Arch Linux .

На данный момент это работает в Precise и Quantal, но не Не знаю, как давно фокус Freedesktop, похоже, сместился с ConsoleKit на systemd. Не знаю, заботит ли Canonical ...

12
ответ дан 5 August 2010 в 20:11

Ответ Ричарда Холлоуэя на самом деле не является способом предоставления полномочий PolickKit. Файлы, установленные в / usr / share / polkit-1 / actions , не подлежат изменению. Вместо этого вам следует изменить права доступа в /etc/polkit-1/localauthority/50-local.d/ .

Вот как это сделать для этого вопроса:

Создайте файл с именем /etc/polkit-1/localauthority/50-local.d/allow_all_users_to_shutdown.pkla и отредактируйте его с помощью sudoedit , чтобы он выглядел следующим образом:

[Allow all users to shutdown]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.stop-multiple-users
ResultInactive=no
ResultActive=yes

Затем создайте еще один .pkla файл в том же каталоге. Используйте любое имя, заканчивающееся на .pkla , например allow_all_users_to_restart.pkla , и заполните его следующим содержанием:

[Allow all users to restart]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.restart-multiple-users
ResultInactive=no
ResultActive=yes

Ссылки:

36
ответ дан 5 August 2010 в 20:11

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

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

Shutdown:

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

Reboot:

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

Suspend:

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
          /org/freedesktop/Hal/devices/computer \
          org.freedesktop.Hal.Device.SystemPowerManagement.Suspend int32:1

Hibernate:

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

Regards.

16
ответ дан 5 August 2010 в 20:11

Я считаю, что это проблематично только при выполнении через командную строку.

Если это так, то здесь есть ссылка , которая может помочь решить вашу проблему.

0
ответ дан 5 August 2010 в 20:11

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

http://linux.byexamples.com/archives/315/how-to-shutdown-and-reboot-without-sudo-password/

0
ответ дан 5 August 2010 в 20:11

Это работает 14.04. Обновленный вариант предыдущего ответа IMO, правильный ответ Flimm .

sudo mkdir -p /etc/polkit-1/localauthority/50-local.d
sudoedit /etc/polkit-1/localauthority/50-local.d/allow_all_users_to_shutdown_reboot_suspend.pkla 

Вставьте это внутри:

[Allow all users to shutdown]
Identity=unix-user:*
Action=org.freedesktop.login1.power-off-multiple-sessions
ResultActive=yes

[Allow all users to reboot]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot-multiple-sessions
ResultActive=yes

[Allow all users to suspend]
Identity=unix-user:*
Action=org.freedesktop.login1.suspend-multiple-sessions
ResultActive=yes

[Allow all users to ignore inhibit of shutdown]
Identity=unix-user:*
Action=org.freedesktop.login1.power-off-ignore-inhibit
ResultActive=yes

[Allow all users to ignore inhibit of reboot]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot-ignore-inhibit
ResultActive=yes

[Allow all users to ignore inhibit of suspend]
Identity=unix-user:*
Action=org.freedesktop.login1.suspend-ignore-inhibit
ResultActive=yes
5
ответ дан 5 August 2010 в 20:11

Очевидно, что вы можете завершить работу без root из GUI, потому что gdm запускается как root. Gnome говорит gdm выключиться, а gdm делает это.

Вы можете сделать что-нибудь подобное со скриптом. Я не уверен, насколько удобно работать с BASH, но я считаю, что можно написать скрипт, который запускается от имени root и, когда он получает определенный сигнал, запускает команду shutdown.

Имейте в виду, что это может создать проблему безопасности.

-1
ответ дан 5 August 2010 в 20:11

Невозможно обойти запрос пароля суперпользователя при перезагрузке, пока другие пользователи входят в систему, не открыв терминальное окно и не выдав команду reboot в качестве root:

sudo reboot

Даже если вы не настроены на обход запроса пароля для вашей учетной записи пользователя, sudo также выдаст запрос на ввод пароля.

Не волнуйтесь, это GOOD вещи. Перезагрузка должна быть редкой, а простая подсказка пароля администратора поможет вам случайно зачистить шланги!

1
ответ дан 5 August 2010 в 20:11

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

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