Linux 對我們的生活產生了巨大的沖擊。至少你的安卓手機使用的就是 Linux 核心。盡管如此,在第一次開始使用 Linux 時你還是會感到難以下手。因為在 Linux 中,通常需要使用終端命令來取代 Windows 系統(tǒng)中的點擊啟動圖標操作。但是不必擔心,這里我們會介紹 10 個 Linux 基本命令來幫助你開啟 Linux 神秘之旅。
創(chuàng)新互聯(lián)服務項目包括虎丘網站建設、虎丘網站制作、虎丘網頁制作以及虎丘網絡營銷策劃等。多年來,我們專注于互聯(lián)網行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網行業(yè)的解決方案,虎丘網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到虎丘省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
幫助新手走出第一步的 10 個 Linux 基本命令
當我們談論 Linux 命令時,實質上是在談論 Linux 系統(tǒng)本身。這短短的 10 個 Linux 基本命令不會讓你變成天才或者 Linux 專家,但是能幫助你輕松開始 Linux 之旅。使用這些基本命令會幫助新手們完成 Linux 的日常任務,由于它們的使用頻率如此至高,所以我更樂意稱他們?yōu)?Linux 命令之王!
讓我們開始學習這 10 條 Linux 基本命令吧。
1. sudo
這條命令的意思是“以超級用戶的身份執(zhí)行”,是 SuperUserDo 的簡寫,它是新手將要用到的最重要的一條 Linux 命令。當一條單行命令需要 root 權限的時候,sudo命令就派上用場了。你可以在每一條需要 root 權限的命令前都加上sudo。
$ sudo su
2. ls
跟其他人一樣,你肯定也經常想看看目錄下都有些什么東西。使用列表命令,終端會把當前工作目錄下所有的文件以及文件夾展示給你。比如說,我當前處在 /home 文件夾中,我想看看 /home 文件夾中都有哪些文件和目錄。
/home$ ls
在 /home 中執(zhí)行l(wèi)s命令將會返回類似下面的內容:
imad lost+found
3. cd
變更目錄命令(cd)是終端中總會被用到的主要命令。它是最常用到的 Linux 基本命令之一。此命令使用非常簡單,當你打算從當前目錄跳轉至某個文件夾時,只需要將文件夾鍵入此命令之后即可。如果你想跳轉至上層目錄,只需要在此命令之后鍵入兩個點 (..) 就可以了。 舉個例子,我現(xiàn)在處在 /home 目錄中,我想移動到 /home 目錄中的 usr 文件夾下,可以通過以下命令來完成操作。
/home $ cd usr
/home/usr $
4. mkdir
只是可以切換目錄還是不夠完美。有時候你會想要新建一個文件夾或子文件夾。此時可以使用 mkdir 命令來完成操作。使用方法很簡單,只需要把新的文件夾名跟在 mkdir 命令之后就好了。
~$ mkdir folderName
5. cp
拷貝-粘貼copy-and-paste是我們組織文件需要用到的重要命令。使用 cp命令可以幫助你在終端當中完成拷貝-粘貼操作。首先確定你想要拷貝的文件,然后鍵入打算粘貼此文件的目標位置。
$ cp src des
注意:如果目標目錄對新建文件需要 root 權限時,你可以使用 sudo命令來完成文件拷貝操作。
6. rm
rm 命令可以幫助你移除文件甚至目錄。如果不希望每刪除一個文件都提示確認一次,可以用-f參數(shù)來強制執(zhí)行。也可以使用-r參數(shù)來遞歸的移除文件夾。
$ rm myfile.txt
7. apt-get
這個命令會依據發(fā)行版的不同而有所區(qū)別。在基于 Debian 的發(fā)行版中,我們擁有 Advanced Packaging Tool(APT)包管理工具來安裝、移除和升級包。apt-get 命令會幫助你安裝需要在 Linux 系統(tǒng)中運行的軟件。它是一個功能強大的命令行,可以用來幫助你對軟件執(zhí)行安裝、升級和移除操作。
在其他發(fā)行版中,例如 Fedora、Centos,都各自不同的包管理工具。Fedora 之前使用的是 yum,不過現(xiàn)在 dnf 成了它默認的包管理工具。
$ sudo apt-get update
$ sudo dnf update
8. grep
當你需要查找一個文件,但是又忘記了它具體的位置和路徑時,grep命令會幫助你解決這個難題。你可以提供文件的關鍵字,使用grep命令來查找到它。
$ grep user /etc/passwd
9. cat
作為一個用戶,你應該會經常需要瀏覽腳本內的文本或者代碼。cat命令是 Linux 系統(tǒng)的基本命令之一,它的用途就是將文件的內容展示給你。
$ cat CMakeLists.txt
10. poweroff
最后一個命令是 poweroff。有時你需要直接在終端中執(zhí)行關機操作。此命令可以完成這個任務。由于關機操作需要 root 權限,所以別忘了在此命令之前添加sudo。
$ sudo poweroff
總結
如我在文章開始所言,這 10 條命令并不會讓你立即成為一個 Linux 大拿,但它們會讓你在初期快速上手 Linux。以這些命令為基礎,給自己設置一個目標,每天學習一到三條命令,這就是此文的目的所在。
1.開機進入
---- Linux系統(tǒng)的開機同正常的DOS、Windows開關機順序相同。若是多操作系統(tǒng)則在LILO boot:后輸入Linux,就可進入Linux的注冊提示符Login:,在其后輸入用戶名,在口令提示符password:輸入口令,注冊正確后,可進入相應的用戶環(huán)境。如輸入:root,及其密碼,可進入超級用戶環(huán)境#,輸入其他用戶名及口令,可進入該用戶環(huán)境$。
---- 2.關機退出
---- 在超級用戶提示符#下輸入halt(立即關機)或shutdown time(延遲time分后關機,給各用戶每隔一段時間發(fā)出還有多長時間將關機的警告)后,計算機將進行一系列的關機工作,最后出現(xiàn)System halt,就是關機結束,可以關閉電源了。非超級用戶則需用exit退出操作環(huán)境,再進入超級用戶環(huán)境,方可進行關機工作。
---- 3.命令操作注意事項
---- 在Linux中有一些與DOS不完全相同的地方,見下表:
DOS Linux
命令行字母 不區(qū)分大小寫 區(qū)分大小寫
提示符 #、$
路徑分隔符 \ /
通配符 *、? *、?、[]
---- 在Linux系統(tǒng)中,超級用戶的系統(tǒng)提示符是#,一般情況下普通用戶的系統(tǒng)提示符是$,普通用戶的系統(tǒng)提示符也同DOS一樣可以進行更改。通配符中*與?的含義是一樣的,[]是僅包括括號內的符號,連續(xù)的符號可用“-”連接首尾的符號代替,如[12345678]可以用[1-8]代替,[abcdefijk]可用[a-fi-j]表示。
---- 4.文件類型
---- 與DOS、Windows不同的是,在Linux系統(tǒng)中,目錄和設備都被視為文件,共有四種文件類型,它們是:⑴普通文件,即我們通常所說的文件,在長列目錄方式時行首前用一符號“-”表示。⑵目錄文件,即我們通常所說的目錄,在長列目錄方式時行用首前用一字母“d”表示。⑶字符設備文件,如顯示器、打印機、終端等,在長列目錄方式時行首前用一字母 “c”表示。⑷塊設備文件,如硬盤、軟盤、光盤在長列目錄方式時行首前用一字母“b”表示。
---- 在Linux中用長格式列目錄命令ls -l時,如下例:
---- 文件類型
-rwxrw-r-- 5 user group 1089
Nov 18 1998 filename
存取權 用戶 組名
字節(jié)數(shù) 最后修改時間 文件名
---- 大家對DOS下的8.3格式的文件名都一定很熟悉了,由于它的表達能力有限,所以在Windows95之后加入了長文件名支持,Linux繼承了UNIX的優(yōu)點,也可以用長長的一串字符作文件名。但是在Linux中文件類型可不像在DOS下那樣容易從文件的擴展名上了解到,在DOS下的可執(zhí)行文件的擴展名為com或exe,而在Linux中只能通過文件屬性得知,采用命令ls –F可區(qū)分目錄和文件,在目錄后有“/”符號,可執(zhí)行文件后有“*”符號,用ls –aF可見所有的文件和目錄列出,包括隱藏的文件和目錄,隱藏文件的文件名以點號“.”開頭。
---- 5.讀取權限
---- 在Linux中,文件的主人即所有者,其他使用者分別稱為同組者、其他人,為保證各用戶文件的安全,Linux同UNIX一樣通過限制某些用戶對文件的隨意存取。共有三個級別的存取權:讀權r、寫權w、執(zhí)行權x。在存取權中共有九個字符的位置其順序是:所有者、同組人、其他人。在上例中分別表示:主人對文件擁有讀寫權和執(zhí)行權,同組人對文件擁有讀寫權、其他人對文件只擁有讀權。
---- 6.獲取在線幫助命令
---- 在Linux中有一條專門用于取得在線幫助的命令man ,其使用方式為# man command。man有一套它自己的命令,通常由單個鍵組成,按空格鍵和F鍵將翻到下一頁,按B鍵翻到上一頁,按Q鍵退出man工具,回到命令行。掌握了以上的基礎知識,結合熟知的DOS命令進行比較,對于學習Linux的基本命令就可以很快地運用自如,為進一步深入學習Linux打下深厚的基礎.。
---- 二、文件管理和目錄操作
---- 與DOS、Windows一樣,在Linux中也有許多關于文件管理和目錄操作方面的命令,對二者的主要命令列表如下:
---- 1.文件管理
功能 DOS Linux 注意事項
顯示文件內容 type、more cat 、more type、cat
是全部顯示,more是分頁顯示
打印文件 print lpr
拷貝文件 copy cp
移動文件及改名 move mv
刪除文件 del, erase rm
---- 2.目錄操作
功能 DOS Linux 注意事項
列目錄及文件 dir/選項 ls –選項
在Linux中cd/直接返回登錄時的目錄而不是根目錄,
顯示工作目錄 cd pwd
變更工作目錄 cd\目錄 cd/目錄
建立目錄 md,mkdir mkdir
刪除目錄 rd,rmdir rmdir
目錄更名 move mv
拷貝目錄 xcopy copy
---- 在二者中,命令的格式都是一樣的,只是選項、參數(shù)不相同而已,也可以進行組合操作,具體運用時可使用幫助命令,只不過Linux的命令的功能更為強大,據記載DOS中的不少命令都是借鑒UNIX而來的,而Linux正是居于UNIX發(fā)展起來的,這也是二者有著幾乎相同的命令和格式的原因之一。
---- 三、軟、硬盤及光驅的使用
---- 1.軟、硬盤及光驅的使用
---- 在Linux中對其他硬盤邏輯分區(qū)、軟盤,光盤的使用與我們通常在DOS與Windows中的使用方法是不一樣的,不能直接訪問,因為在Linux中它們都被視為文件,因此在訪問使用前必須使用裝載命令mount將它們裝載到系統(tǒng)的/mnt目錄中來,使用結束,必須進行卸載。命令格式如下:
mount –t 文件系統(tǒng)類型 設備名 裝載目錄
文件類型常用的有:
msdos dos分區(qū)文件
ext2 Linux的文件系統(tǒng)
swap Linux swap分區(qū)或swap文件
iso9660 安裝CD-ROM的文件系統(tǒng)
vfat 支持長文件名的dos分區(qū)
hpfs OS/2分區(qū)文件系統(tǒng)
---- 設備名是指要裝載的設備的名稱,如軟盤、硬盤、光盤等,軟盤一般為/dev/fd0 fd1,硬盤一般為/dev/hda hdb ,硬盤邏輯分區(qū)一般為期hda1 hda2…等等,光盤一般為/dev/hdc。在裝載前一般要在/dev/mnt目錄下建立一個空的目錄,如軟盤為floppy,硬盤分區(qū)為其盤符如c、d等等,光盤為cd-rom,使用命令:
mount –t msdos /dev/fd0 /mnt/floppy
裝載一個mddos格式的軟盤
mount –t ext2 /dev/fd0 /mnt/floppy
裝載一個Linux格式的軟盤
mount –t vfat /dev/hda1 /mnt/c
裝載Windows98格式的硬盤分區(qū)
mount –t iso9660 /dev/hdc /mnt/cd-rom
裝載一個光盤
---- 裝載完成之后便可對該目錄進行操作,在使用新的軟盤及光盤前必須退出該目錄,使用卸載命令進行卸載,方可使用新的軟盤及光盤,否則系統(tǒng)不會承認該軟盤的,光盤在卸載前是不能用光驅面板前的彈出鍵退出的。
---- 2.格式化命令mkfs
---- 格式化軟盤時不需事先安裝空盤,只需將軟盤放入軟驅中,使用如下命令,便可格式化一張在Linux中使用的軟盤:
#mkfs –t ext2 /dev/fd0 1440
---- 在熟悉以上基本命令之后,就可以進行其他命令的進一步學習,例如:文件編輯軟件vi,存取權限的修改,檢查修復文件系統(tǒng),增減用戶及修改密碼,安裝其他Linux文件,及一些Linux的實用工具軟件,建立x-Windows圖形界面,利用Linux上網等等,來增加對Linux的感性認識。
基本linux命令有哪些呢?
1、ls命令
就是 list 的縮寫,通過 ls 命令不僅可以查看 linux 文件夾包含的文件,而且可以查看文件權限(包括目錄、文件夾、文件權限)查看目錄信息等等。
常用參數(shù)搭配:
ls -a 列出目錄所有文件,包含以.開始的隱藏文件
ls -A 列出除.及..的其它文件
ls -r 反序排列
ls -t 以文件修改時間排序
ls -S 以文件大小排序
ls -h 以易讀大小顯示
ls -l 除了文件名之外,還將文件的權限、所有者、文件大小等信息詳細列出來
實例:
(1) 按易讀方式按時間反序排序,并顯示文件詳細信息
ls -lhrt
(2) 按大小反序顯示文件詳細信息
ls -lrS
(3)列出當前目錄中所有以"t"開頭的目錄的詳細內容
ls -l t*
(4) 列出文件絕對路徑(不包含隱藏文件)
ls | sed "s:^:`pwd`/:"
(5) 列出文件絕對路徑(包含隱藏文件)
find $pwd -maxdepth 1 | xargs ls -ld
2、cd 命令
cd(changeDirectory) 命令語法:
cd [目錄名]
說明:切換當前目錄至 dirName。
實例:
(1)進入要目錄
cd /
(2)進入 "home" 目錄
cd ~
(3)進入上一次工作路徑
cd -
(4)把上個命令的參數(shù)作為cd參數(shù)使用。
cd !$
3、pwd 命令
pwd 命令用于查看當前工作目錄路徑。
實例:
(1)查看當前路徑
pwd
(2)查看軟鏈接的實際路徑
pwd -P
4、mkdir 命令
mkdir 命令用于創(chuàng)建文件夾。
可用選項:
-m: 對新建目錄設置存取權限,也可以用 chmod 命令設置;
-p: 可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項后,系統(tǒng)將自動建立好那些尚不在的目錄,即一次可以建立多個目錄。
實例:
(1)當前工作目錄下創(chuàng)建名為 t的文件夾
mkdir t
(2)在 tmp 目錄下創(chuàng)建路徑為 test/t1/t 的目錄,若不存在,則創(chuàng)建:
mkdir -p /tmp/test/t1/t
5、rm 命令
刪除一個目錄中的一個或多個文件或目錄,如果沒有使用 -r 選項,則 rm 不會刪除目錄。如果使用 rm 來刪除文件,通常仍可以將該文件恢復原狀。
rm [選項] 文件…
實例:
(1)刪除任何 .log 文件,刪除前逐一詢問確認:
rm -i *.log
(2)刪除 test 子目錄及子目錄中所有檔案刪除,并且不用一一確認:
rm -rf test
(3)刪除以 -f 開頭的文件
rm -- -f*
6、rmdir 命令
從一個目錄中刪除一個或多個子目錄項,刪除某目錄時也必須具有對其父目錄的寫權限。
注意:不能刪除非空目錄
實例:
(1)當 parent 子目錄被刪除后使它也成為空目錄的話,則順便一并刪除:
rmdir -p parent/child/child11
7、mv 命令
移動文件或修改文件名,根據第二參數(shù)類型(如目錄,則移動文件;如為文件則重命令該文件)。
當?shù)诙€參數(shù)為目錄時,第一個參數(shù)可以是多個以空格分隔的文件或目錄,然后移動第一個參數(shù)指定的多個文件到第二個參數(shù)指定的目錄中。
實例:
(1)將文件 test.log 重命名為 test1.txt
mv test.log test1.txt
(2)將文件 log1.txt,log2.txt,log3.txt 移動到根的 test3 目錄中
mv llog1.txt log2.txt log3.txt /test3
(3)將文件 file1 改名為 file2,如果 file2 已經存在,則詢問是否覆蓋
mv -i log1.txt log2.txt
(4)移動當前文件夾下的所有文件到上一級目錄
mv * ../
8、cp 命令
將源文件復制至目標文件,或將多個源文件復制至目標目錄。
注意:命令行復制,如果目標文件已經存在會提示是否覆蓋,而在 shell 腳本中,如果不加 -i 參數(shù),則不會提示,而是直接覆蓋!
-i 提示
-r 復制目錄及目錄內所有項目
-a 復制的文件與原文件時間一樣
實例:
(1)復制 a.txt 到 test 目錄下,保持原文件時間,如果原文件存在提示是否覆蓋。
cp -ai a.txt test
(2)為 a.txt 建議一個鏈接(快捷方式)
cp -s a.txt link_a.txt
9、cat 命令
cat 主要有三大功能:
1.一次顯示整個文件:
cat filename
2.從鍵盤創(chuàng)建一個文件:
cat filename
只能創(chuàng)建新文件,不能編輯已有文件。
3.將幾個文件合并為一個文件:
cat file1 file2 file
-b 對非空輸出行號
-n 輸出所有行號
實例:
(1)把 log2012.log 的文件內容加上行號后輸入 log2013.log 這個文件里
cat -n log2012.log log2013.log
(2)把 log2012.log 和 log2013.log 的文件內容加上行號(空白行不加)之后將內容附加到 log.log 里
cat -b log2012.log log2013.log log.log
(3)使用 here doc 生成新文件
cat log.txt EOF
Hello
World
PWD=$(pwd)
EOF
ls -l log.txt
cat log.txt
Hello
World
PWD=/opt/soft/test
(4)反向列示
tac log.txt
PWD=/opt/soft/test
World
Hello
10、more 命令
功能類似于 cat, more 會以一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示。
命令參數(shù):
+n 從笫 n 行開始顯示
-n 定義屏幕大小為n行
+/pattern 在每個檔案顯示前搜尋該字串(pattern),然后從該字串前兩行之后開始顯示
-c 從頂部清屏,然后顯示
-d 提示“Press space to continue,’q’ to quit(按空格鍵繼續(xù),按q鍵退出)”,禁用響鈴功能
-l 忽略Ctrl+l(換頁)字符
-p 通過清除窗口而不是滾屏來對文件進行換頁,與-c選項相似
-s 把連續(xù)的多個空行顯示為一行
-u 把文件內容中的下畫線去掉
常用操作命令:
Enter 向下 n 行,需要定義。默認為 1 行
Ctrl+F 向下滾動一屏
空格鍵 向下滾動一屏
Ctrl+B 返回上一屏
= 輸出當前行的行號
:f 輸出文件名和當前行的行號
V 調用vi編輯器
!命令 調用Shell,并執(zhí)行命令
q 退出more
實例:
(1)顯示文件中從第3行起的內容
more +3 text.txt
(2)在所列出文件目錄詳細信息,借助管道使每次顯示 5 行
ls -l | more -5
按空格顯示下 5 行。
11、less 命令
less 與 more 類似,但使用 less 可以隨意瀏覽文件,而 more 僅能向前移動,卻不能向后移動,而且 less 在查看之前不會加載整個文件。
常用命令參數(shù):
-i 忽略搜索時的大小寫
-N 顯示每行的行號
-o 文件名 將less 輸出的內容在指定文件中保存起來
-s 顯示連續(xù)空行為一行
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重復前一個搜索(與 / 或 ? 有關)
N:反向重復前一個搜索(與 / 或 ? 有關)
-x 數(shù)字 將“tab”鍵顯示為規(guī)定的數(shù)字空格
b 向后翻一頁
d 向后翻半頁
h 顯示幫助界面
Q 退出less 命令
u 向前滾動半頁
y 向前滾動一行
空格鍵 滾動一行
回車鍵 滾動一頁
[pagedown]: 向下翻動一頁
[pageup]: 向上翻動一頁
實例:
(1)ps 查看進程信息并通過 less 分頁顯示
ps -aux | less -N
(2)查看多個文件
less 1.log 2.log
可以使用 n 查看下一個,使用 p 查看前一個。
12、head 命令
head 用來顯示檔案的開頭至標準輸出中,默認 head 命令打印其相應文件的開頭 10 行。
常用參數(shù):
-n行數(shù) 顯示的行數(shù)(行數(shù)為復數(shù)表示從最后向前數(shù))
實例:
(1)顯示 1.log 文件中前 20 行
head 1.log -n 20
(2)顯示 1.log 文件前 20 字節(jié)
head -c 20 log2014.log
(3)顯示 t.log最后 10 行
head -n -10 t.log
13、tail 命令
用于顯示指定文件末尾內容,不指定文件時,作為輸入信息進行處理。常用查看日志文件。
常用參數(shù):
-f 循環(huán)讀?。ǔS糜诓榭催f增的日志文件)
-n行數(shù) 顯示行數(shù)(從后向前)
(1)循環(huán)讀取逐漸增加的文件內容
ping 127.0.0.1 ping.log
后臺運行:可使用 jobs -l 查看,也可使用 fg 將其移到前臺運行。
tail -f ping.log
(查看日志)
14、which 命令
在 linux 要查找某個文件,但不知道放在哪里了,可以使用下面的一些命令來搜索:
which 查看可執(zhí)行文件的位置。
whereis 查看文件的位置。
locate 配合數(shù)據庫查看文件位置。
find 實際搜尋硬盤查詢文件名稱。
which 是在 PATH 就是指定的路徑中,搜索某個系統(tǒng)命令的位置,并返回第一個搜索結果。使用 which 命令,就可以看到某個系統(tǒng)命令是否存在,以及執(zhí)行的到底是哪一個位置的命令。
常用參數(shù):
-n 指定文件名長度,指定的長度必須大于或等于所有文件中最長的文件名。
實例:
(1)查看 ls 命令是否存在,執(zhí)行哪個
which ls
(2)查看 which
which which
(3)查看 cd
which cd(顯示不存在,因為 cd 是內建命令,而 which 查找顯示是 PATH 中的命令)
查看當前 PATH 配置:
echo $PATH
或使用 env 查看所有環(huán)境變量及對應值
15、whereis 命令
whereis 命令只能用于程序名的搜索,而且只搜索二進制文件(參數(shù)-b)、man說明文件(參數(shù)-m)和源代碼文件(參數(shù)-s)。如果省略參數(shù),則返回所有信息。whereis 及 locate 都是基于系統(tǒng)內建的數(shù)據庫進行搜索,因此效率很高,而find則是遍歷硬盤查找文件。
常用參數(shù):
-b 定位可執(zhí)行文件。
-m 定位幫助文件。
-s 定位源代碼文件。
-u 搜索默認路徑下除可執(zhí)行文件、源代碼文件、幫助文件以外的其它文件。
實例:
(1)查找 locate 程序相關文件
whereis locate
(2)查找 locate 的源碼文件
whereis -s locate
(3)查找 lcoate 的幫助文件
whereis -m locate
Command
Injection,即命令注入攻擊,是指由于嵌入式應用程序或者web應用程序對用戶提交的數(shù)據過濾不嚴格,導致黑客可以通過構造特殊命令字符串的方式,將數(shù)據提交至應用程序中,并利用該方式執(zhí)行外部程序或系統(tǒng)命令實施攻擊,非法獲取數(shù)據或者網絡資源等。
在命令注入的漏洞中,最為常見的是PHP的命令注入。PHP命令注入攻擊存在的主要原因是web應用程序員在應用PHP語言中一些具有命令執(zhí)行功能的函數(shù)時,對用戶提交的數(shù)據內容沒有進行嚴格的過濾就帶入函數(shù)中執(zhí)行而造成的。例如,當黑客提交的數(shù)據內容為向網站目錄寫入PHP文件時,就可以通過該命令注入攻擊漏洞寫入一個PHP后門文件,進而實施進一步的滲透攻擊。
原理:Web應用在調用這些函數(shù)執(zhí)行系統(tǒng)命令的時候,在沒有做好過濾用戶輸入的情況下,如果用戶將自己的輸入作為系統(tǒng)命令的參數(shù)拼接到命令行中,就會造成命令注入的漏洞。
命令注入攻擊是如何形成的?
嵌入式應用程序或者web應用程序有時需要調用一些系統(tǒng)命令的函數(shù),如Linux
C中的system(),exec(),shell-exec()等等,當用戶能夠控制這些函數(shù)中的參數(shù)時,就可以將惡意參系統(tǒng)命令拼接到正常命令中,從而造成命令注入攻擊設備系統(tǒng)。
命令注入的形成需要如下三個條件:
1、使用了內部調用shell的函數(shù):system(),exec()等。
2、將外界傳入的參數(shù)沒有足夠的過濾,直接傳遞給內部調用shell的函數(shù)。
3、參數(shù)中shell的元字符沒有被轉義。
危害:繼承嵌入式應用程序或者web應用程序的權限去執(zhí)行系統(tǒng)命令讀寫執(zhí)行文件,導致系統(tǒng)有可能會被惡意攻擊或者泄露系統(tǒng)用戶信息。