Làm thế nào tôi có thể thực hiện tắt máy không yêu cầu mật khẩu quản trị viên?


49

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?


3
+1 Tôi nghi ngờ nhập mật khẩu để tắt máy gây khó chịu cho nhiều người dùng trên PC tại nhà.
Richard Holloway

7
Nếu bạn tắt máy tính trong khi những người khác đăng nhập, điều gì xảy ra với cửa sổ đang mở của họ? Tài liệu mở của họ? Tôi nghĩ rằng bất cứ thứ gì không tự động chỉ đơn giản là bị mất. Điều này đáng để xem xét.
Torben Gundtofte-Bruun

"Ubuntu yêu cầu xác thực siêu người dùng khi tắt máy tính", trong Ubuntu 11.10, nó không yêu cầu ủy quyền siêu người dùng, khi tắt máy bằng menu, nó chỉ hoạt động như đăng xuất và đưa đến trang Đăng nhập, như trong câu hỏi này: Askubfox.com/ q / 64073/11995 , tôi quan tâm đến cách định cấu hình Ubuntu để hỏi tôi mật khẩu siêu người dùng?
Mikl

1
Từ 14.04 trở đi: xem Askubfox.com/questions/454039/ trên
Takkat

Câu trả lời:


27

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.


1
Đây là một liên kết với nhiều hơn về bộ chính sách: hal.freedesktop.org/docs/PolicyKit/polkit-conf.html
Richard Holloway

4
Các thay đổi của bạn sẽ bị xóa sổ bất cứ khi nào polkit được cài đặt lại hoặc nâng cấp?
Ryan Thompson

3
@Ryan, theo wiki.ubfox.com/SecurityTeam/PolicyKitPermissions/12.04 bạn có thể viết một tệp .pkla bên trong / etc / polkit-1 / localmasterity, nhưng tôi không chắc về cú pháp của nó :) (một số thông tin ở đây wiki. archlinux.org/index.php/PolicyKit#Authorities )
Joril

1
Câu trả lời dưới đây từ Flimm là tốt hơn, sẽ không được viết trong quá trình cập nhật yêu cầu Ubuntu.com / 25/254242/472
Konstigt

1
Làm thế nào để tải lại các quy tắc mà không cần khởi động lại?
Suncatcher

33

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.pklavà chỉnh sửa nó bằng cách sử dụng sudoeditnhư 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 .pklatệ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

Người giới thiệu:


Điều này hóa ra là giải pháp cho một vấn đề rất kỳ quặc. Vào ngày 12.04 sau khi cài đặt PowerBroker (để xác thực với Active Directory), người dùng không thể khởi động lại hoặc tắt máy tính bằng GUI (cả lightdm và phiên chỉ báo đều hoạt động. Nó sẽ chỉ quay lại màn hình đăng nhập.) Sau khi thêm các quyền này vào bộ chính sách, mọi thứ đã làm việc
korylprince

người đàn ông pklocalauthority có thông tin trong Ubuntu
Konstigt

4
Lưu ý rằng tên đã thay đổi ngay bây giờ! Đây là từ 14.04: / usr / share / polkit-1 / hành động $ grep nhiều * org.freedesktop.login1.policy: <action id = "org.freedesktop.login1.power-off-many-session"> org.freedesktop .login1.policy: <action id = "org.freedesktop.login1.reboot-many-session"> org.freedesktop.login1.policy: <action id = "org.freedesktop.login1.suspend-many-session"> .freedesktop.login1.policy: <action id = "org.freedesktop.login1.hibernate-nhiều phiên">
Konstigt

1
Đối với 16.04, ngoài các thay đổi của @ Konstigt, đối với tôi, các tệp phải có /var/lib/polkit-1/localauthority/50-local.dvà dòng bổ sung ResultAny=yeslà 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ờ.
sigalor

Nhận xét của @ sigalor đã làm việc cho tôi, với sự bổ sung sysctl poweroff -icầ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
wickychicken

16

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.


Wow đó là ... hacky. Tuyệt vời, nhưng hacky ...
jathanism

1
Tắt máy và Khởi động lại dường như không hoạt động nữa vào 11.10
Mikl

@Mikl thử cài đặt hal (sudo apt-get install hal)
Epeli

12

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 ConsoleKitUPower để 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 ...


4

Đ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

1

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 rebootlệ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, sudocũ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!


Bạn cũng có thể chỉnh sửa visudo và khiến người dùng của bạn không nhắc mật khẩu khi gõ sudo.
Da1T

0

Tôi tin rằng đây chỉ là một vấn đề khi thực hiện nó thông qua dòng lệnh.

Nếu vậy đây là một liên kết có thể giúp đỡ với vấn đề của bạn.


Không, có một cửa sổ bật lên hỏi mật khẩu quản trị viên nếu có người dùng khác đăng nhập khi bạn tắt nó. Sử dụng gui.
Ê-sai


-1

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.


Tôi nghĩ rằng vấn đề mà anh ta có thể gặp phải là lời nhắc xuất hiện thông báo rằng những người khác vẫn đang đăng nhập và yêu cầu mật khẩu sudo để cho phép tắt / khởi động lại.
David Thomas
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.