Nếu có nhiều người đăng nhập vào máy tính của tôi, Ubuntu yêu cầu xác thực siêu người dùng khi tắt máy tính. Làm thế nào tôi có thể làm cho nó để bất kỳ người dùng nào có thể tắt máy tính mà không bị yêu cầu nhập mật khẩu?
Nếu có nhiều người đăng nhập vào máy tính của tôi, Ubuntu yêu cầu xác thực siêu người dùng khi tắt máy tính. Làm thế nào tôi có thể làm cho nó để bất kỳ người dùng nào có thể tắt máy tính mà không bị yêu cầu nhập mật khẩu?
Câu trả lời:
Bạn không cần một cách giải quyết, chỉ cần thay đổi chính sách để cho phép bạn tắt mà không cần xác thực là quản trị viên để tắt máy và khởi động lại khi nhiều người dùng đăng nhập.
Chỉnh sửa tập tin /usr/share/polkit-1/ilities/org.freedesktop.consolekit.policy bằng trình soạn thảo văn bản yêu thích của bạn. Bạn sẽ cần quyền root.
Thay đổi phần liên quan đến tắt máy khi những người khác đăng nhập từ
<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>
đến
<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>
và phần liên quan đến khởi động lại khi những người khác đăng nhập từ
<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>
đến
<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>
Và điều đó sẽ cho phép bạn tắt và khởi động lại PC khi nhiều người dùng đăng nhập. Bạn có muốn làm điều đó không.
Câu trả lời của Richard Holloway không thực sự là cách ủy quyền của PolickKit. Các tập tin được cài đặt dưới /usr/share/polkit-1/actions
đây không có nghĩa là phải sửa đổi. Thay vào đó, bạn nên sửa đổi các cơ quan dưới /etc/polkit-1/localauthority/50-local.d/
.
Đây là cách bạn làm điều đó cho câu hỏi này:
Tạo một tệp có tên /etc/polkit-1/localauthority/50-local.d/allow_all_users_to_shutdown.pkla
và chỉnh sửa nó bằng cách sử dụng sudoedit
như thế này:
[Allow all users to shutdown]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.stop-multiple-users
ResultInactive=no
ResultActive=yes
Sau đó tạo một .pkla
tệp khác trong cùng thư mục. Sử dụng bất kỳ tên nào bạn muốn kết thúc bằng .pkla
, ví dụ allow_all_users_to_restart.pkla
, và điền nó với các nội dung sau:
[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
và dòng bổ sung ResultAny=yes
là cần thiết cho cả hai tệp. Thông điệp cảnh báo duy nhất tôi nhận được bây giờ là Failed to set wall message, ignoring: Interactive authentication required.
, nhưng tắt và khởi động lại hoạt động chính xác ngay bây giờ.
sysctl poweroff -i
cần thiết org.freedesktop.login1.power-off-multiple-sessions
, vì vậy tôi đã tạo một tệp riêng biệt với cùng một dòng trừ vớiAction=org.freedesktop.login1.power-off-multiple-sessions
Có một cách tốt hơn. Nếu bạn đã cài đặt dbus-send, bạn có thể tắt máy qua dbus mà không cần phải chuyển sang quyền root .
Tôi không thể nhớ trang có tài liệu hướng dẫn, nhưng một người dùng Archlinux đã tìm ra điều này.
Tắt:
dbus-send --system --print-reply --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
Khởi động lại:
dbus-send --system --print-reply --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Reboot
Đình chỉ:
dbus-send --system --print-reply --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Suspend int32:1
Ngủ đông:
dbus-send --system --print-reply --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Hibernate
Trân trọng.
HAL dường như đã hết thời và không được cài đặt trong các bản phát hành Ubuntu mới nhất.
Bạn phải sử dụng các dịch vụ dbus ConsoleKit và UPower để quản lý trạng thái nguồn
Tắt:
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
Khởi động lại:
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
Đình chỉ:
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend
Ngủ đông:
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate
Cảm ơn các diễn đàn Arch Linux .
Điều này hiện đang hoạt động trong Chính xác và Định lượng, nhưng không biết bao lâu kể từ khi tiêu điểm Freedesktop dường như được chuyển từ ConsoleKit sang systemd. Không biết liệu Canonical có quan tâm ...
Điều này hoạt động vào ngày 14.04. Một biến thể được cập nhật của IMO trước, câu trả lời đúng của 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
Dán cái này vào bên trong:
[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
Không có cách nào để phá vỡ lời nhắc cho mật khẩu siêu người dùng khi khởi động lại trong khi những người dùng khác đăng nhập bằng cách mở một cửa sổ đầu cuối và ban hành reboot
lệnh dưới dạng root:
sudo reboot
Thậm chí, nếu không được cấu hình để bỏ qua lời nhắc mật khẩu cho tài khoản người dùng của bạn, sudo
cũng sẽ nhắc bạn nhập mật khẩu.
Đừng lo lắng, đây là những điều TỐT. Việc khởi động lại nên rất hiếm và một dấu nhắc mật khẩu quản trị viên đơn giản giúp bạn vô tình tự cứu mình!
Thêm tạm dừng và / hoặc khởi động lại vào tệp sudoers được gán cho nhóm / người dùng mà bạn muốn cho phép thực hiện tác vụ này. Bằng cách đó, bạn vẫn có thể kiểm soát ai có thể tắt máy, nhưng không cho họ quyền truy cập root đầy đủ vào máy ..
http://linux.byexamples.com/archives/315/how-to-shutdown-and-reboot-without-sudo-password/
Rõ ràng, bạn có thể tắt mà không cần root từ GUI vì gdm chạy dưới quyền root. Gnome bảo gdm tắt máy và gdm làm việc đó.
Bạn có thể làm một cái gì đó tương tự với một kịch bản. Tôi không chắc bạn có tiện dụng như thế nào với BASH, nhưng tôi tin rằng người ta có thể viết một tập lệnh chạy bằng root và khi nhận được tín hiệu nhất định, sẽ chạy lệnh tắt máy.
Hãy nhớ rằng điều này có thể đặt ra một vấn đề bảo mật.