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

45

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

    
задан Isaiah 05.08.2010 в 18:11
источник

9 ответов

27

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

Отредактируйте файл /usr/share/polkit-1/actions/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>

to

  <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>

И это позволит вам завершить работу и перезагрузить компьютер, когда несколько пользователей вошли в систему. Если вы хотите сделать это, это другой вопрос.

    
ответ дан Richard Holloway 06.08.2010 в 16:00
источник
30

ответ Ричарда Холлоуэя на самом деле не означает, что разрешения 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

Ссылки:

ответ дан Flimm 06.02.2013 в 12:51
16

Есть лучший способ. Если у вас установлена ​​dbus-передача, вы можете отключиться через 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

Приостановить

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

С уважением.

    
ответ дан ibuclaw 06.08.2010 в 09:31
12

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

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

Shutdown:

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

Restart:

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

Hibernate:

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

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

Теперь это работает в Precise и Quantal, но не знаю, как долго, поскольку фокус Freedesktop, похоже, смещается с ConsoleKit на systemd. Не знаю, заботится ли Канонич ...

    
ответ дан Epeli 15.10.2012 в 14:23
4

Это работает 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
    
ответ дан Konstigt 21.06.2014 в 19:01
1

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

sudo reboot

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

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

    
ответ дан jathanism 05.08.2010 в 19:06
0

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

Если это ссылка которые могут помочь с вашей проблемой.     

ответ дан myusuf3 05.08.2010 в 18:16
0

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

Ссылка

    
ответ дан tommed 06.12.2010 в 16:19
-1

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

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

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

    
ответ дан mac9416 05.08.2010 в 18:58