[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 安全技術 > 系統 > 正文
UNIX系列系統入侵教程 之二 UNIX系統和常用命令簡介
本文出自: 中國紅客聯盟 http://www.cnhonker.com (2001-05-31 19:00:00)

大家都在催我寫教程,但實在是要寫的太多太繁瑣了. 

命令介紹更不沒有什技術可言,又不是幾句話就可以說清楚的.所以一拖再拖. 

不好意思,讓大家久等了.:) 



OK,首先我們來看看UNIX的解釋 

Unix 

Unix操作系統 

  1968年,Ken Thompson(科恩﹒湯普生)、Dennis Ritchie(丹尼斯﹒瑞奇)和AT&T(貝 爾實驗室)的人在進行關MULTICS項目的研究工作時,他們完成了第一個命令解釋器 (SHELL)和一些簡單的文件處理工具。他們用GE系統為PDP-7進行交叉編譯,寫好了 匯編器(Assembler)……這時這個系統就算的上是最初的Unix。當然了,當時他們並不是 這認為的。到了1969年!第一個Unix誕生,當時Unix支持的硬件均是DEC公司的PDP-7, 軟件是ken Thompson自己開發的。最初的Unix跟現代的Unix在框體上相似,使用I-節點, 而且有特殊的文件類型來支持目錄和設備。所以也有人說Unix是裁剪了的MULTICS……而 隨著Ken Thompson開發的同時,Dennis Ritchie、Brain Kernighan等人也創建了一種新的編 程語言那就是現在的C語言。Ken等人也就隨著C的發展在73年用C全部重新寫了一 遍Unix核心,包括Shell。這無疑是增加了系統的穩定性能,也使編程和調試變得容易得多 了,隨之,Unix替代了PDP-11上的DEC公司的操作系統,而Ken隨將Unix的代碼公布 了。這對Unix的以發展起了很大的推動性。77年,Interactive Systems公司開始向最終用 戶出售Unix ,這使得Unix成為了商業產品……一直到今天完美的Unix。 

  Unix能流行起來絕對不是偶然的,這跟Unix它本身的特點之突出是分不開的。值得慶 幸的是老早的Unix和現在的Unix都有著它可炫耀的(可移植性)特點,那些就是:1、啟 動異步進程的能力;2、一致的文件、設備和進程間I/O;3、層次化的文件系統;4、用其它 Shell來替代默認Shell的能力。Ken Thompson博士本人曾獲諾貝爾獎。而在黑客領域中, Unix是很受歡迎的,因為網絡基本上是以Unix為基礎的,至少大站是如此。再者就是Unix 價格值得慶幸。不過存在的問題是Unix在撥號Modem配置方面很麻煩。 



同時我們也說說Linux 



Linux 

Linux操作系統 

  Linux屬PC機上的Unix。它是90年代初期由芬蘭的Linus Torvalds最先開發的,開發之作者用了GPL(公共版權協議,一種允許任何人以任何方式復制與散發的程序源代碼的形式)的形式進行發布的。Linux繼承了Unix操作系統的穩定、安全和可靠等特點,同時Linux在運行速度上大大超過了WinNT,Linux還在數據庫商業核心領域中發揮了巨大的作用。再加上GPL發行的優越性使Linux目前成了最受用戶喜愛的操作系統之一。 



因此我們在這裡統一把unix和linux一起介紹. 它們是很相似的,它們的大多數命令都是一樣的。 

下面我們統稱為UNIX。 



UNIX系統的特點有: 

  分級樹形文件結構、文件、目錄表和外部設備作為文件統一管理、提供功能完備的命令程序語言"Shell語言"、提供了各種程序設計語言和大量的程序設計子系統、系統核心和外部程序大部分採用C語言編寫、採用進程映像對換技術、系統效率高。 

   

UNIX是多用戶的操作系統,要使用系統之前必須輸入用戶名和密碼,經系統驗証無誤方能使用。 

通常UNIX系統的用戶有兩種: 

1.root ---根用戶 

  這是超級用戶帳號,可以用這個帳號對系統進行所有操作!獲得對系統的根訪問權限,也是黑客們拼命追求的東西. 

2.普通用戶 

  給普通用戶使用,具體權限由root分配.一般的進攻步驟是,先獲得普通用戶權限再利用系統的漏洞進一步奪取根權限,即最終成為root.這裡普通用戶佔了很重要的位置.當然也有很多系統漏洞可以不用普通用戶權限也能獲得系統的根訪問權限.比如比較常用的:Sunos 的rpc.cmsd, Redhat的rpc.statd,IRIX的telnetd等等,都是很好利用的遠程溢出.存在這種遠程溢出漏洞的機器,攻擊者可以在遠程直接獲得系統的根權限. 



所以,在UNIX中,密碼文件是很重要的.許多UNIX系統的加密口令都是保存在/etc/passwd文件中,而這個文件是需要對普通用戶是可讀的。這樣,只要有一個帳號就可以得到該文件,然使用一些口令測試方法或者軟件就可以猜測用戶口令。目前,UNIX系統大多將加密口令設置到只有超級用戶可以讀的/etc/shadow文件中,可以增加獲得加密口令的難度。 但我們依然從/etc/passwd得到機器上的用戶列表. 



常見的UNIX系統 

AIX 

BSD 

FreeBSD 

IRIX      

HP-UX  

SunOS(Solaris) 

LINUX系列 

等等 

更多關UNIX系統的資料只有你自己去找相關的書籍來看了.下面轉入正題. 

通常,一般簡單的入侵,我們只要懂得下面的命令就可以很順利的在目標機器上操作了.:) 



UNIX命令基礎 



1. 輸出入轉向 

