Làm thế nào để nút nguồn tắt máy tính mà không có quyền root?


36

Khi tôi cố gắng tắt máy tính từ một dòng lệnh hoặc thiết bị đầu cuối, tôi phải có quyền root:

amy@amy:~$ shutdown now
shutdown: Need to be root

amy@amy:~$ halt
halt: Need to be root

nhưng khi tắt sử dụng giao diện người dùng đồ họa, tức là nút tắt máy hoặc nút tắt phần cứng, tôi không được yêu cầu nhập mật khẩu. Việc tắt máy cho giao diện đồ họa là gì và tại sao nó không cần mật khẩu hoặc quyền root?

Tôi đang sử dụng Ubuntu 11.04 Natty.



1
bởi vì nếu kẻ tấn công có quyền truy cập vật lý vào máy tính của bạn, bạn đã bị mất. Cố gắng ngăn không cho ai đó trong tầm tay thực hiện hầu hết mọi thứ là một chiến thuật trì hoãn và chủ yếu gây ra sự bất tiện cho người dùng hàng ngày hơn là cho kẻ tấn công. Hầu hết các bản phân phối Linux sẽ cung cấp cho bạn lời nhắc gốc nếu được nói một cách nghiêm khắc trong quá trình khởi động vì lý do chính xác này.
Joseph Rogers

Câu trả lời:


33

Nút nguồn phần cứng kích hoạt một sự kiện ACPI mà acpid(daemon ACPI) thông báo và phản ứng lại; trong trường hợp này bằng cách tắt hệ thống, mặc dù bạn có thể yêu cầu nó làm bất cứ điều gì bạn muốn. Trình nền ACPI chạy bằng root, vì vậy nó có quyền tắt hệ thống. Các môi trường máy tính để bàn (ví dụ như gdmGnome) cũng thường chạy bằng root, vì vậy tôi nghi ngờ chúng hoạt động theo cùng một cách - bạn không có quyền tắt hệ thống, nhưng bạn có thể nói rằng gdmbạn muốn tắt nó và nó có thể làm điều đó thay mặt bạn


nó có an toàn không ?? 'bạn có thể có nó làm bất cứ điều gì bạn muốn.'
amyassin

7
Để có acpidthể làm một cái gì đó khác với nó, bạn phải root, vì vậy bạn đã có quyền làm những điều không an toàn. Cũng có thể sử dụng các hệ thống MAC như SELinux để bảo vệ acpid, hạn chế những việc chúng được phép làm, ngay cả khi chúng chạy bằng root.
Warren Young

5
@amyassin Vâng, để thay đổi những gì bạn cần quyền root; một người dùng bình thường không thể nói cho nó biết phải làm gì. Nhưng acpidcó thể định cấu hình, nó có thể chạy các tập lệnh khác nhau tùy thuộc vào các sự kiện phần cứng mà nó nhìn thấy (ví dụ: tôi đã acpidkhóa máy tính của mình khi nhấn nút nguồn)
Michael Mrozek

7
@amyassen Nếu ai đó có quyền truy cập vật lý vào máy tính của bạn thì đó là quá muộn để lo lắng về an ninh - nếu nút nguồn không kích hoạt một shutdown duyên dáng họ chỉ có thể kéo dây điện và gây ra một không có vẻ yêu kiều tắt máy.
Shadur

3
Đã nói 'phần mềm độc hại' sẽ phải có quyền sở hữu gốc và quyền SUID để yêu cầu init thực hiện với việc tắt máy - và một lần nữa, đến thời điểm đó, bạn sẽ gặp vấn đề lớn hơn là phải tắt máy.
Shadur

11

Câu trả lời của Michael thảo luận chính xác về chức năng hệ thống khi sử dụng công tắc nguồn phần cứng, nhưng hầu hết các môi trường máy tính để bàn thực sự sử dụng dbuscho mục đích này thay vì tự làm. Ví dụ, GNOME sử dụng dbusorg.freedesktop.Hal.Device.SystemPowerManagement.Shutdownkhi nút shutdown được nhấp. Khi điều này được gửi, dbusmột số kiểm tra để xác định xem người dùng gửi tin nhắn có được phép thực hiện tắt máy hay không, và nếu có, nó sẽ tắt hệ thống.

Bạn có thể mô phỏng điều này bằng cách sử dụng dbus-send. Ví dụ: để tắt hệ thống của bạn bằng cách sử dụng dbus, hãy sử dụng một cái gì đó như thế này:

dbus-send --system --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
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.