Bạn có thể đi bao xa với rm -rf / với quyền root


23

Nếu bạn là root, và bạn phát hành

rm -rf / 

Sau đó, lệnh có thể đi bao xa? Bạn có thể khôi phục dữ liệu từ loại hành động này không? Ngay cả sau khi các nhị phân không còn nữa, các tiến trình đang chạy có còn hoạt động không? Điều gì sẽ làm cho cùng một máy vật lý khởi động lại? Những tập tin bạn cần khôi phục để thực hiện điều này?

Tôi có thể thử điều này trên máy ảo và xem, nhưng tôi muốn biết lý do đằng sau những gì sẽ xảy ra nếu tôi làm điều này.



1
@Ste Đúng, nhưng miễn là nó không được sao chép / dán, chúng tôi thường để nó đi, vì chúng tôi có một số trùng lặp với các trang web khác
Michael Mrozek

Câu trả lời:


21

Lệnh này không làm gì cả, ít nhất là trên HĐH tôi sử dụng (Solaris) mà tính năng bảo mật này được thực hiện lần đầu tiên:

# rm -rf /
rm of / is not allowed

Trên * nix khác, đặc biệt là họ Linux, nếu một Gnu rm đủ gần đây được cung cấp, bạn sẽ cần thêm --no-preserve-roottùy chọn để cho phép lệnh hoàn thành (hoặc ít nhất là bắt đầu).

Lệnh này sẽ đi bao xa là không xác định. Nó phụ thuộc vào nhiều sự kiện ít nhiều không thể đoán trước. Nói chung, các quy trình có thể chạy ngay cả sau khi nhị phân của chúng bị xóa.


5
Không tin bạn lúc đầu, nhưng có nó là . Thật khó để tin rằng phải đến năm 2005 (Sun / BSD) và 2006 (GNU) để ngăn chặn sai lầm khủng khiếp này xảy ra.
amphetamachine