在UNIX中,每一個程序均有三個特殊的文件描述, 標準輸入( standard input )、標準輸出 ( standard output )、標準錯誤輸出( standarderror )。 

這三個平常是接受終端的輸入,而由終端顯示出去。 

但是 UNIX 提供使用者可以使用一般的檔案或 管道(pipe)來取代這些標準輸出入設備。 

在sh 裡頭,使用者可以利用">"和"<"來進行輸出入轉向的工作。 



a.輸出轉向: 

command > file 

你可以將一個指令的輸出結果轉向到一個檔案,讓此檔案儲存這個命令的輸出結果。 

但是請注意,如果文件已經存在在系統中,則文件將會被蓋過。也就是原先文件的內容將會消失。 

command >& file 

與 > 相同,但是這個格式表示連標準錯誤輸出一起轉向。 

在 UNIX 中,標準錯誤輸出在程序的習慣是用來顯示錯誤的發生,因此如果 沒有被轉向時,標準錯誤輸出的結果將會被轉向到進程 ,而標準錯誤輸出的結果仍將顯示在終端上。 

command >> file 

此格示代表將標準輸出的結果添加到文件中。如果文件已存在在系統中,則標準輸出的結果將會加到 文件 的末端,如果 文件 原先並不存在,則 文件 將會被開啟而將標準錯誤輸出的結果存至 文件 中。 

command >>& file 

同上,不過此格式代表連標準錯誤輸出一起添加到文件之中。 

   

b.輸入轉向: 

command < file 

一般程序須要自終端機輸入資料,而你可以將程式所要輸入的資料統一編入檔案中,利用轉向一並輸入。 

set ignoreeeof 

由轉向輸出會有將現有檔案覆蓋的危險,csh 與 tcsh 提供使用者用這個方式來避免。 

當你執行 set ignoreeeof 之後,如有輸出轉向到已存在之檔案時,它會發出一個檔案已存在的訊息。 

而在處理添加轉向上,如果已經 set ignoreeeof ,則當要添加到一個不存在的檔案,將會出現一個錯誤信息。 

然而如果我們當真是要轉向蓋過一個已存在的檔案,或者是要添加一個不存在的檔案時,又要如何呢? 

我們只要在 ">" ">&" ">>" ">>&" 後面加上驚嘆號"!",成為 ">!" , ... 就可以了。 



2. 管道(Pipe) 

如同前面說的轉向,管道也是在標準輸出入和標準示誤裝置間作取代動作,如一來可以將某一個程式的輸出連到另一個程式的輸入中。其語法如下: 

command1  command2 [  command3 ....] 

command1 & command2 [ & command3 ....] <--- 連標準錯誤輸出一起用管道 



3. 前景與背景(前台和台) 

在 sh 下面,一個新產生的進程可以經由命令後面的符號';'和'&'來分 別前景和背景。 

如以下語法 

command 

這表示產生一個前景的進程,你要等到它結束才能再下另一個指令。 

command & 

這樣表示產生一個前景的進程,它會給你一個類似以下的訊息: 

[1] 21304 

然後就出現下一個提示號,以供你給下一個指令。 

然後在這個前景的 進程結束的時候再給你一個如下面的訊息,告訴你它把這個進程執行完畢了。 

[1] Done command command1 ; command2 ; command3 

這樣表示你要求系統連續執行 command1 , command2 , command3 三個指令, 

其中 command2 要等待 command1 , command3 要等待 command2 ,而你要等 待 command3 執行完畢才能下指令。 

command1 & command2 & command3 & 這樣表示你要求系統連續執行 command1 , command2 , command3 三個指令, 

而這三個指令都放在背景執行,彼此之間不需等待。 

fg 與 bg 

也許你會問,一個已經執行的進程可不可以由前景換背景,或由背景換景呢? 可以的。 

一個在前景執行的進程,你可以按 Ctl-Z 將進程暫停, 系統會給你一個訊息: 

Suspended 

然後出現提示號。此時你可以使用 fg 將其恢復前景執行,或按 bg 將其改為背景執行。 

而如果有一個前景的進程, 你也可以用 fg 指令將其呼叫到前景。 

首先你需用 jobs 指令來觀查目前有多少在背景下的進程,然後根據所顯示出來的 job id 來決定將那一個進程放到前景。 

如使用 % fg %3 # 將第三個 job 放到前景。 



UNIX常用命令介紹 



下面主要講解UNIX下基本命令的使用,由時間和篇幅的原因,無法寫出所有UNIX命令。 

你在使用這裡沒有列出的命令時,可以使用“--help”參數查詢該命令所附的幫助. 

比如: ls -help將顯示ls命令的詳細信息. 

同時,你也可以利用man來查詢更詳細的使用說明。 

直接敲入man將顯示所有命令的信息. 

如果你只想看一個命令的信息就用如下格式 

man <命令名> 

比如在UNIX系統中敲入man ls將顯示ls的詳細信息. 

按q鍵退出man界面. 



如下命令介紹按字母順序排列: 



命令:at 

介紹:at, batch, atq, atrm:安排,檢查,刪除隊列中的工作。 

at [-V] [-q 隊列] [-f 文件名] [-mldbv] 時間 

at -c 作業 [作業...] 

atq [-V] [-q 隊列] [-v] 

atrm [-V] 作業 [作業...] 

batch [-V] [-q 隊列] [-f 文件名] [-mv] [時間] 

at 在設定的時間執行作業。 

atq 列出用戶排在隊列中的作業,如果是超級用戶,則列出隊列中的所有工作。 

atrm 刪除隊列中的作業。 

batch 用低優先級運行作業,只要系統的loadavg(系統平均負載)<1.5(或者在atrun中設定的值)它就開始執行作業。 

超級用戶可以在任何情況下使用at系列的命令。 

