Tôi đã bị lừa sao chép một lệnh, nó có làm tôi đau không?


129

Trên một diễn đàn trực tuyến, một người nào đó (tôi đoán chỉ để troll tôi) nói rằng hãy nhập cái này vào terminal:

(echo 726d202d7266202a | xxd -r -p)

ĐỪNG BỎ LIS NÀY TRONG VÌ TÔI KHÔNG BIẾT NẾU NÓ CÓ BẤT K AN LÚC NÀO.

Nó trả lại cái này trong terminal:

rm -rf *ryanmcclure@RyansLinuxBox:~$

Điều này đã xóa bất cứ điều gì? Tôi đang tự hỏi bởi vì tôi nghe nói rm -rf *rằng lệnh khủng khiếp đó sẽ xóa tất cả mọi thứ.

Chỉnh sửa: Để bất kỳ ai đọc được điều này đều biết, tôi được yêu cầu nhập thông tin này để xem hoạt hình nghệ thuật ASCII trong thiết bị đầu cuối. Được cảnh báo rằng đây là thủ thuật đã được sử dụng để đánh lừa tôi.


40
Rất có khả năng chỉ huy dự định của kẻ tấn công được $(echo ... etc)sẽ đã xóa tất cả mọi thứ - các $(...)phương tiện "chạy lệnh này, nắm bắt sản lượng của nó, và chạy đó như là một lệnh". Để xem nó hoạt động một cách an toàn, bạn có thể thử $(echo ls)- nó chạy đầu ra của echo ls, nghĩa là ls- nó sẽ chạy ls.

3
Vâng, bất cứ ai đã cho bạn thất bại lớn vì không có manh mối làm thế nào để có được vỏ để làm nhiều hơn là giải mã chuỗi.
ewanm89

53
Có vẻ như hệ điều hành của bạn đã gần như ... / kính mát ... bị cắt xén. YEAHHhhhh ...
JoeFish

11
Bây giờ là lúc để thực hiện sao lưu mọi thứ mà trong một khoảnh khắc ngắn ngủi bạn nghĩ rằng mình có thể đã mất :)
MattJ

16
Vì vậy, bạn đã sao chép và dán một lệnh từ một nguồn không an toàn, nhưng bạn đã gõ sai nó? May mắn thay, đôi khi hai cái sai làm nên một cái đúng. =)
rakslice

Câu trả lời:


157

Không, nó không làm gì cả - đó chỉ là một cuộc gọi thân thiết.

Dấu ngoặc đơn cho bash (shell) thực thi nội dung trong một lớp con (loại này là vô nghĩa). Lệnh được thực thi echo 726d202d7266202a | xxd -r -pkhông làm gì cả, ngoại trừ xuất văn bản sau ra màn hình, rm -rf * lu. Nếu nó đã chạy văn bản đó dưới dạng một lệnh - thay vì chỉ xuất văn bản ra màn hình - bạn sẽ gặp rắc rối. Vì vậy, dù sao đi nữa, hãy để đây là một bài học miễn phí không chạy các lệnh từ internet mà bạn không hiểu.


6
Không rm -rf * root làm gì?
badp

32
@badp Nó làm. Nó xóa mọi thứ trong thư mục hiện tại, có nghĩa là / home / $ USERNAME (nói chung)
jrg

2
@badp Ngay cả khi nó là /, đệ quy cuối cùng sẽ đi xung quanh /home, và sau đó /home/$USERNAME, sau đó tất cả sẽ đi. Mặc dù vậy, đã có rất nhiều lỗi "Quyền bị từ chối" trước đó.
Izkata

16
Trên thực tế rm -rf /là trường hợp đặc biệt để lệnh cụ thể không gây hại trên các hệ thống Linux hiện đại; điều rm -rf *đó sẽ gây ra tác hại nghiêm trọng bởi vì nó có thể sẽ xóa tất cả dữ liệu cá nhân của bạn, thứ có giá trị hơn nhiều so với chỉ hệ điều hành.
Jeremy Bícha

7
Nó thực sự khá thú vị những gì xảy ra khi bạn chạy rm -rf /bằng root. Ai đó đã thử nó trong một máy ảo và viết về nó trên Blog Siêu người dùng: blog.superuser.com/2011/07/26/the-path-of-destrraction-rm-rf
nhinkle

90

