Si más de una persona ha iniciado sesión en mi computadora, Ubuntu requiere autenticación de superusuario cuando apaga la computadora. ¿Cómo puedo lograr que cualquier usuario pueda apagar la computadora sin que se le solicite una contraseña?
Si más de una persona ha iniciado sesión en mi computadora, Ubuntu requiere autenticación de superusuario cuando apaga la computadora. ¿Cómo puedo lograr que cualquier usuario pueda apagar la computadora sin que se le solicite una contraseña?
Respuestas:
No necesita una solución alternativa, solo cambie la política para permitirle cerrar sin autenticarse como administrador para el apagado y reiniciar cuando varios usuarios inicien sesión.
Edite el archivo /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy con su editor de texto favorito. Necesitarás permisos de root.
Cambie la sección relacionada con el apagado cuando otros inicien sesión desde
<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>
a
<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>
y la sección relacionada con el reinicio cuando otros inician sesión desde
<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>
a
<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>
Y eso le permitirá apagar y reiniciar la PC cuando varios usuarios inicien sesión. Si desea hacerlo, esa es una pregunta diferente.
La respuesta de Richard Holloway no es en realidad la forma en que se deben otorgar las autorizaciones de PolickKit. Los archivos instalados bajo /usr/share/polkit-1/actions
no están destinados a ser modificados. En cambio, debe modificar las autoridades bajo /etc/polkit-1/localauthority/50-local.d/
.
Así es como lo haces para esta pregunta:
Cree un archivo con el nombre /etc/polkit-1/localauthority/50-local.d/allow_all_users_to_shutdown.pkla
y edítelo sudoedit
para que se vea así:
[Allow all users to shutdown]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.stop-multiple-users
ResultInactive=no
ResultActive=yes
Luego cree otro .pkla
archivo en el mismo directorio. Use cualquier nombre con el que desee terminar .pkla
, por ejemplo allow_all_users_to_restart.pkla
, y complételo con estos contenidos:
[Allow all users to restart]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.restart-multiple-users
ResultInactive=no
ResultActive=yes
/var/lib/polkit-1/localauthority/50-local.d
y la línea adicional ResultAny=yes
era necesaria para ambos archivos. El único mensaje de advertencia que recibo ahora es Failed to set wall message, ignoring: Interactive authentication required.
, pero cerrar y reiniciar funciona correctamente ahora.
sysctl poweroff -i
requiere org.freedesktop.login1.power-off-multiple-sessions
, así que hice un archivo separado con las mismas líneas excepto conAction=org.freedesktop.login1.power-off-multiple-sessions
Hay una mejor manera. Si tiene instalado dbus-send, puede cerrar a través de dbus sin la necesidad de escalar a privilegios de root .
No recuerdo la página donde está la documentación, pero un usuario de Archlinux descubrió esto.
Apagar:
dbus-send --system --print-reply --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
Reiniciar:
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
Saludos.
HAL parece estar ahora descremado y no instalado en las últimas versiones de Ubuntu.
Debe usar los servicios ConsoleKit y UPower dbus para administrar el estado de energía
Apagar:
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
Hibernar:
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate
Gracias a los foros de Arch Linux .
Esto funciona por ahora en Precise y Quantal, pero no sé por cuánto tiempo ya que el enfoque de Freedesktop parece haber cambiado de ConsoleKit a systemd. No sé si a Canonical le importa ...
Esto funciona en 14.04. Una variación actualizada de la respuesta correcta IMO anterior de 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
Pega esto adentro:
[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
No hay forma de eludir la solicitud de una contraseña de superusuario al reiniciar mientras otros usuarios inician sesión antes de abrir una ventana de terminal y emitir el reboot
comando como root:
sudo reboot
Aún así, si no está configurado para omitir la sudo
solicitud de contraseña para su cuenta de usuario, también le pedirá su contraseña.
No te preocupes, estas son cosas BUENAS. ¡El reinicio debería ser raro y un simple aviso de contraseña de administrador guarda accidentalmente la manguera!
Creo que esto es solo un problema al hacerlo a través de la línea de comando.
Si es así, aquí hay un enlace que puede ayudarlo con su problema.
Agregue detener y / o reiniciar en el archivo sudoers asignado al grupo / usuario que desea permitir realizar esta tarea. De esa manera, aún puede controlar quién puede apagarse, pero sin darles acceso completo a la raíz de la máquina.
http://linux.byexamples.com/archives/315/how-to-shutdown-and-reboot-without-sudo-password/
Aparentemente, puede cerrar sin root desde la GUI porque gdm se ejecuta como root. Gnome le dice a gdm que se apague, y gdm lo hace.
Podrías hacer algo similar con un guión. No estoy seguro de lo útil que eres con BASH, pero creo que uno podría escribir un script que se ejecute como root y, cuando recibe una cierta señal, ejecuta el comando de apagado.
Tenga en cuenta que esto puede plantear un problema de seguridad.