一般用戶使用at系列命令的權利由文件 /etc/at.allow,/etc/at.deny控制。 

如果/etc/at.allow存在,則只有列在這個文件中的用戶才能使用at系列的命令。 

如果/etc/at.allow文件不存在,則檢查文件/etc/at.deny這個文件。 

只要不列在這個文件中的用戶都可以使用at系列的命令。 

缺省的配置是/etc/at.deny為一個空文件,這表明所有的用戶都可以使用at系列的命令。 

范例: 

at -f work 4pm + 3 days 在三天下午4點執行文件work中的作業。 

at -f work 10am Jul 31  在七月31日上午10點執行文件work中的作業。 



命令:bash 

介紹:bash - GNU Bourne-Again SHell 自由軟件基金會(Free Software Foundation Inc)擁有bash版權。 

bash是Linux下的許多命令解釋器中的一個,同sh兼容,並且包含了ksh和csh中一些有用的特性。 

遵從IEEE Posix Shell and Tools specification (IEEE Working Group 1003.2)。 



命令:cat 

介紹:cat - 連接文件並打印到標準輸出。 

cat是CATenate的縮寫,常常用來顯示文件,類似DOS下的TYPE命令。 

范例: 

[root@cnhonker.com /]# cat -b -E .lessrc 顯示文件.lessrc的內容 

1 back-line $$ 

3 forw-scroll$ 

4 back-scroll $ 

5 goto-line$ 

6 goto-end$ 

[root@cnhonker.com /]# cat myfile1 myfile2 >tmp 

將文件myfile1,myfile2 連結起來輸出到文件tmp 



命令:cd 

介紹:cd - 改變當前目錄。 

cd 目錄名 

如果不加目錄名,則回到用戶的根目錄,此外用戶必須擁有讀該目錄的權限。 

進入另外一個用戶的目錄只要 cd ~用戶名即可。 

范例: 

cnhonker:/tmp> cd id1 

進入id1目錄 

cnhonker:/tmp/id1>cd ~lion 

進入用戶lion的目錄 

cnhonker:~lion> 

   

命令:chgrp 

介紹:chgrp - 改變文件的組。 

組 要改變到的組可以是組號對應的數字;也可以是/etc/group文件中的組名。 

文件名:空格分開的要改變組所有權的文件列表,支持通配符。 如果用戶不是該文件的屬主或超級用戶,則不能改變該文件的組。 

范例 

[root@cnhonker.com /]# chgrp -R book /opt/local/book/*.* 

改變/opt/local/book/及其子目錄下的所有文件的組為book。 



命令:chmod 

介紹:chmod -改變文件保護,文件保護控制用戶對文件的訪問權, 

有三個安全級別:所有者級別,組訪問級別,其他用戶訪問級別, 

在這三個級別中,又有三種權限:讀(r),寫(w),執行(x)。 

(用戶可以 ls -lg來觀看某一文件的所屬的group) 

對文件來說讀權限意味著可以看文件的內容,寫文件權可以修改或刪除文件,執行權限則可以執行它 

(類似DOS 下的EXE,COM,BAT文件)。 

對目錄來說,讀權限意味著可以查看目錄下的內容,寫權限意味著能在目錄下建立新文件,並可以從目錄中刪除文件,執行權限意味著可以從一個目錄轉變到另一個目錄。 

保護權限 : 格式為[ugoa...][[+-=][rwxXstugo...]...][,...] “ugoa”控制哪些用戶對該文件的權限將被改變: 

(u)文件的所有者, 

(g)與文件所有者同組的用戶 

(o)其他組的用戶 

(a)所有用戶,操作符 “+”使得用戶選擇的權限被追加到每個目標文件。操作符 “-”使得這些權限被撤銷。 “=”使得目標文件只具有這些權限。 “rwxXstugo”選擇新的屬性。 

(r)讀權限 

(w)寫權限 

(x)執行權(或對目錄的訪問權) 

(X)只有目標文件對某些用戶是可執行的或該目標文件是目錄時才追加x屬性 

(s)同時設定用戶或組ID 

(t)保存程序的文本到交換設備上 

(u)目標文件屬主 

(g)目標文件屬主所在的組 

(o)其他用戶。 

如果用數字來表示屬性,則 

(0)沒有權限, 

(1)執行權, 

(2)讀權, 

(4)寫權, 

然將其相加,所以數字屬性的格式應為3個從0到7的八進制數其順序是(u)(g)(o)。 

文件名:空格分開的要改變權限的文件列表,支持通配符。 

范例: 

cnhonker~>chmod a+x destfile 使所有用戶對文件destfile有讀寫執行權。 

cnhonker~>chmod 644 destfile 使所有用戶可以讀文件destfile只有屬主才能 改變。 



命令:chown 

介紹:chown - 改變文件的屬主和組。 

用戶: 可以是用戶名或用戶id。 

組: 可以是組名或組的id。 

文件名 : 以空格分開的要改變權限的文件列表,支持通配符。 

范例: 

cnhonker~>chown tlc:book destfile 將文件destfile的屬主改成tlc組改成book。 



命令:chsh 

介紹:chsh 改變用戶登錄的shell。 

chsh [-s 登錄的shell] [用戶名] 

普通用戶可以改變自己的登錄shell,超級用戶可以改變其他用戶的登錄shell,所有的shell 必須是在/etc/shells文件中列出的sahell ,但是超級用戶不受這個限制。 

如果用戶的shell是一個受限制的shell則用戶不能改變其登錄shell。 

如果不加-s參數則chsh輸出用戶的當前登錄shell並提示用戶輸入新shell的路徑。 

改變shell時都需要輸入用戶的密碼。 

范例: 

[root@cnhonker.com /]# chsh 

Password: ***** 

Changing the login shell for tlc Enter the new value, or press return for the default Login Shell 

