Làm cách nào để tắt tắt / khởi động lại / tạm dừng / ngủ đông?


12

Tôi có máy tính để bàn Ubuntu 10.04 LTS với Gnome.

Làm cách nào tôi có thể vô hiệu hóa hoàn toàn các chức năng khởi động lại / tắt máy / tạm dừng / ngủ đông trong Gnome hoặc thậm chí với root? Vì vậy, root đưa ra lệnh "khởi động lại" hoặc "tạm dừng", nó không làm gì cả, và máy tiếp tục. Làm thế nào tôi có thể vô hiệu hóa hoàn toàn các "tính năng" cơ bản này?


Tôi không biết? Là một ki-ốt? bạn chỉ cần xóa shutdownpm-suspendtừ /sbin//bin/
Amith KK

Những tập tin đó có thể nằm trong bộ đệm, không? Loại bỏ chúng sẽ không cho phép vĩnh viễn chức năng khởi động lại / tắt máy / tạm dừng / ngủ đông ngay cả trong Gnome?
LanceBaynes

Vâng, nó có thể sẽ làm như vậy @Lance Baynes
Amith KK

Câu trả lời:


15

Người dùng truy cập vào các hành động này được kiểm soát bởi polkit. Cụ thể, chúng tương ứng với các hành động sau:

  • org.freedesktop.consolekit.system.stop
  • org.freedesktop.consolekit.system.restart
  • org.freedesktop.upower.suspend
  • org.freedesktop.upower.hibernate

Tất cả các hành động này được cho phép theo mặc định cho người dùng cục bộ đang hoạt động (mặc dù consolekithạn chế thêm hai quyền đầu tiên chỉ hoạt động khi có một người dùng đăng nhập vào hệ thống).

Nếu bạn muốn tắt các hành động này, hãy tạo một tệp /etc/polkit-1/50-local.d/disable-shutdown.pklacó chứa một cái gì đó như:

[Disable shutdown/whatever]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.stop;org.freedesktop.consolekit.system.restart;org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=no
ResultInactive=no
ResultActive=no

Điều này sẽ ngăn chặn những hành động hoàn thành. Thông tin thêm về các tệp chính sách này có thể được tìm thấy bằng cách chạy man pklocalauthority.

Nếu bạn đang cố gắng hạn chế root, điều này sẽ chỉ là một bất tiện nhỏ. Theo định nghĩa, rootlà một tài khoản không bị hạn chế theo hệ thống kiểm soát truy cập tùy ý UNIX truyền thống. Nếu bạn không thể tin tưởng người dùng mà bạn đã cấp rootquyền truy cập đầy đủ , thì bạn đã gặp vấn đề lớn hơn là họ chỉ tắt hệ thống.

Lưu ý rằng trong các phiên bản Ubuntu sau này, ai đó đã quyết định phá vỡ tính tương thích. Như đã trả lời trong Làm thế nào để tắt tắt / khởi động lại từ lightdm trong 14.04? hành động dường như đã thay đổi thành " org.freedesktop . login1 .reboot" (và tương tự).

Ví dụ: trong 14.04 thêm các dòng sau đây là /etc/polkit-1/localauthority/50-local.d/restrict-login-powermgmt.pklacông trình:

[Disable lightdm PowerMgmt]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot;org.freedesktop.login1.reboot-multiple-sessions;org.freedesktop.login1.power-off;org.freedesktop.login1.power-off-multiple-sessions;org.freedesktop.login1.suspend;org.freedesktop.login1.suspend-multiple-sessions;org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=no
ResultInactive=no
ResultActive=no

Ngoài ra, lưu ý rằng phương thức này chỉ chặn các lệnh khởi động lại / etc được phát ra từ GUI. Để chặn các lệnh khởi động lại / etc từ dòng lệnh, người ta có thể sử dụng molly-Guard - như được giải thích trong Vô hiệu hóa lệnh tắt cho tất cả người dùng, thậm chí cả hậu quả gốc?


3
Đã ngừng hoạt động tại đây với Ubuntu 13.10 !!!
GabrieleV

@GabrieleV Có thể phiên bản với login1 hoạt động trong 13.10? Tôi đã thử nghiệm nó vào ngày 14.04 - và hy vọng không ai ở Canonical phá vỡ tính tương thích ngược trong polkit trong mỗi bản phát hành cho vui.
giảm hoạt động