3
Bạn vẫn có thể sử dụng rm -rf /*để xóa BẤT CỨ LÚC NÀO
Felix Yan

1
Thật vậy, nhưng trong trường hợp đó, không có gì rm có thể (dễ dàng) làm được vì việc mở rộng tệp đã được thực hiện bởi trình bao trước khi rm được gọi.
jlliagre

4

Ngay cả với câu trả lời tuyệt vời của jlliagre, hãy nhớ rằng đây vẫn là một điều khá nguy hiểm. Luôn luôn kiểm tra xem bạn đang ở đâu trước khi làm những việc như thế rm -rf. Nó sẽ là thảm họa nếu bạn phải làm rm -rf *trong khi trong thư mục / usr, ví dụ.

Đối với phần còn lại của câu hỏi của bạn, những gì bạn có thể phục hồi khá nhiều phụ thuộc vào thủ tục sao lưu của bạn. Trong hầu hết các hệ thống * nix, không có cách đơn giản nào để khôi phục các tệp và thư mục một khi chúng đã bị xóa. Không giống như ngày DOS cũ, nơi các tệp thường vẫn còn trên đĩa sau khi xóa được thực hiện, hầu hết các hệ thống ngày nay làm những việc khiến việc khôi phục rất khó khăn. Đây là một trong những lý do mà các dịch vụ phục hồi dữ liệu rất đắt tiền.

Nếu bạn đang sử dụng máy ảo, tôi ít nhất nên thực hiện chụp nhanh theo thời gian. Nhưng không có gì có thể đánh bại sau một kế hoạch dự phòng tốt.


2

Như một số người nói, bạn vẫn có thể sử dụng sudo rm -rf /*để loại bỏ bất cứ điều gì. Không có dấu hoa thị cũng hoạt động trên OS X. Ai đó đã thực hiện một cảnh quay về việc phá hủy OS X Yosemite như thế này và tôi chắc chắn rằng HĐH dựa trên Linux sẽ trải nghiệm tương tự.

Mọi thứ từ từ bắt đầu trở nên vô trách nhiệm. Tôi không nghĩ rằng mọi thứ đã bị xóa, vì thiết bị đầu cuối bị đóng băng trong khi quá trình đang diễn ra, nhưng nó đủ để đóng băng toàn bộ và thực hiện khởi động lại.

Cố gắng khởi động lại khiến chế độ một người dùng như màn hình khởi động bị lỗi.


1
Nếu điều đó có thể mang lại một chút an ủi, sudo rm -rf /*sẽ không xóa các tập tin và thư mục ẩn trong /. Nó cũng sẽ không thể xóa các tệp bị che bởi một điểm gắn kết khác, các tệp trên các hệ thống tệp chỉ đọc hoặc các hệ thống tệp giả, các tệp không thay đổi hoặc các điểm gắn kết.
Stéphane Chazelas

@ StéphaneChazelas Điều đó cũng được hiển thị trong đoạn phim. Có lỗi với hệ thống tập tin đọc. Mặc dù không xóa tất cả mọi thứ, nhưng nó đã đủ để đóng băng và phá hủy boot (của hệ thống, không phải EFI)
TheBro21

2

Tôi vừa thử với máy trạm Ubuntu 16 và vmware và với tùy chọn không có root, nó đã xóa toàn bộ đĩa của hệ thống linux đang chạy của tôi. Sau khi hoàn thành, toàn bộ ứng dụng máy trạm vmware trở nên không ổn định và thậm chí tắt nguồn hoặc đặt lại máy ảo từ ứng dụng là không thể. Giết vmx đã bị từ chối chỉ một khởi động lại máy chủ hoạt động sau đó!


Tốt đẹp! :) Đây là những gì tôi đã hy vọng nghe từ một ai đó.
Sudipta Chatterjee

1

Người ta không thể đơn giản phá hủy hệ thống của mình bằng cách phát hành rm -rf /root. Ban đầu, lệnh sẽ được ban hành ở chế độ fail-safe, điều này sẽ hạn chế việc sử dụng rmtrên /nhưng ngay cả với --no-preserve-roottư cách là một đối số, hệ thống đang chạy sẽ không cho phép loại bỏ các tiến trình đang chạy khỏi đĩa; tuy nhiên, phần còn lại của các chương trình và tệp sẽ bị xóa, khiến một hệ thống không thể sử dụng được (hầu như) không có chương trình nào để chạy! Vui lòng kiểm tra ảnh chụp màn hình được dán ở đây, lệnh được ban hành trong Arch Linux trong Hộp ảo: http://bit.ly/q9CsA4


Bạn có thể tải lên hình ảnh ở đâu đó? Tải xuống một tar, gỡ bỏ và xem tất cả các tệp không phải là điều mà hầu hết mọi người sẽ làm. Công cụ rút ngắn URL và không được phép trên SE, luôn sử dụng liên kết thực
TheLQ

3
Bạn đã viết: "hệ thống đang chạy sẽ không cho phép xóa các tiến trình đang chạy khỏi đĩa". Theo như * nix, điều này là không chính xác. Hạn chế này tồn tại trên Windows nhưng bạn có thể xóa (hủy liên kết) các tệp trên Unix / Linux ngay cả khi chúng được thực thi.
jlliagre

2
"... hệ thống đang chạy sẽ không cho phép xóa các tiến trình đang chạy khỏi đĩa ..." Điều này, tôi sợ, không đúng - các tệp không thể xóa trong ví dụ của bạn hoàn toàn không phải là 'tệp' thực sự - họ cung cấp quyền truy cập vào các thiết bị khối, mô-đun hạt nhân và các phần bên trong hệ thống khác. Thực hiện một thao tác xóa trên chúng không có ý nghĩa và không thể được thực hiện ngay cả khi root.
Nathan Osman

Dưới đây là những bức ảnh do Abhisek chia sẻ trong galery trực tuyến: min.us/mSQcqHGQA min.us/moyPvnYOw (theo yêu cầu của TheLQ)
Artem Pelenitsyn
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.