[/bin/csh]: /bin/tcsh 

[root@cnhonker.com /]# 



命令:clear 

介紹:clear - 清除屏幕(類似DOS的cls) 

范例: 

cnhonker~>clear 

清除屏幕,提示符被移動到左上角。 



命令:cp 

介紹:cp - 拷貝文件。 

cp [options] 源文件 目標文件 

cp [options] 源文件... 目標目錄 

-f, --force : 刪除已存在的目標文件。 

-i, --interactive : 在刪除已存在的目標文件時給出提示。 

-R, --recursive 整目錄拷貝。 

--help 在標準輸出上輸出幫助信息並退出。 

--version 在標準輸出上輸出版本信息並退出。 

范例: 

[root@cnhonker.com /]# cp sourcefile destfile 

拷貝文件sourcefile到文件destfile。 

[root@cnhonker.com /]# cp * /tmp 

拷貝當前目錄下所有文件到/tmp目錄。 



命令:crontab 

介紹:crontab - 操作每個用戶的守護程序和該執行的時間表。 

crontab file [-u user] - 用指定的文件替代目前的crontab。 

crontab - [-u user] - 用標準輸入替代目前的crontab。 

crontab -l [user] - 列出用戶目前的crontab。 

crontab -e [user] - 編輯用戶目前的crontab。 

crontab -d [user] - 刪除用戶目前的crontab。 

crontab -c dir - 指定crontab的目錄。 

crontab文件的格式:M H D m d cmd 

M : 分鐘(0-59) 

H : 小時(0-23) 

D : 天(1-31) 

m : 月(1-12) 

d : 一星期內的天(0-6,0為星期天) 

cmd: 要運行的程序,程序被送入sh執行,這個shell只有USER,HOME,SHELL這三個環境變量。 

下面是一個例子文件: 

# MIN HOUR DAY MONTH DAYOFWEEK COMMAND 

# 每天早上6點 

10 6 * * * date 

# 每兩個小時 

0 */2 * * * date 

# 晚上11點到早上8點之間每兩個小時,早上部點 

0 23-7/2,8 * * * date 

# 每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點 

0 11 4 * mon-wed date 

# 1月份日早上4點 

0 4 1 jan * date 

范例: 

[root@cnhonker.com /]# crontab -l 

列出用戶目前的crontab。 

# MIN HOUR DAY MONTH DAYOFWEEK COMMAND 

10 6 * * * date 

0 */2 * * * date 

0 23-7/2,8 * * * date 

(通常,在放門時,我們可以利用這個文件使機器在特定的時間運行我們的門程序.:) 



命令:date 

介紹:date - 打印或設置系統日期和時間。 

date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]] 

+FORMAT :控制如何顯示日期 

指令: 

% : %號 

n : 新行 

t : TAB 

時間域: 

%H 小時 (00..23) 

%I 小時 (01..12) 

%k 小時 ( 0..23) 

%l 小時 ( 1..12) 

%M 分鐘 (00..59) 

%p AM 或 PM 

%r 12小時 (hh:mm:ss [AP]M) 

%s 從1970-01-01 00:00:00 UTC 開始的時間 

%S 秒 (00..61) 

%T 24小時 (hh:mm:ss) 

%X 時間表示 (%H:%M:%S) 

%Z 時區(如EDT)如沒有指定時區則不顯示 

日期域: 

%a 縮寫形式的星期名 (Sun..Sat) 

%A 星期名(Sunday..Saturday) 

%b 縮寫形式的月名 (Jan..Dec) 

%B 月名 (January..December) 

%c 日期和時間 (Sat Nov 0:02:33 EST 1989) 

%d 每個月的第幾天 (01..31) 

%D 日期 (mm/dd/yy) 

%h 等同 %b 

%j 一年的第幾天 (001..366) 

%m 月份 (01..12) 

%U 一年中的第幾個星期,星期天為星期的第一天 (00..53) 

%w 每個星期的第幾天(0..6) 0為星期天 

