it-swarm-pt.tech

Como posso fazer o desligamento não requer senha de administrador?

Se mais de uma pessoa estiver conectada no meu computador, o Ubuntu exige autenticação de superusuário ao desligar o computador. Como posso fazer com que qualquer usuário possa desligar o computador sem precisar de uma senha?

49
Isaiah

Você não precisa de uma solução alternativa, basta alterar a política para permitir que você desligue sem autenticar como administrador para desligar e reinicializar quando vários usuários estiverem conectados.

Edite o arquivo /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy usando seu editor de texto favorito. Você precisará de permissões de root.

Altere a seção relacionada ao desligamento quando outras pessoas estiverem conectadas

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

para

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

e a seção relativa à reinicialização quando outras pessoas estão conectadas

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

para

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

E isso permitirá que você desligue e reinicie o PC quando vários usuários estiverem conectados. Se você quiser fazer isso, é uma questão diferente.

27
Richard Holloway

resposta de Richard Holloway não é, na verdade, a forma como as autorizações PolickKit devem ser concedidas. Os arquivos instalados em /usr/share/polkit-1/actions não devem ser modificados. Em vez disso, você deve modificar as autoridades em /etc/polkit-1/localauthority/50-local.d/.

Veja como você faz isso para essa pergunta:

Crie um arquivo chamado /etc/polkit-1/localauthority/50-local.d/allow_all_users_to_shutdown.pkla e edite-o usando sudoedit para ficar assim:

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

Em seguida, crie outro arquivo .pkla no mesmo diretório. Use qualquer nome que você queira terminar com .pkla, por exemplo, allow_all_users_to_restart.pkla, e preencha com estes conteúdos:

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

Referências:

33
Flimm

Há um caminho melhor. Se você tem dbus-send instalado, você pode desligar através do dbus sem a necessidade de escalar para privilégios de root.

Não me lembro da página onde está a documentação, mas um usuário do Archlinux descobriu isso.

Desligamento:

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

Reinicie:

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

Suspender:

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

Hibernar:

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

Saudações.

16
ibuclaw

O HAL parece estar agora depurado e não instalado nos últimos lançamentos do Ubuntu.

Você deve usar ConsoleKit e Power serviços dbus para gerenciar o estado de energia

Desligar:

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

Reiniciar:

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

Suspender:

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

Hibernação:

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

Graças ao Arch Linux fóruns .

Isso funciona por enquanto em Precise e Quantal, mas não sabe por quanto tempo desde que o foco do Freedesktop parece ser mudado do ConsoleKit para o systemd. Não sei se a Canonical se importa ...

12
Epeli

Isso funciona em 14.04. Uma variação atualizada do anterior, IMO, correta resposta por 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 

Cole isto dentro:

[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
4
Konstigt

Não há como contornar o Prompt para uma senha de superusuário ao reinicializar enquanto outros usuários estão logados abrindo uma janela de terminal e emitindo o comando reboot como root:

Sudo reboot

Mesmo assim, se não for configurado para ignorar a senha que solicita sua conta de usuário, o Sudo também solicitará sua senha.

Não se preocupe, estas são boas coisas. A reinicialização deve ser rara e uma senha de administrador simples Prompt economiza a limpeza acidental de si mesmo!

1
jathanism

Adicione parada e/ou reinicialize no arquivo sudoers atribuído ao grupo/usuário que você deseja permitir executar esta tarefa. Dessa forma, você ainda pode controlar quem pode desligar, mas sem fornecer acesso root completo à máquina.

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

0
tommed

Eu acredito que este é apenas um problema ao fazê-lo através da linha de comando.

Se sim, aqui está um link que pode ajudar no seu problema.

0
myusuf3