Là một điểm dữ liệu khác, tôi chỉ sử dụng thành công điều này trên Ubuntu 18.04.1 LTS mới, để không cho phép tắt máy và khởi động lại (nhưng cho phép ngủ đông và tạm dừng). Lưu ý rằng tôi cần sử dụng các tên 'login1' này; rằng tôi cũng đã vô hiệu hóa 'tạm dừng' và 'tạm dừng nhiều phiên'; rằng tôi đã làm điều đó bởi vì tôi đã tìm thấy những hành động đó trong /usr/share/polkit-1/ilities/org.freedesktop.login1.policy; và cuối cùng, trong UI gdm3 của Ubuntu 18.04, các nút trong hộp thoại xác nhận không bị ẩn, nhưng đơn giản là chúng không có tác dụng.
MarnixKlooster RebstateMonica

6

Xem xét cài đặt molly-bảo vệ .

sudo apt-get install molly-guard

Gói này sẽ ngăn chặn việc tắt / khởi động lại / tạm dừng / ngủ đông ngoài ý muốn bằng cách tương tác nhắc bạn nhập tên máy chủ của hệ thống.

Tuy nhiên, việc cấu hình molly-Guard để tắt hoàn toàn tắt / khởi động lại / tạm dừng / ngủ đông là điều không quan trọng. Chỉ cần tạo một tệp thực thi tại /etc/molly-guard/run.d/99-prevent-all có tệp này trong đó:

#!/bin/sh
exit 1

Lưu ý rằng nó chỉ bảo vệ chống lại các lệnh được phát ra từ dòng lệnh, tắt / khởi động lại / tạm dừng / ngủ đông được ban hành từ GUI đang bỏ qua nó. Để chặn GUI cũng sử dụng khởi động lại, người ta có thể sử dụng quy tắc polkit .


Đây là một giải pháp tốt cho một máy tính nhiều người dùng, nơi quản trị viên cần phải làm việc và ngăn tất cả những người dùng khác tắt máy trong một thời gian.
Alexis Wilke

1
Hoạt động từ bảng điều khiển, nhưng ngay cả khi có bộ phận bảo vệ molly (và được đặt thành 'luôn luôn hỏi'), quá trình tắt máy được tiến hành mà không hỏi khi bắt đầu từ Gnome (3.4).
1

Vâng, điều này không còn hoạt động nữa ... Kể từ ngày 13.10, có thể là 13.04.
Alexis Wilke

3

CẢNH BÁO! Các lệnh được liệt kê ở đây là nguy hiểm để sử dụng. Không sử dụng những thứ này trừ nguy cơ của riêng bạn!

chmod -x /usr/sbin/pm-suspend
chmod -x /sbin/reboot
chmod -x /sbin/shutdown

4
Bạn có thể chứng minh câu trả lời của bạn? Tôi chắc chắn không nghĩ rằng anh ấy muốn loại bỏ khả năng khởi động lại và tắt.
viyyer

Làm thế nào một người có thể kích hoạt lại ngủ đông theo cách này?
Hội chợ Gabriel

sử dụng "chmod + x" chứ không phải "chmod -x"
LanceBaynes

5
Cảnh báo! Đừng làm điều này Các lệnh này được liên kết với nhau /bin/systemctlvà sẽ loại bỏ bit thực thi khỏi nó. Đây là một thực thi quan trọng mà cũng kiểm soát service SERVICE_NAME [stop|start|restart]. Hệ thống của bạn có thể sẽ không khởi động được nữa (nếu bạn có thể khiến nó tắt máy).
Daniel F

Tôi đã chạy các lệnh này trên một VPS Ubuntu. Tắt VPS từ máy chủ, tắt máy không thành công. Nó đã giết daemon SSH. Buộc dừng lại và bắt đầu, có thể SSH chỉ trong tốt. Sau khi khởi động lại /bin/systemctlđược đặt thành chỉ đọc-ghi-rw-r--r-- 1 root root
kryo

0

Dựa trên câu trả lời của OP, bạn có thể làm

for file in $(/sbin/shutdown /sbin/reboot /usr/sbin/pm-suspend); do
    mv $file $file.bak && touch $file
done

Điều này đổi tên các liên kết tượng trưng và thay thế chúng bằng các tệp trống. Điều này sẽ ngăn chặn việc tắt dòng lệnh, tôi không biết nếu các lệnh GUI gọi nó hoặc làm việc riêng của chúng để bạn có thể phải thực hiện câu trả lời được chấp nhận.

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.