%W 一年中的第幾個星期,星期一為星期的第一天 (00..53 (00..53) 

%x 日期 (mm/dd/yy) 

%y 年份的兩個數字 (00..99) 

%Y 年份 (1970...) 

[MMDDhhmm[[CC]YY][.ss] 

MM 月份 

DD 日期 

hh 小時 

mm 分鐘 

CC 年份的前兩位 (可選項) 

YY 年份的兩位 (可選項) 

ss 秒 (可選項) 

只有超級用戶才有權限設置系統時間(啟動時在CMOS中讀出)。 

-d datestr, --date dates : 顯示datestr中指定的日期和時間。 

-s datestr, --set datestr : 設定datestr中指定的日期和時間。 

-u, --universal : 顯示或設定格林威治時間(缺省為本地時間)。 

--help : 在標準輸出上輸出幫助信息並退出。 

--version : 在標準輸出上輸出版本信息並退出。 

范例: 

印兩天前的時間: 

[root@cnhonker.com /]# date --date '2 days ago' Fri Aug 22 20:20:08 CDT 1997 

打印月份和日期: 

[root@cnhonker.com /]# date '+%B %d' August 24 



命令:echo 

介紹:echo 是用來顯示一字串在終端機上。 

echo -n 則是當顯示完之後不會有跳行的動作。 



命令:exit 

介紹:exit 用來退出上次的登陸. 



命令:file 

介紹:file - 探測文件類型。 

范例: 

cnhonker:/tmp> file * 

destfile: ASCII text 

elm.rc.OLD: English text 

portnum: empty 

rc.inet1.OLD: Bourne shell script text 



命令:find 

介紹:find - 用來在大量目錄中搜尋特定文件的強有力的工具。 

find [路徑...] [匹配表達式] 

范例: 

cnhonker:/> find ./ -name "passwd" -print 

./usr/bin/passwd 

./home/ftp/etc/passwd 

./etc/passwd 

可以找出當前目錄下所有文件名為passwd的文件.包括子目錄下的. 

這個命令的功能是非常強大的. 

更詳細的內容請看幫助. 



命令:finger 

介紹:finger - 查詢本機或其他機器上的用戶信息, 

用法: finger 用戶名(本機) 或finger 用戶名@ip。 

在大多機器上我們可以用 

finger @ip 

得到目標主機當前登陸的用戶. 

finger 0@ip 

得到目標主機的詳細用戶信息. 

這個命令用來給你獲得第一個帳號是很容易的. 



命令:ftp 

介紹:ftp hostname 

具體參數情況請看聯盟主頁裡的ftp使用.或者我以前的教程. 



命令:telnet 

介紹:ftp hostname [port] 

具體參數情況請看聯盟主頁裡的telnet使用.或者我以前的教程. 



命令:traceroute 

介紹:traceroute targethost 

此命令必須由root以 /usr/sbin/traceroute 節點名方式運行此命令將顯示到達遠端機器所經過的路由 



命令:grep 

介紹:grep, egrep, fgrep - 在文件中搜尋匹配的行並輸出。 

范例: 

在文件services中查找含有ftp的行。 

cnhonker:/etc> grep ftp services 

ftp 21/tcp 

tftp 69/udp 

sftp 115/tcp 



命令:gzip 

介紹:gzip, gunzip, zcat - 壓縮或展開文件。 

范例: 

[root@cnhonker.com /]# gzip -v sourcefile 

sourcefile: 15.2% -- replaced with sourcefile.gz 

   

命令:head 

介紹:head - 顯示文件的前幾行。 

范例: 輸出文件.lessrc的第一行。 

[root@cnhonker.com /]# head -n 1 .lessrc 

forw-line 



命令:kill 

介紹:kill - 中止一個進程 

kill [ -s 信號  -p ] [ -a ] 進程號 ... 

kill -l [ 信號 ] 

kill向指定的進程發出特定的信號,如果沒有指定信號則送出TERM信號,TERM信號將殺死沒有捕捉到這個信號的進程。 

對某些進程可能要使用KILL (9)信號強制殺死。 

例如: kill -9 11721。將強制殺死進程11721。 

大多數SHELL內建kill命令 

范例: 殺掉進程11721 

[root@cnhonker.com /]# ps 

PID TTY STAT TIME COMMAND 

11668 p1 S 0:00 -tcsh 

11721 p1 T 0:00 cat 

11737 p1 R 0:00 ps 

[root@cnhonker.com /]# kill 11721 

[1] Terminated cat 



命令:last 

介紹:last - 顯示過去多少個用戶或終端登錄到本機器。 

last [-數目] [-f 文件名] [-t tty] [-h 節點名] [-i IP地址] [-l] [-y] [用戶名...] 

范例: 顯示過去3次用戶fangh登錄的情況: 

[root@cnhonker.com /]# last -3 fangh 

fangh ttyp1 csun01.ihep.ac.c Tue Aug 26 18:46 still logged in 

fangh ttyp2 csun01.ihep.ac.c Mon Aug 25 22:32 - 23:14 (00:41) 

fangh ttyp2 csun01.ihep.ac.c Mon Aug 25 19:58 - 21:59 (02:01) 



命令:less 

介紹:less - 相對more,用來按頁顯示文件。 

范例:顯示test文件 

[root@cnhonker.com /]# less test 



   

命令:ln 

介紹:ln - 在文件間建立連接 

ln [參數] 源文件 [目標文件] ln [參數] 源文件... directory 

另外對鏈接文件做改變屬性的動作是沒有意義的,因為只有它們鏈接到的文件的屬性才是文件的真正屬性。 

范例: 

將文件sourcefile連接到文件test 

[root@cnhonker.com /]# ln -s sourcefile test 

[root@cnhonker.com /]# ls -la 

test lrwxrwxrwx 1 fangh users 10 Aug 26 20:36 test -> sourcefile 




命令:ls 

介紹:ls, dir, vdir - 列出目錄下的文件 (類似DOS下的DIR命令)。 

范例:列出當前目錄下的所有文件 

[root@cnhonker.com /]# ls -la 

total 6 

drwxr-x--- 2 fangh users 1026 20:52 ./ 

drwxr-xr-x 19 root root 1026 21:09 ../ 

-rw-r--r-- 1 fangh users 15 Aug 21 21:57 .bash_history 

-rw-r--r-- 1 fangh users 30 20:41 .less 

-rw-r--r-- 1 fangh users 115 19:58 .lessrc 

-rw-r--r-- 1 fangh users 72 Aug 24 18:43 sourcefile 

lrwxrwxrwx 1 fangh users 10 Aug 26 20:36 test -> sourcefile 



命令:mail,elm 

介紹:可經由此程序將信件 mail 給他人。 

使用方式: mail [username] 

mail -f mailboxfile 如有信件,則直接鍵入 mail 可以讀取你的 mail 

例子: 

mail -s "shadow" root@cnhonker.com < /etc/shadow 

elm 提供較 mail 更為方便的介面,而且可做線上的 alias . 

你可以進入 elm 使用上下左右鍵來選讀取的信件,並可按 h 取得線上的 help 文件。 

使用方式: 

elm [usernmae] elm -f mailboxfile 
















命令:man 

介紹:man - 顯示具有一定格式的在線手冊。 

man 對新手和老手來說都是非常有用的一個工具,用來快速查詢命令和程序的使用方法和參數。 

編程人員也可以用來查詢C函數的用法。對'rn(1)' 或 'ctime(3)'這樣的輸出,其中括弧中的數字是指 Unix 手冊中該文件所在的章節。當你打 man 3 ctime 時, 表示是要查 閱在第 3 節中的 ctime 的內容。 

下面是常見的Unix手冊的分類: 

1 用戶命令 

2 系統調用 

3 庫函數 

4 設備和設備驅動程序 

5 文件格式 

6 遊戲 

7 有用的雜類,如宏命令包 

8 系統維護和管理命令 

范例: 

查詢ls的用法 

cnhonker~>man ls 




命令:mtools 

介紹:mtools - 用來在UNIX下訪問DOS下磁盤的工具包。 

工具介紹 

mcd - 進入DOS子目錄。 

mcopy - 拷貝DOS文件。 

mdel - 刪除DOS文件。 

mdeltree - 刪除DOS目錄。 

mdir - 查看DOS目錄。 

mformat - 格式化DOS磁盤 

mkmanifest - 創建一個恢復UNIX格式的文件名的SHELL 

mlabel - 給DOS磁盤加卷標 

mmd - 創建DOS目錄。 

mmove - 移動DOS下的文件。 

mmount - mount DOS磁盤。 

mtype - 顯示DOS下的文件。 

mrd - 刪除DOS下的目錄。 

mren - 將DOS下的文件改名。 



命令:mkdir 

介紹:mkdir - 建立目錄(同DOS下的md)。 



命令:more 

介紹:more - 在終端上按頁觀看文件的過濾器。 

more的功能沒有less那強大。 

而且less還提供了對more的模擬,不過一般用戶可能更習慣使用同DOS環境下相似的more。 

范例: 

顯示文件/etc/group 並搜尋字符串bbs 

[root@cnhonker.com /]# more +/bbs /etc/group 

...skipping 

users::100:games 

nogroup::-2: 

bbs:x:99:bbs,bbsroot,bbsuser 



命令:mv 

介紹:mv - 將文件改名。 

mv [參數] 源文件 目標文件 

mv [參數] 源文件列表(支持通配符) 目標目錄 

范例:sourcefile -> destfile 

[root@cnhonker.com /]# mv -v sourcefile destfile 



命令:nslookup 

介紹:nslookup- 查詢節點名和IP地址的對應關系,用法: nslookup [節點名IP地址] 



命令:passwd 

介紹:passwd - 設置用戶的密碼。 

passwd [-f-s] [用戶名] 

passwd [-g] [-rR] 組名 

passwd [-x max] [-n min] [-w warn] [-i inact] 用戶名 

passwd {-l-u-d-S} 用戶名 

用戶可以用passwd這個命令更改自己的登錄密碼,一般用戶只能更改他自己的密碼,超級用戶可以更改其他所有用戶的密碼,超級用戶和組的管理者可以更改組的密碼,還可以用這個命令來更改用戶的其他信息,如用戶的全名,用戶的登錄shell,用戶的密碼失效的時間間隔等等。   

范例: 

更改密碼 

[root@cnhonker.com /]# passwd 

Changing password for fangh 

Old password:oldpass --密碼並不顯示出來 Enter 

the new password (minimum of 5, maximum of 8 characters) 

Please use a combination of upper and lower case letters and numbers. 

New password: 

newpass Re-enter new password: 

newpass Password changed. 







命令:ping 

介紹:ping - 此命令用來查詢遠端的一台機器是否能夠到達, 並將顯示所需時間,如果您要退出請按 control-C 中斷。 

命令格式:ping 主機名或者 ping IP地址。 






命令:ps 

介紹:ps - 查看進程狀態。 

下面解釋一下各欄的意義: 

FLAGS : 長格式的F域。 

UID : 用戶的ID。 

PID : 進程的ID。 

PPID : 父進程的ID。 

PRI : 進程優先級。 

NI : 標準UNIX的優先級。 

SIZE : 虛擬內存的大小。 

RSS : 駐留空間的大小。 

WCHAN : 進程等待的內核事件。 

STAT : 進程狀態: 

代碼如下。 

 R : 正在運行。 

 S : 睡眠。 

 D : 不可打斷的睡眠。 

 T : 停止或跟蹤。 

 Z : 僵屍進程。 

 W : 進程沒有駐留頁。 

 N : 進程有一負nice值。 

TTY : 進程的控制台。 

PAGEIN : 主內存頁失敗的數目(頁失敗造成頁從磁盤或CACHE中讀取)。 

TRS : 文本駐留大小。 

SHARE : 共享內存。 

SWAP : 交換設備上的K字節數。 

范例: 

顯示當前進程: 

[root@cnhonker.com /]# ps -c 

PID TTY STAT TIME COMMAND 

8724 p4 S 0:00 tcsh 

8876 p6 R 0:00 ps 



命令:pwd 

介紹:pwd - 顯示正在工作或當前目錄名。 

范例: 

列出當前工作目錄 

[root@cnhonker.com /]# pwd 

/home/lion 



命令:reset 

介紹:reset - 將終端復位。 

在使用終端的過程中,有時會發現屏幕的字符 “花”掉了,這時使用reset就可以恢復, 

例如在運行完電路分析軟件PSPICE,就會發現屏幕字符錯亂,使用reset就恢復正常。 

reset 調用tput函數,向終端發出復位信號。 

如果屏幕被Ctrl+S鎖住了,可以用Ctrl+Q 來解除鎖定。 

范例: 

將終端復位: 

[root@cnhonker.com /]# reset 





命令:rlogin ,rsh 

介紹:rlogin 的意義是 remote login , 

也就是經由網路到另外一部機器 login 。 

rlogin 的格式是: 

rlogin host [ -l username ] 選項 -l username 

是當你在遠方的機器上的 username 和 local host 不同的時,必須輸入的選項,否則 rlogin 將會假設你在那邊的 username 與 local host 相同,然後在第一次 login 時必然會發生錯誤。 

rsh 是在遠方的機器上執行某些指令,而把結果傳回 local host 。 

rsh 的格式 如下: rsh host [ -l username ] [ command ] 

如同 rlogin 的參數 -l username , rsh 的 -l username 也是指定 remote host 的 username 。 

而 command 則是要在 remote host 上執行的指令。 

如果沒有 指定 command ,則 rsh 會去執行 rlogin ,如同直接執行 rlogin 。 

不過 rsh 在執行的時候並不會像一般的 login 程序一樣還會問你 password , 

而是如果你沒有設定 trust table , 則 remote host 將不會接受你的 request 。 

rsh 須要在每個可能會做為 remote host 的機器上設定一個檔案,稱為 .rhosts。 

這個檔案每一行分為兩個部份, 

第一個是允許 login 的 hostname , 

第二個部份 則是允許 login 的 username 。 

例如,在 www.cnhonker.com上 

你的 username 為 lion , 而你的 home 下面的 .rhosts 

有以下的一行: www1.cnhonker.com lion1 

則在 www1.cnhonker.com 機器上的用戶 lion1 

就可以用以下的方法來執行rsh : % rsh www.cnhonker.com -l lion1 cat mbox 

將 lion1 在 www.cnhonker.com 上的 mbox 檔案內容顯示在本地的 www1.cnhonker.com 上。 

而如果 .rhosts 有這樣的一行,則 www1.cnhonker.com 上的用戶 lion1 將可以不用輸入密碼而直接經由 rsh 或 rlogin 登陸到 www.cnhonker.com 來。 

注意:.rhosts 是一個設定可以信任的人登陸的表格,因此如果設定不當將會讓不法之徒有可以乘機侵入系統的機會。 

如果你閱讀 man 5 rhosts ,將會 發現你可以在第一欄用 + 來取代任何 hostname ,第二欄用 + 來取代任何 username 。 

如一般 user 喜歡偷懶利用 " + username " 來代替列一長串 hostname , 但是這樣將會使得即使有一台 PC 上跑 UNIX 的 user 有與你相同的用戶名, 也可以得到你的允許而侵入你的系統。這樣容易造成系統安全上的危險。 

同樣,很多人都願意在黑過的機器上添加"+ + "到用戶的.rhosts文件裡.以便留下門. 

但是,這樣是很容易被發現的. 



命令:rm 

介紹:rm - 刪除文件或目錄。 

注意,在LINUX下如果產生類似 “-f”這種文件名的文件,刪除是先跟 “--”選項。這表明面所跟的 “-f”不是選項而是文件名 

例如“rm -- -file”是刪除文件“-file”, 

在刪除文件名中包含特殊字符的文件時,可以用“\+特殊字符”,或用"" 將文件名括起來, 

例如要刪除文件 “this is a test”可以用下列命令: rm this\ is\ a\ test 或者 rm "this is a test" 

另外要特別注意,使用rm -rf * 這個命令,如果用戶是超級用戶,並且在root下使用此命令,那系統的所有文件將被刪除。 

而在UNIX下恢復文件幾乎是一件不可能的事情。 

因而要謹慎對待這個命令。 

另外建議用戶將rm定義為“rm -i”,並加入到用戶的登錄文件中。 

范例:刪除文件destfile 

[root@cnhonker.com /]# rm -v destfile 



命令:rmdir 

介紹:rmdir - 刪除空的目錄。 



命令:su 

介紹:su - 改變用戶的ID或成為超級用戶。 



命令:tail 

介紹:tail - 顯示文件的最一部分 

tail缺省顯示文件名列表中的每個文件的最十行,如果沒有文件名或文件名為 “-” 則其從標準輸入中讀取文件, 

如果有多個文件則其會在文件前面加上 “==> 文件名 <==” 以便區分。 

范例: 

顯示文件/etc/DIR_COLORS的最三行: 

[root@cnhonker.com /]# tail -v -n 3 /etc/DIR_COLORS 


   

命令:tar 

介紹:tar - GNU 版的文件打包備份的工具。 


范例: 

將當前目錄下所有.txt文件打包並壓縮到歸檔文件bak.tar.gz 

[root@cnhonker.com /]# tar czvf bak.tar.gz ./*.txt 

將目錄./sec打包到歸檔文件sec.tar.gz 

[root@cnhonker.com /]# tar czvf sec.tar.gz ./sec 

   

命令:tcsh 

介紹:tcsh - 一個帶有文件名自動補充和行編輯功能的C shell。 

tcsh是名的伯克利UNIX的C SHELL的增強版本,它既可以作為一個交互式的登錄 SHELL又可以作為腳本文件的處理器。 

tcsh在作為登錄shell啟動時,首先讀取系統配置文件/etc/csh.cshrc和 /etc/csh.login. 

接著到用戶的根目錄下去讀取~/.tcshrc,如果沒有 ~/.tcshrc則去讀取~/.cshrc, 

接著讀取 ~/.history,~/.login最是 ~/.cshdirs. 

非登錄shell啟動時只讀取/etc/csh.cshrc和~/.tcshrc。 

命令行編輯器: 使用方向鍵來編輯,上下為在歷史記錄中選擇命令,左右鍵為在命令行上前移動進行編輯。 

命令補充和列表: 在用戶鍵入命令時,經常不能記住命令或目錄的全名,這時候tcsh可以幫助用戶將剩余部分補全, 

例如用戶鍵入 “/usr/lost”但是忘記面的部分,這時候用戶只需要鍵入TAB 鍵,tcsh就會自動將剩余的部分補全-- “/usr/lost+found/”,當用戶給出的部分有多個匹配的情況下例如 “/usr/l”則TAB將無法補全,這時候用戶只須鍵入 “CTRL+D”則tcsh 將替用戶列出所有匹配的情況:“lib/ local@ lost+found/”,用戶就可以自己選擇了。 


   

命令:top 

介紹:top - 顯示系統的最高進程 

top 這個命令可以即時顯示當前系統最佔CPU時間的進程,它同時提供一個交互的界面讓用戶可以觀察系統進程情況, 

它可以按照CPU使用情況,佔內存大小,運行的時間來對進程排序,這是系統管理的一項必不可少的工具。 


   

命令:touch 

介紹:touch - 改變文件的時間參數。 

touch將文件的訪問時間,修改時間設置為系統的當前時間,如果該文件不存在則建立一個空的新文件。 

范例:將當前目錄下的文件的時間參數修改為當前時間: 

[root@cnhonker.com /]# touch * 




命令:umount,mount 

介紹:mount - 裝載一個文件系統。 

umount - 卸下一個文件系統。 

列出系統目前mount的文件系統 : 

[root@cnhonker.com /]# mount 

/dev/hda1 on / type ext2 (rw) 

none on /proc type proc (rw) 

/dev/hda3 on /home type ext2 (rw) 

/dev/hda2 on /usr/local type ext2 (rw) 

加載光驅: 

[root@cnhonker.com /]# mount /dev/hdb /mnt 





命令:useradd ,adduser ,userdel 

介紹: useradd ,adduser 添加用戶 

userdel 刪除用戶 

這些命令只能被root使用. 

比如 

useradd -D lion 按默認值添加一個用戶lion 

passwd lion --你要使你剛添加的用戶生效,必須要用passwd 給這個用戶制定密碼. 

你可以查看幫助信息獲得更多資料. 


   

命令:uudecode,uuencode 

介紹:uuencode - 將一個二進制文件編碼為一個文本文件。 

uudecode - 將uuencode產生的文件復原。 

在Internet尚未十分發達的時候,很多用戶只能使用E-mail,要交換軟件的話是一件十分麻煩的事情, 

因為不能用E-mail直接傳送二進制文件,是uuencode和uudecode就成為十分有用的兩個工具。 

uuencode 產生的文本文件以begin 644 為開始標志,以end為結束標志在這中間的就是編碼過的文件。 

編碼的文件將比源文件大35%左右。 

uuencode產生的文件將輸出到標準輸出,如要存成文件,請使用管道功能將其重定向到一個磁盤文件中。 

uuencode 源文件名 

編碼時使用的文件名 

uudecode 要解碼的文件名 

   

命令:vi 

介紹:vi - 功能強大的UNIX編輯器。 

Vi 簡介 

Vi 是 UNIX 世界裡最通用的全屏編輯器,所有的UNIX機器都提供本編輯器Linux裡提供的是vi的加強版-vim,但是是同vi完全兼容的。 

Vi的原意是 “visual”即可視編輯器,用戶鍵入的會立即被顯示出來。 

而且其強大的編輯功能可以同任何一個最新的編輯器相媲美,而且學會vi可以讓用戶在任何一台UNIX機器無論是SUN,HP,AIX,SGI,還是 Linux或FreeBSD上都可以得心應手地編輯文件。 

只要在命令行上鍵入 vi 就可以進入vi的編輯環境。 

Vi有兩種狀態,輸入狀態以及指令狀態。 

用戶在輸入狀態下可以輸入文字資料 

指令狀態是用來執行打開文件,存檔,離開vi等操作命令, 

執行vi首先進入指令狀態,此時輸入的任何字符都作為指令來處理。 

輸入 “vi 文件名”則vi自動裝入文件或開始一個新文件,vi屏幕的左方會出現波浪號 “~”,代表本行為空行。 

要如何進入輸入狀態呢? 

以下為相應的指令: 

追加 (append) 

  a 從光標所在位置面開始追加文字,光標的文字隨追加的文字向移動。 

  A 從光標所在列最面的地方開始追加文字。 

插入 (insert) 

  i 從光標所在位置前面開始插入文字,光標的文字隨追加的文字向移動。 

  I 從光標所在列的第一個非空白字符前面開始插入文字。 

開始 (open) 

  o 在光標所在列下新增一列並進入輸入狀態。 

  O 在光標所在列上方新增一列並進入輸入狀態。 

  x 刪除光標標所在字符。 

  dd 刪除光標所在的列。 

  r 修改光標所在字符接下來要修正的字符。 

  R 進入改寫狀態,新增文字會覆蓋原先文字 

  s 刪除光標所在字符,並進入輸入狀態。 

  S 刪除光標所在的列,並進入輸入狀態。 

結束編輯(quit) 

  :q 結束編輯(quit) 如果不想存檔而要放棄編輯過的文件則用 

  :q! 強制離開。 

  :w 存檔(write) 其可加所要存檔的名。 

  :wq 即存檔離開。 

  zz 功能與 

  :wq 相同。 



命令:wc 

介紹: wc - 統計一個文件中的字節數,單詞數,行數。 



命令:w ,who ,who am i 

介紹: w - 查看其他登錄的用戶。 

who - 查看其他登錄的用戶。 

who am i -查看自己的詳細情況 



命令:which 

介紹:which - 顯示命令的全路徑。 

which 程序名 



OK,命令介紹就到這裡了. 

:) 

(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
UNIX系列系統入侵教程 之三 UNIX系統門的安放和日志的擦除 (2001-05-31 20:10:00)
UNIX系列系統入侵教程 之二 UNIX系統和常用命令簡介 (2001-05-31 19:00:00)
UNIX系列系統入侵教程 之一 靈活利用資源 (2001-05-31 18:08:00)
 

★  樊強制作 歡迎分享  ★