Vô hiệu hóa lệnh tắt máy cho tất cả người dùng, thậm chí root - hậu quả?


11

Tôi muốn tắt shutdownlệnh cho tất cả người dùng, thậm chí root, trên bản cài đặt Ubuntu Server.

Lý do tôi muốn làm điều này là để đảm bảo rằng tôi không có thói quen tắt máy theo cách này, vì tôi SSH vào rất nhiều máy sản xuất cùng lúc với máy này và tôi không muốn vô tình tắt một trong các máy khác bằng cách gõ lệnh vào cửa sổ sai.

Máy chủ tôi muốn tắt tính năng tắt chỉ chạy trong VirtualBox trên máy tính để bàn Windows của tôi và tôi chỉ sử dụng nó để kiểm tra cục bộ nên không có vấn đề gì nếu tôi không thể tắt nó khỏi dòng lệnh.

Tôi đã giảm bớt vấn đề một chút bằng cách đảm bảo tôi có mật khẩu khác trên hình ảnh VirtualBox, nhưng rõ ràng nếu tôi ở trong sudo'cửa sổ' trên một trong các máy sản xuất, tôi vẫn có thể vô tình tắt nó.

Câu hỏi của tôi là:

  1. Làm cách nào để tắt lệnh tắt máy?
  2. Nếu tôi vô hiệu hóa lệnh tắt máy, có bất kỳ hậu quả nào mà tôi cần phải biết không? Cụ thể nhất, nó sẽ vô hiệu hóa hỗ trợ tắt máy ACPI tương đương với việc nhấn nút nguồn trên máy vật lý? Nó có thể ảnh hưởng đến các ứng dụng chung khác?

Để biết thông tin, tôi chỉ sử dụng hình ảnh VirtualBox này để thử các kịch bản shell, chạy Tomcat và Java và đại loại thế.


2
Theo tôi, việc thay đổi một hành vi cốt lõi như vậy của hệ thống để ngăn chặn lỗi của con người là một ý tưởng tồi. Nó có khả năng mang lại nhiều vấn đề trong dài hạn hơn là nó giải quyết. Nếu bạn giữ một mật khẩu người dùng khác nhau cho mọi hệ thống, bạn sẽ giảm thiểu rủi ro (vì nó yêu cầu sudo). Bạn nên phát triển những thói quen tốt không phụ thuộc vào sự thay đổi hệ thống cụ thể, những thảm họa nghiêm trọng hơn thường xảy ra với rm / cp / chmod được sử dụng thường xuyên hơn và tôi đoán bạn sẽ không vô hiệu hóa chúng.
João Pinto

Mặc dù tôi đồng ý với điều đó, và đó chắc chắn là Cách đúng đắn để làm mọi thứ, nhưng điều này chỉ để tránh điều đó, một tình huống nhỏ bé đã tạo ra một hình ảnh Ubuntu không chính thức mà tôi có trên máy tính để bàn của mình để cho phép tôi thử mọi thứ mà không gặp rủi ro trong số b0rking máy của chủ nhân của tôi :)
Rich

Câu trả lời:


3

Nếu bạn thường chạy lệnh như sudo shutdown, thay vì sudo /sbin/shutdown, thì bạn chỉ có thể thiết lập bí danh shell toàn cầu cho "shutdown" để chỉ lặp lại một tin nhắn đến thiết bị đầu cuối. Việc thực thi thực sự vẫn sẽ ở đó cho tất cả các mục đích khác.


Đây có vẻ là cách tốt nhất để đi nếu bạn đang cố gắng làm gián đoạn một thói quen.
ændrük

2
Nhưng lưu ý rằng cách rõ ràng để thiết lập bí danh shell ( alias shutdown=sl) sẽ không có bất kỳ ảnh hưởng nào đến các đối số để sudo. Trong zsh, bạn có thể định nghĩa các bí danh khớp với các đối số, nhưng tôi nghĩ không phải trong bash. Bạn có thể bí danh sudocho một tập lệnh shell từ chối làm bất cứ điều gì nếu đối số đầu tiên là shutdown.
poolie

2
Nói cách khác, điều này sẽ không thực sự hoạt động.
poolie

14

Một cách tiếp cận tốt hơn cho vấn đề này là cài đặt chương trình bảo vệ molly trên các hộp bạn không muốn tắt máy, thay vì cố gắng tự rèn luyện để không bao giờ chạy tắt máy.

molly-Guard cố gắng ngăn bạn vô tình tắt hoặc khởi động lại máy. Nó thực hiện điều này bằng cách tiêm một vài kiểm tra trước các lệnh hiện có: tạm dừng, khởi động lại, tắt máy và tắt nguồn.

Cấu hình điển hình là nó yêu cầu bạn nhập tên máy chủ của máy để xác nhận bạn thực sự ở bên phải.