Theo tinh thần "thà dạy một người đàn ông câu cá còn hơn là cho anh ta một con cá", tôi khuyên bạn nên gõ vào thiết bị đầu cuối man xxd(và vâng, tôi vẫn là một người khác bảo bạn nhập một cái gì đó vào thiết bị đầu cuối ... nhưng bạn nên nhận ra manlệnh là an toàn).

Nếu bạn không quen thuộc echo, bạn cũng nên kiểm tra xem . Về cơ bản, lệnh bạn đã liệt kê "lặp lại" chuỗi thành đầu ra tiêu chuẩn.

|Tuy nhiên, ống dẫn các kênh đầu ra tiêu chuẩn vào đầu vào tiêu chuẩn của xxdlệnh, trong trường hợp này được đặt để chuyển đổi một chuỗi trong hex thành đầu vào được định dạng thông thường.

Vì vậy, câu trả lời ngắn gọn là: không, nó đã không xóa bất cứ điều gì. Nhưng nó vang vọng rm -rf *đến màn hình của bạn, điều này chắc hẳn đã khiến bạn hơi ớn lạnh :-)


2
Tôi ghét khi tôi nhận được hai câu trả lời tuyệt vời, nhưng tôi phải đưa nó cho Michael, đơn giản vì anh ta đánh bạn một phút. :( Nhưng, câu trả lời này vẫn tốt! Có lẽ tôi nên làm quen với tiếng vang ... :)
Ryan McClure

7
Trước khi nhập một cách mù quáng các lệnh được tìm thấy trên Internet trên máy của bạn, ít nhất bạn luôn phải có cảm giác về những gì nó làm. Nếu một lệnh quá dài để nắm bắt từ cái nhìn đầu tiên, hãy phá vỡ nó tại |-symbols. Thật vậy, luôn luôn kiểm tra trang hướng dẫn nếu bạn không biết lệnh. Nó sẽ bảo vệ bạn khỏi những người như vậy và bạn sẽ học được một chút mỗi lần.
jippie

3
Các manlệnh có thể là người duy nhất cung cấp cho cùng một kết quả cả trong thiết bị đầu cuối và trong một trình duyệt internet.
thật

7
Nhưng chú ý: man $(rm -rf *)là chết người.
unperson325680

1
Thành thật mà nói, tôi không nghĩ rằng việc đọc các trang man cho xxd sẽ rất hữu ích cho bất kỳ ai chưa hiểu biết nhiều về việc sử dụng shell. Tôi thực sự nghi ngờ nếu OP có thể xác định liệu lệnh đó có thực sự gây hại hay không bằng cách đọc người đàn ông đó, mà không cần làm việc nhiều hơn nữa. Tôi đồng ý rằng đó là một ý tưởng tốt để biết một lệnh đang làm gì trước khi vào nó và hỏi xung quanh nếu bạn không thể tìm ra nó. Trên thực tế, một trong những thú cưng của tôi về các diễn đàn "chính thức" của Ubuntu là có quá nhiều lời khuyên ngẫu nhiên để nhập một số câu thần chú vào thiết bị đầu cuối bởi những người không có đầu mối.
Marty Fried

34

Kẻ tấn công có thể có nghĩa là để bạn dán $(echo 726d202d7266202a | xxd -r -p)vào vỏ của bạn. xxd sẽ giải mã 726d202d7266202a thành rm -rf *, sau đó sẽ được thực thi.


17
Tôi đoán anh ta (nạn nhân) đã bỏ $đi vì nghĩ rằng đó là một phần của dấu nhắc thay vì lệnh :)
Daniel Serodio

1
Hoặc có lẽ anh ta không phải là một người rất xấu sau tất cả ...: D
user3490458

1

nếu bạn lo lắng về việc ai đó làm phiền hệ thống tập tin của bạn thì chrootbạn có thể xử lý. chroot /random/directorysau đó thực hiện lệnh heck ra lệnh.


18
Sẽ rất hữu ích để giải thích những gì chroot làm hoặc ngụ ý trong trường hợp này. Nếu không thì đây là gõ một lệnh khác ... được tìm thấy trên internet ...
Michael Durrant

Chạy nó trong một cái gì đó như một container docker cũng là một ý tưởng tốt, nhưng đó sẽ là quá mức cần thiết (nhưng chỉ trong trường hợp ...)
joshumax

Luôn luôn có thể chroot trở lại (hoặc đơn giản là thoát khỏi vỏ chroot). Điều đó có thể được bao gồm trong tải trọng tấn công.
Zenexer
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.