Jeśli na moim komputerze zalogowanych jest więcej niż jedna osoba, Ubuntu wymaga uwierzytelnienia superużytkownika podczas zamykania komputera. Jak mogę to zrobić, aby każdy użytkownik mógł zamknąć komputer bez pytania o hasło?
Jeśli na moim komputerze zalogowanych jest więcej niż jedna osoba, Ubuntu wymaga uwierzytelnienia superużytkownika podczas zamykania komputera. Jak mogę to zrobić, aby każdy użytkownik mógł zamknąć komputer bez pytania o hasło?
Odpowiedzi:
Nie potrzebujesz obejścia, po prostu zmień zasady, aby umożliwić zamknięcie bez uwierzytelniania jako administrator w celu zamknięcia i ponownego uruchomienia, gdy zalogowanych jest wielu użytkowników.
Edytuj plik /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy za pomocą swojego ulubionego edytora tekstu. Będziesz potrzebował uprawnień roota.
Zmień sekcję dotyczącą zamykania, gdy inni są zalogowani
<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>
do
<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>
oraz sekcję dotyczącą ponownego uruchamiania, gdy inni są zalogowani
<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>
do
<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>
Pozwoli to na zamknięcie i ponowne uruchomienie komputera, gdy zalogowanych jest wielu użytkowników. To, czy chcesz to zrobić, to inne pytanie.
Odpowiedź Richarda Hollowaya nie jest sposobem, w jaki mają być udzielane autoryzacje PolickKit. Pliki zainstalowane pod /usr/share/polkit-1/actions
nie są przeznaczone do modyfikacji. Zamiast tego należy zmodyfikować uprawnienia w obszarze /etc/polkit-1/localauthority/50-local.d/
.
Oto jak to zrobić dla tego pytania:
Utwórz plik o nazwie /etc/polkit-1/localauthority/50-local.d/allow_all_users_to_shutdown.pkla
i edytuj go, sudoedit
aby wyglądał tak:
[Allow all users to shutdown]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.stop-multiple-users
ResultInactive=no
ResultActive=yes
Następnie utwórz kolejny .pkla
plik w tym samym katalogu. Użyć dowolnej nazwy podoba Ci kończąc .pkla
na przykład allow_all_users_to_restart.pkla
, i wypełnić go z tych treści:
[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
a ResultAny=yes
dla obu plików potrzebna była dodatkowa linia . Jedyny komunikat ostrzegawczy, który teraz dostaję, to Failed to set wall message, ignoring: Interactive authentication required.
jednak zamknięcie i ponowne uruchomienie działa teraz poprawnie.
sysctl poweroff -i
wymaga org.freedesktop.login1.power-off-multiple-sessions
, więc utworzyłem osobny plik z tymi samymi wierszami, z wyjątkiemAction=org.freedesktop.login1.power-off-multiple-sessions
Jest lepszy sposób. Jeśli masz zainstalowany program dbus-send, możesz zamknąć system za pomocą dbus bez konieczności eskalacji do uprawnień administratora .
Nie pamiętam strony, na której znajduje się dokumentacja, ale jeden użytkownik Archlinux to zorientował.
Zamknąć:
dbus-send --system --print-reply --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
Restart:
dbus-send --system --print-reply --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Reboot
Wstrzymać, zawieszać:
dbus-send --system --print-reply --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Suspend int32:1
Hibernować:
dbus-send --system --print-reply --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Hibernate
Pozdrowienia.
Wygląda na to, że HAL jest już nieaktualny i nie jest zainstalowany w najnowszych wersjach Ubuntu.
Aby zarządzać stanem zasilania, musisz korzystać z usług ConsoleKit i UPower dbus
Zamknąć:
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
Uruchom ponownie:
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
Wstrzymać, zawieszać:
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend
Hibernować:
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate
Dzięki Arch Linux forach .
Działa to na razie w Precyzyjnym i Kwantowym, ale nie wiem, jak długo, odkąd Freedesktop wydaje się być przenoszony z ConsoleKit na systemd. Nie wiem, czy Canonical dba o ...
Działa to w dniu 14.04. Zaktualizowana odmiana poprzedniej, IMO, poprawnej odpowiedzi 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
Wklej to w środku:
[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
Nie ma możliwości obejścia monitu o podanie hasła administratora podczas ponownego uruchamiania, gdy inni użytkownicy są zalogowani bez otwierania okna terminala i wydawania reboot
polecenia jako root:
sudo reboot
Nawet jeśli nie skonfigurowano tak, aby pomijał sudo
monit o podanie hasła do konta użytkownika, będzie również monitował o podanie hasła.
Nie martw się, to są DOBRE rzeczy. Ponowne uruchomienie powinno być rzadkie, a proste hasło administratora pozwala zaoszczędzić przypadkowego włamania!
Dodaj zatrzymanie i / lub ponowne uruchomienie do pliku sudoers przypisanego do grupy / użytkownika, któremu chcesz zezwolić na wykonanie tego zadania. W ten sposób nadal możesz kontrolować, kto może zamknąć system, ale nie dając im pełnego dostępu roota do komputera.
http://linux.byexamples.com/archives/315/how-to-shutdown-and-reboot-without-sudo-password/
Najwyraźniej jesteś w stanie zamknąć się bez roota z GUI, ponieważ gdm działa jako root. Gnome mówi gdm, aby się zamknął, a gdm to robi.
Możesz zrobić coś podobnego za pomocą skryptu. Nie jestem pewien, jak przydatny jesteś w BASH, ale uważam, że można napisać skrypt działający jako root, a gdy otrzyma określony sygnał, uruchomi polecenie shutdown.
Pamiętaj, że może to stanowić problem z bezpieczeństwem.