Có thể thêm tập lệnh mới vào /etc/molly-guard/run.d(như được ghi lại trên trang chủ , tập tin tập lệnh phải tuân theo cách đặt tên dự kiến run-parts.

Nếu bạn thực sự muốn vô hiệu hóa shutdown(và đây là một ý tưởng kỳ quái), chỉ cần làm

chmod 0 /sbin/shutdown

sau đó nếu bạn cần sử dụng nó, hãy chỉnh sửa lại thành 0755.


Một ý tưởng tuyệt vời nhưng đáng buồn là không thể vì tôi không có đủ quyền kiểm soát các hệ thống để có thể cài đặt phần mềm của riêng mình. Đáng buồn là tôi có đủ quyền kiểm soát để có thể tắt chúng!
Giàu

4
Bạn nghiêm túc chứ? Điều đó rất lạ. Nếu bạn chỉ có quyền truy cập sudo để chạy tắt máy, có lẽ bạn có thể thuyết phục mọi người thay đổi sudo để phát ra một dấu nhắc lớn hoặc luôn yêu cầu mật khẩu. Nếu có nguy cơ bạn vô tình tắt chúng, thì đó sẽ là quyền lợi của quản trị viên để cài đặt bảo vệ molly.
poolie

1

Để vô hiệu hóa lệnh tắt máy, chỉ cần làm cho nhị phân không thực thi được. sudo chmod a-x /sbin/shutdown Ngoài ra, tôi không nghĩ rằng nó sẽ ảnh hưởng đến bất kỳ phương thức tắt máy nào khác bởi vì như mục nhập của người đàn ông để tắt máy nói

tắt máy sẽ gửi một yêu cầu đến trình nền init để đưa hệ thống xuống runlevel thích hợp

vì vậy, bất kỳ lệnh / tập lệnh nào khác đều có thể thực hiện việc này ngay cả sau khi tắt lệnh tắt máy, ví dụ tôi vẫn có thể tắt hệ thống của mình bằng cách tắt máy từ menu Gnome. Ngoài ra, bạn vẫn có thể khởi động lại máy tính của mình từ dòng lệnh bằng lệnh khởi động lại


1

Các shutdownlệnh trong /sbin/shutdown. Bạn có thể vô hiệu hóa nó bằng cách làm điều này:

sudo mv /sbin/shutdown /sbin/really-do-shutdown

Nhưng : Điều này có nghĩa là hầu như không có phương pháp tắt hệ thống thông thường nào sẽ hoạt động lâu hơn nữa. Việc tắt gnome trên máy kiểm tra của tôi cho câu trả lời này khiến nó chỉ đăng xuất bạn và đưa bạn trở lại GDM.

Nếu bạn muốn tắt hệ thống của mình sau đó, bạn phải làm

sudo init 0

Tắt "Tắt" sẽ ảnh hưởng đến mọi ứng dụng sử dụng lệnh cho mọi thứ. Vì init 0không phải là cách tắt hệ thống được đề xuất, tất cả các chương trình phải tắt hệ thống sử dụng shutdowncho hệ thống , sẽ không hoạt động nữa.

  • Các ứng dụng cũng có thể đưa ra các ngoại lệ do tệp bị thiếu hoặc tệp không thể thực thi được , có khả năng khiến chúng bị sập ngay cả khi không cần tắt máy. Đây là một trường hợp cạnh mà bạn có thể giải quyết bằng cách di chuyển một số tệp thực thi lý tưởng nhị phân (không phải là tập lệnh shell - không hoạt động) ở vị trí của nó. Ví dụ:

    sudo cp /bin/ps /sbin/shutdown
    

    Đây là sau khi bạn di chuyển bản gốc ra khỏi đường một cách an toàn.

Bây giờ, tất cả điều này là khá hack, và tôi khuyên bạn nên chống lại nó , vì những lý do được nêu trong nhận xét của João Pinto. Nhưng tôi sẽ không ngăn bạn làm điều đó. :-)

Đừng chỉ sao lưu / sbin / tắt máy, đồng thời, có kế hoạch khôi phục trong trường hợp gây ra bất kỳ rắc rối nào. Đừng làm điều này trên một máy chủ mà bạn không thể truy cập, ví dụ. Và kiểm tra kế hoạch khôi phục của bạn trước đó, giả sử rằng hệ thống hoàn toàn không khởi động (tất nhiên nó sẽ khởi động - tôi đã kiểm tra nó - nhưng vui lòng ở bên an toàn).


0

Tôi nghĩ cần phải có một giải pháp khác, Máy chủ nên có chính sách ssh để tắt máy tắt và init 0 trên ssh hoặc phải có một hộp thoại đặc biệt được hiển thị trên bảng điều khiển như tại Windows để nhập "tại sao" và "mật khẩu tắt" đặc biệt . Do đó, nút nguồn phải được bảo vệ bằng mật khẩu khi sử dụng Máy chủ.

Hiện tại, chúng tôi sử dụng "công tắc phím vật lý = 4Euros" thay vì Nút ấn.


0

Tôi muốn tắt shutdownlệnh.

cp / sbin / shutdown / sbin / shutdown-backup

rm / sbin / tắt máy

Điều này là bởi vì nếu ai đó cố gắng mạnh mẽ muốn sử dụng lệnh này, thì anh ta cũng không thể

bây giờ không ai có thể sử dụng lệnh shutdown.

Nó sẽ hiển thị một lệnh tin nhắn không tìm thấy cài đặt nó.

vim /etc/bash.bashrc

Thêm một dòng cuối cùng của bash.bashrc

alias shutdown = "echo 'Bạn không được phép sử dụng lệnh này'"

nếu bạn muốn nó trở lại (kích hoạt). chỉ cần sao chép lại

cp / sbin / shutdown-backup / sbin / 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.