linux字典生成
『壹』 linux系統最基本,經常用的命令有哪些呢
Linux必學的60個命令(3)-系統管理
由 zhanjun 在 周四, 2006-04-13 12:41 提交
Linux必學的60個命令:系統管理相關命令
Linux必學的系統管理命令
作者:曹元其 發文時間:2004.10.18
對於Linux系統來說,無論是中央處理器、內存、磁碟驅動器、鍵盤、滑鼠,還是用戶等都是文件,Linux系統管理的命令是它正常運行的核心。熟悉了Linux常用的文件處理命令以後,這一講介紹對系統和用戶進行管理的命令。
cat cd
chmod chown
cp cut
名稱:cat
使用許可權:所有使用者
使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName
說明:把檔案串連接後傳到基本輸出(螢幕或加 > fileName 到另一個檔案)
參數:
-n 或 --number 由 1 開始對所有輸出的行數編號
-b 或 --number-nonblank 和 -n 相似,只不過對於空白行不編號
-s 或 --squeeze-blank 當遇到有連續兩行以上的空白行,就代換為一行的空白行
-v 或 --show-nonprinting
範例:
cat -n textfile1 > textfile2 把 textfile1 的檔案內容加上行號後輸入 textfile2 這個檔案里
cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的檔案內容加上行號(空白行不加)之後將內容附加到 textfile3
名稱 : cd
使用許可權 : 所有使用者
使用方式 : cd [dirName]
說明 : 變換工作目錄至 dirName。 其中 dirName 表示法可為絕對路徑或相對路徑。若目錄名稱省略,則變換至使用者的 home directory (也就是剛 login 時所在的目錄)。
另外,"~" 也表示為 home directory 的意思,"." 則是表示目前所在的目錄,".." 則表示目前目錄位置的上一層目錄。
範例 : 跳到 /usr/bin/ :
cd /usr/bin
跳到自己的 home directory :
cd ~
跳到目前目錄的上上兩層 :
cd ../..
指令名稱 : chmod
使用許可權 : 所有使用者
使用方式 : chmod [-cfvR] [--help] [--version] mode file...
說明 : Linux/Unix 的檔案存取許可權分為三級 : 檔案擁有者、群組、其他。利用 chmod 可以藉以控制檔案如何被他人所存取。
把計 :
mode : 許可權設定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬於同一個群體(group)者,o 表示其他以外的人,a 表示這三者皆是。
+ 表示增加許可權、- 表示取消許可權、= 表示唯一設定許可權。
r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示只有當該檔案是個子目錄或者該檔案已經被設定過為可執行。
-c : 若該檔案許可權確實已經更改,才顯示其更改動作
-f : 若該檔案許可權無法被更改也不要顯示錯誤訊息
-v : 顯示許可權變更的詳細資料
-R : 對目前目錄下的所有檔案與子目錄進行相同的許可權變更(即以遞回的方式逐個變更)
--help : 顯示輔助說明
--version : 顯示版本
範例 :將檔案 file1.txt 設為所有人皆可讀取 :
chmod ugo+r file1.txt
將檔案 file1.txt 設為所有人皆可讀取 :
chmod a+r file1.txt
將檔案 file1.txt 與 file2.txt 設為該檔案擁有者,與其所屬同一個群體者可寫入,但其他以外的人則不可寫入 :
chmod ug+w,o-w file1.txt file2.txt
將 ex1.py 設定為只有該檔案擁有者可以執行 :
chmod u+x ex1.py
將目前目錄下的所有檔案與子目錄皆設為任何人可讀取 :
chmod -R a+r *
此外chmod也可以用數字來表示許可權如 chmod 777 file
語法為:chmod abc file
其中a,b,c各為一個數字,分別表示User、Group、及Other的許可權。
r=4,w=2,x=1
若要rwx屬性則4+2+1=7;
若要rw-屬性則4+2=6;
若要r-x屬性則4+1=7。
範例:
chmod a=rwx file
和
chmod 777 file
效果相同
chmod ug=rwx,o=x file
和
chmod 771 file
效果相同
若用chmod 4755 filename可使此程式具有root的許可權
指令名稱 : chown
使用許可權 : root
使用方式 : chmod [-cfhvR] [--help] [--version] user[:group] file...
說明 : Linux/Unix 是多人多工作業系統,所有的檔案皆有擁有者。利用 chown 可以將檔案的擁有者加以改變。一般來說,這個指令只有是由系統管理者(root)所使用,一般使用者沒有許可權可以改變別人的檔案擁有者,也沒有許可權可以自己的檔案擁有者改設為別人。只有系統管理者(root)才有這樣的許可權。
把計 :
user : 新的檔案擁有者的使用者 IDgroup : 新的檔案擁有者的使用者群體(group)-c : 若該檔案擁有者確實已經更改,才顯示其更改動作-f : 若該檔案擁有者無法被更改也不要顯示錯誤訊息-h : 只對於連結(link)進行變更,而非該 link 真正指向的檔案-v : 顯示擁有者變更的詳細資料-R : 對目前目錄下的所有檔案與子目錄進行相同的擁有者變更(即以遞回的方式逐個變更)--help : 顯示輔助說明--version : 顯示版本
範例 :
將檔案 file1.txt 的擁有者設為 users 群體的使用者 jessie :
chown jessie:users file1.txt
將目前目錄下的所有檔案與子目錄的擁有者皆設為 users 群體的使用者 lamport :
chmod -R lamport:users *
名稱:cp
使用許可權:所有使用者
使用方式:
cp [options] source dest
cp [options] source... directory
說明:將一個檔案拷貝至另一檔案,或將數個檔案拷貝至另一目錄。
把計�
-a 盡可能將檔案狀態、許可權等資料都照原狀予以復制。
-r 若 source 中含有目錄名,則將目錄下之檔案亦皆依序拷貝至目的地。
-f 若目的地已經有相同檔名的檔案存在,則在復制前先予以刪除再行復制。
範例:
將檔案 aaa 復制(已存在),並命名為 bbb :
cp aaa bbb
將所有的C語言程式拷貝至 Finished 子目錄中 :
cp *.c Finished
名稱:cut
使用許可權:所有使用者
用法:cut -cnum1-num2 filename
說明:顯示每行從開頭算起 num1 到 num2 的文字。
範例:
shell>> cat example
test2
this is test1
shell>> cut -c0-6 example ## print 開頭算起前 6 個字元
test2
this i
名稱 : find
用法 : find
使用說明 :
將檔案系統內符合 expression 的檔案列出來。你可以指要檔案的名稱、類別、時間、大小、許可權等不同資訊的組合,只有完全相符的才會被列出來。
find 根據下列規則判斷 path 和 expression,在命令列上第一個 - ( ) , ! 之前的部份為 path,之後的是 expression。如果 path 是空字串則使用目前路徑,如果 expression 是空字串則使用 -print 為預設 expression�
expression 中可使用的選項有二三十個之多,在此只介紹最常用的部份。
-mount, -xdev : 只檢查和指定目錄在同一個檔案系統下的檔案,避免列出其它檔案系統中的檔案
-amin n : 在過去 n 分鍾內被讀取過
-anewer file : 比檔案 file 更晚被讀取過的檔案
-atime n : 在過去 n 天過讀取過的檔案
-cmin n : 在過去 n 分鍾內被修改過
-cnewer file :比檔案 file 更新的檔案
-ctime n : 在過去 n 天過修改過的檔案
-empty : 空的檔案-gid n or -group name : gid 是 n 或是 group 名稱是 name
-ipath p, -path p : 路徑名稱符合 p 的檔案,ipath 會忽略大小寫
-name name, -iname name : 檔案名稱符合 name 的檔案。iname 會忽略大小寫
-size n : 檔案大小 是 n 單位,b 代表 512 位元組的區塊,c 表示字元數,k 表示 kilo bytes,w 是二個位元組。-type c : 檔案類型是 c 的檔案。
d: 目錄
c: 字型裝置檔案
b: 區塊裝置檔案
p: 具名貯列
f: 一般檔案
l: 符號連結
s: socket
-pid n : process id 是 n 的檔案
你可以使用 ( ) 將運算式分隔,並使用下列運算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
範例:
將目前目錄及其子目錄下所有延伸檔名是 c 的檔案列出來。
# find . -name "*.c"
將目前目錄其其下子目錄中所有一般檔案列出
# find . -ftype f
將目前目錄及其子目錄下所有最近 20 分鍾內更新過的檔案列出
# find . -ctime -20
名稱:less
使用許可權:所有使用者
使用方式:
less [Option] filename
說明:
less 的作用與 more 十分相似,都可以用來瀏覽文字檔案的內容,不同的是 less 允許使用者往回卷動
以瀏覽已經看過的部份,同時因為 less 並未在一開始就讀入整個檔案,因此在遇上大型檔案的開啟時,會比一般的文書編輯器(如 vi)來的快速。
範例:
指令名稱 : ln
使用許可權 : 所有使用者
使用方式 : ln [options] source dist,其中 option 的格式為 :
[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
[--help] [--version] [--]
說明 : Linux/Unix 檔案系統中,有所謂的連結(link),我們可以將其視為檔案的別名,而連結又可分為兩種 : 硬連結(hard link)與軟連結(symbolic link),硬連結的意思是一個檔案可以有多個名稱,而軟連結的方式則是產生一個特殊的檔案,該檔案的內容是指向另一個檔案的位置。硬連結是存在同一個檔案系統中,而軟連結卻可以跨越不同的檔案系統。
ln source dist 是產生一個連結(dist)到 source,至於使用硬連結或軟鏈結則由參數決定。
不論是硬連結或軟鏈結都不會將原本的檔案復制一份,只會佔用非常少量的磁碟空間。
-f : 鏈結時先將與 dist 同檔名的檔案刪除-d : 允許系統管理者硬鏈結自己的目錄-i : 在刪除與 dist 同檔名的檔案時先進行詢問-n : 在進行軟連結時,將 dist 視為一般的檔案-s : 進行軟鏈結(symbolic link)-v : 在連結之前顯示其檔名-b : 將在鏈結時會被覆寫或刪除的檔案進行備份-S SUFFIX : 將備份的檔案都加上 SUFFIX 的字尾-V METHOD : 指定備份的方式--help : 顯示輔助說明--version : 顯示版本
範例 :
將檔案 yy 產生一個 symbolic link : zz
ln -s yy zz
將檔案 yy 產生一個 hard link : zz
ln yy xx
名稱:locate
使用許可權:所有使用者
使用方式: locate [-q] [-d ] [--database=]
locate [-r ] [--regexp=]
locate [-qv] [-o ] [--output=]
locate [-e ] [-f ] <[-l ] [-c]
<[-U ] [-u]>
locate [-Vh] [--version] [--help]
說明:
locate 讓使用者可以很快速的搜尋檔案系統內是否有指定的檔案。其方法是先建立一個包括系統內所有檔案名稱及路徑的資料庫,之後當尋找時就只需查詢這個資料庫,而不必實際深入檔案系統之中了。
在一般的 distribution 之中,資料庫的建立都被放在 contab 中自動執行。一般使用者在使用時只要用
# locate your_file_name
的型式就可以了。 參數:
-u
-U
建立資料庫,-u 會由根目錄開始,-U 則可以指定開始的位置。
-e
將
排除在尋找的范圍之外。
-l
如果 是 1.則啟動安全模式。在安全模式下,使用者不會看到許可權無法看到的檔案。這會始速度減慢,因為 locate 必須至實際的檔案系統中取得檔案的許可權資料。
-f
將特定的檔案系統排除在外,例如我們沒有到理要把 proc 檔案系統中的檔案放在資料庫中。
-q
安靜模式,不會顯示任何錯誤訊息。
-n
至多顯示 個輸出。
-r
使用正規運算式 做尋找的條件。
-o
指定資料庫存的名稱。
-d
指定資料庫的路徑
-h
顯示輔助訊息
-v
顯示更多的訊息
-V
顯示程式的版本訊息 範例:
locate chdrv : 尋找所有叫 chdrv 的檔案
locate -n 100 a.out : 尋找所有叫 a.out 的檔案,但最多隻顯示 100 個
locate -u : 建立資料庫
名稱 : ls
使用許可權 : 所有使用者
使用方式 : ls [-alrtAFR] [name...]
說明 : 顯示指定工作目錄下之內容(列出目前工作目錄所含之檔案及子目錄)。
-a 顯示所有檔案及目錄 (ls內定將檔案名或目錄名稱開頭為"."的視為隱藏檔,不會列出)
-l 除檔案名稱外,亦將檔案型態、許可權、擁有者、檔案大小等資訊詳細列出
-r 將檔案以相反次序顯示(原定依英文字母次序)
-t 將檔案依建立時間之先後次序列出
-A 同 -a ,但不列出 "." (目前目錄) 及 ".." (父目錄)
-F 在列出的檔案名稱後加一符號;例如可執行檔則加 "*", 目錄則加 "/"
-R 若目錄下有檔案,則以下之檔案亦皆依序列出
範例:
列出目前工作目錄下所有名稱是 s 開頭的檔案,愈新的排愈後面 :
ls -ltr s*
將 /bin 目錄以下所有目錄及檔案詳細資料列出 :
ls -lR /bin
列出目前工作目錄下所有檔案及目錄;目錄於名稱後加 "/", 可執行檔於名稱後加 "*" :
ls -AF
名稱:more
使用許可權:所有使用者
使用方式:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
說明:類似 cat ,不過會以一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示,而且還有搜尋字串的功能(與 vi 相似),使用中的說明文件,請按 h 。
參數:-num 一次顯示的行數
-d 提示使用者,在畫面下方顯示 [Press space to continue, q to quit.] ,如果使用者按錯鍵,則會顯示 [Press h for instructions.] 而不是 嗶 聲
-l 取消遇見特殊字元 ^L(送紙字元)時會暫停的功能
-f 計算行數時,以實際上的行數,而非自動換行過後的行數(有些單行字數太長的會被擴展為兩行或兩行以上)
-p 不以卷動的方式顯示每一頁,而是先清除螢幕後再顯示內容
-c 跟 -p 相似,不同的是先顯示內容再清除其他舊資料
-s 當遇到有連續兩行以上的空白行,就代換為一行的空白行
-u 不顯示下引號 (根據環境變數 TERM 指定的 terminal 而有所不同)
+/ 在每個檔案顯示前搜尋該字串(pattern),然後從該字串之後開始顯示
+num 從第 num 行開始顯示
fileNames 欲顯示內容的檔案,可為復數個數
範例:
more -s testfile 逐頁顯示 testfile 之檔案內容,如有連續兩行以上空白行則以一行空白行顯示。
more +20 testfile 從第 20 行開始顯示 testfile 之檔案內容。
名稱:mv
使用許可權:所有使用者
使用方式:
mv [options] source dest
mv [options] source... directory
說明:將一個檔案移至另一檔案,或將數個檔案移至另一目錄。
參數:-i 若目的地已有同名檔案,則先詢問是否覆蓋舊檔。
範例:
將檔案 aaa 更名為 bbb :
mv aaa bbb
將所有的C語言程式移至 Finished 子目錄中 :
mv -i *.c
名稱:rm
使用許可權:所有使用者
使用方式:rm [options] name...
說明:刪除檔案及目錄。
把計�
-i 刪除前逐一詢問確認。
-f 即使原檔案屬性設為唯讀,亦直接刪除,無需逐一確認。
-r 將目錄及以下之檔案亦逐一刪除。
範例:
刪除所有C語言程式檔;刪除前逐一詢問確認 :
rm -i *.c
將 Finished 子目錄及子目錄中所有檔案刪除 :
rm -r Finished
名稱:rmdir
使用許可權:於目前目錄有適當許可權的所有使用者
使用方式: rmdir [-p] dirName
說明: 刪除空的目錄。
參數: -p 是當子目錄被刪除後使它也成為空目錄的話,則順便一並刪除。
範例:
將工作目錄下,名為 AAA 的子目錄刪除 :
rmdir AAA
在工作目錄下的 BBB 目錄中,刪除名為 Test 的子目錄。若 Test 刪除後,BBB 目錄成為空目錄,則 BBB 亦予刪除。
rmdir -p BBB/Test
名稱:split
使用許可權:所有使用者
使用方式:split [OPTION] [INPUT [PREFIX]]
說明:
將一個檔案分割成數個。而從 INPUT 分割輸出成固定大小的檔案,其檔名依序為 PREFIXaa, PREFIXab...;PREFIX 預設值為 `x。若沒有 INPUT 檔或為 `-,則從標准輸入讀進資料。
匡兜�
-b, --bytes=SIZE
SIZE 值為每一輸出檔案的大小,單位為 byte。
-C, --line-bytes=SIZE
每一輸出檔中,單行的最大 byte 數。
-l, --lines=NUMBER
NUMBER 值為每一輸出檔的列數大小。
-NUMBER
與 -l NUMBER 相同。
--verbose
於每個輸出檔被開啟前,列印出偵錯資訊到標准錯誤輸出。
--help
顯示輔助資訊然後離開。
--version
列出版本資訊然後離開。
SIZE 可加入單位: b 代表 512, k 代表 1K, m 代表 1 Meg。
範例:
Postgressql 大型資料庫備份與回存:
因 Postgres 允許表格大過你系統檔案的最大容量,所以要將表格 mp 到單一的檔案可能會有問題,使用 split進行檔案分割。
% pg_mp dbname | split -b 1m - filename.mp.
重新載入
% createdb dbname
% cat filename.mp.* | pgsql dbname
名稱:touch
使用許可權:所有使用者
使用方式:
touch [-acfm]
[-r reference-file] [--file=reference-file]
[-t MMDDhhmm[[CC]YY][.ss]]
[-d time] [--date=time] [--time={atime,access,use,mtime,modify}]
[--no-create] [--help] [--version]
file1 [file2 ...]
說明:
touch 指令改變檔案的時間記錄。 ls -l 可以顯示檔案的時間記錄。
參數:
a 改變檔案的讀取時間記錄。
m 改變檔案的修改時間記錄。
c 假如目的檔案不存在,不會建立新的檔案。與 --no-create 的效果一樣。
f 不使用,是為了與其他 unix 系統的相容性而保留。
r 使用參考檔的時間記錄,與 --file 的效果一樣。
d 設定時間與日期,可以使用各種不同的格式。
t 設定檔案的時間記錄,格式與 date 指令相同。
--no-create 不會建立新檔案。
--help 列出指令格式。
--version 列出版本訊息。
範例:
最簡單的使用方式,將檔案的時候記錄改為現在的時間。若檔案不存在,系統會建立一個新的檔案。
touch file
touch file1 file2
將 file 的時間記錄改為 5 月 6 日 18 點 3 分,公元兩千年。時間的格式可以參考 date 指令,至少需輸入 MMDDHHmm ,就是月日時與分。
touch -c -t 05061803 file
touch -c -t 050618032000 file
將 file 的時間記錄改變成與 referencefile 一樣。
touch -r referencefile file
將 file 的時間記錄改成 5 月 6 日 18 點 3 分,公元兩千年。時間可以使用 am, pm 或是 24 小時的格式,日期可以使用其他格式如 6 May 2000 。
touch -d "6:03pm" file
touch -d "05/06/2000" file
touch -d "6:03pm 05/06/2000" file
df
1.作用
df命令用來檢查文件系統的磁碟空間佔用情況,使用許可權是所有用戶。
2.格式
df [options]
3.主要參數
-s:對每個Names參數只給出佔用的數據塊總數。
-a:遞歸地顯示指定目錄中各文件及子目錄中各文件佔用的數據塊數。若既不指定-s,也不指定-a,則只顯示Names中的每一個目錄及其中的各子目錄所佔的磁碟塊數。
-k:以1024位元組為單位列出磁碟空間使用情況。
-x:跳過在不同文件系統上的目錄不予統計。
-l:計算所有的文件大小,對硬鏈接文件則計算多次。
-i:顯示inode信息而非塊使用量。
-h:以容易理解的格式印出文件系統大小,例如136KB、254MB、21GB。
-P:使用POSIX輸出格式。
-T:顯示文件系統類型。
4.說明
df命令被廣泛地用來生成文件系統的使用統計數據,它能顯示系統中所有的文件系統的信息,包括總容量、可用的空閑空間、目前的安裝點等。
超級許可權用戶使用df命令時會發現這樣的情況:某個分區的容量超過了100%。這是因為Linux系統為超級用戶保留了10%的空間,由其單獨支配。也就是說,對於超級用戶而言,他所見到的硬碟容量將是110%。這樣的安排對於系統管理而言是有好處的,當硬碟被使用的容量接近100%時系統管理員還可以正常工作。
5.應用實例
Linux支持的文件系統非常多,包括JFS、ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、vfat、MSDOS等。使用df -T命令查看磁碟空間時還可以得到文件系統的信息:
#df -T
文件系統 類型 容量 已用 可用 已用% 掛載點
/dev/hda7 reiserfs 5.2G 1.6G 3.7G 30% /
/dev/hda1 vfat 2.4G 1.6G 827M 66% /windows/C
/dev/hda5 vfat 3.0G 1.7G 1.3G 57% /windows/D
/dev/hda9 vfat 3.0G 2.4G 566M 82% /windows/E
/dev/hda10 NTFS 3.2G 573M 2.6G 18% /windows/F
/dev/hda11 vfat 1.6G 1.5G 23M 99% /windows/G
從上面除了可以看到磁碟空間的容量、使用情況外,分區的文件系統類型、掛載點等信息也一覽無遺。
top
1.作用
top命令用來顯示執行中的程序進程,使用許可權是所有用戶。
2.格式
top [-] [d delay] [q] [c] [S] [s] [i] [n]
3.主要參數
d:指定更新的間隔,以秒計算。
q:沒有任何延遲的更新。如果使用者有超級用戶,則top命令將會以最高的優先序執行。
c:顯示進程完整的路徑與名稱。
S:累積模式,會將己完成或消失的子行程的CPU時間累積起來。
s:安全模式。
i:不顯示任何閑置(Idle)或無用(Zombie)的行程。
n:顯示更新的次數,完成後將會退出top。
4.說明
top命令是Linux系統管理的一個主要命令,通過它可以獲得許多信息。這里我們結合圖1來說明它給出的信息。
圖1 top命令的顯示
在圖1中,第一行表示的項目依次為當前時間、系統啟動時間、當前系統登錄用戶數目、平均負載。第二行顯示的是所有啟動的進程、目前運行的、掛起 (Sleeping)的和無用(Zombie)的進程。第三行顯示的是目前CPU的使用情況,包括系統佔用的比例、用戶使用比例、閑置(Idle)比例。第四行顯示物理內存的使用情況,包括總的可以使用的內存、已用內存、空閑內存、緩沖區佔用的內存。第五行顯示交換分區使用情況,包括總的交換分區、使用的、空閑的和用於高速緩存的大小。第六行顯示的項目最多,下面列出了詳細解釋。
PID(Process ID):進程標示號。
USER:進程所有者的用戶名。
PR:進程的優先順序別。
NI:進程的優先順序別數值。
VIRT:進程佔用的虛擬內存值。
RES:進程佔用的物理內存值。
SHR:進程使用的共享內存值。
S:進程的狀態,其中S表示休眠,R表示正在運行,Z表示僵死狀態,N表示該進程優先值是負數。
%CPU:該進程佔用的CPU使用率。
%MEM:該進程佔用的物理內存和總內存的百分比。
TIME+:該進程啟動後佔用的總的CPU時間。
Command:進程啟動的啟動命令名稱,如果這一行顯示不下,進程會有一個完整的命令行。
top命令使用過程中,還可以使用一些交互的命令來完成其它參數的功能。這些命令是通過快捷鍵啟動的。
<空格>:立刻刷新。
P:根據CPU使用大小進行排序。
T:根據時間、累計時間排序。
q:退出top命令。
m:切換顯示內存信息。
t:切換顯示進程和CPU狀態信息。
c:切換顯示命令名稱和完整命令行。
M:根據使用內存大小進行排序。
W:將當前設置寫入~/.toprc文件中。這是寫top配置文件的推薦方法。
可以看到,top命令是一個功能十分強大的監控系統的工具,對於系統管理員而言尤其重要。但是,它的缺點是會消耗很多系統資源。
5.應用實例
使用top命令可以監視指定用戶,預設情況是監視所有用戶的進程。如果想查看指定用戶的情況,在終端中按「U」鍵,然後輸入用戶名,系統就會切換為指定用戶的進程運行界面,見圖2所示。
圖2 使用top命令監視指定用戶
free
1.作用
free命令用來顯示內存的使用情況,使用許可權是所有用戶。
2.格式
free [-b|-k|-m] [-o] [-s delay] [-t] [-V]
3.主要參數
-b -k -m:分別以位元組(KB、MB)為單位顯示內存使用情況。
-s delay:顯示每隔多少秒數來顯示一次內存使用情況。
-t:顯示內存總和列。
-o:不顯示緩沖區調節列。
4.應用實例
free命令是用來查看內存使用情況的主要命令。和top命令相比,它的優點是使用簡單,並且只佔用很少的系統資源。通過-S參數可以使用free命令不間斷地監視有多少內存在使用,這樣可以把它當作一個方便實時監控器。
#free -b -s5
使用這個命令後終端會連續不斷地報告內存使用情況(以位元組為單位),每5秒更新一次。
quota
1.作用
quota命令用來顯示磁碟使用情況和限制情況,使用許可權超級用戶。
2.格式
quota [-g][-u][-v][-p] 用戶名 組名
3.參數
-g:顯示用戶所在組的磁碟使用限制。
-u:顯示用戶的磁碟使用限制。
-v:顯示沒有分配空間的文件系統的分配情況。
-p:顯示簡化信息。
4.應用實例
在企業應用中磁碟配額非常重要,普通用戶要學會看懂自己的磁碟使用情況。要查詢自己的磁碟配額可以使用下面命令(下例中用戶賬號是caojh):
#quota caojh
Disk quotas for user caojh(uid 502):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda3 58 200000 400000 41 500 1000
以上顯示ID號為502的caojh賬號,文件個數設置為500~1000個,硬碟空間限制設置為200M
『貳』 Python要哪些要點要學習
階段一:Python開發基礎
Python全棧開發與人工智慧之Python開發基礎知識學習內容包括:Python基礎語法、數據類型、字元編碼、文件操作、函數、裝飾器、迭代器、內置方法、常用模塊等。
階段二:Python高級編程和資料庫開發
Python全棧開發與人工智慧之Python高級編程和資料庫開發知識學習內容包括:面向對象開發、Socket網路編程、線程、進程、隊列、IO多路模型、Mysql資料庫開發等。
階段三:前端開發
Python全棧開發與人工智慧之前端開發知識學習內容包括:Html、CSS、javaScript開發、Jquery&bootstrap開發、前端框架VUE開發等。
階段四:WEB框架開發
Python全棧開發與人工智慧之WEB框架開發學習內容包括:Django框架基礎、Django框架進階、BBS+Blog實戰項目開發、緩存和隊列中間件、Flask框架學習、Tornado框架學習、Restful API等。
階段五:爬蟲開發
Python全棧開發與人工智慧之爬蟲開發學習內容包括:爬蟲開發實戰。
階段六:全棧項目實戰
Python全棧開發與人工智慧之全棧項目實戰學習內容包括:企業應用工具學習、CRM客戶關系管理系統開發、路飛學城在線教育平台開發等。
階段七:演算法&設計模式
階段八:數據分析
Python全棧開發與人工智慧之數據分析學習內容包括:金融量化分析。
階段九:機器學習、圖像識別、NLP自然語言處理
Python全棧開發與人工智慧之人工智慧學習內容包括:機器學習、圖形識別、人工智慧玩具開發等。
階段十:Linux系統&百萬級並發架構解決方案
階段十一:高並發語言GO開發
Python全棧開發與人工智慧之高並發語言GO開發學習內容包括:GO語言基礎、數據類型與文件IO操作、函數和面向對象、並發編程等。
『叄』 wifi殺手怎樣用
無線路由的
wpa2
密碼
很難破解
破無線密碼
是一個漫長而復雜的工序,本人親身經歷以來,得出以下結論:
1.破解密碼需要有一個熱鬧的網路。周邊無線越多越近越好.畢竟想攻擊路由器的無線,特別是WPA的,抓手包半天弄不上幾個。但他在下載、上傳時是很快的。
2.破解密碼電腦配置很重要,他需要大量的運算。本人用的又好又順手的是EWSA軟體,破解沒多久就讓電腦發熱。
3.字典很重要。人們大多數以自家電話號碼為無線密碼,如XXXX-XXXXXXX共十位。當你確定所在地區區號後010、07XX,以及所用的開頭189、133、139……經過字典生成器生成,測試詞有10^7個,如果每秒測試1000個,你得等上2.7個小時。
4.搞到他家電話號碼,自己試試吧。我這地區成功率大約20%5.投機取巧,輸入12345678、00000000或許能行EWSA軟體及BEINI奶瓶LINUX破解系統網上有,自己搜吧
『肆』 求linux基本命令
常用系統服務
============
acpi-support 高級電源管理支持
acpid acpi守護程序.這兩個用於電源管理,非常重要
alsa 聲音子系統
alsa-utils
anacron cron的子系統,將系統關閉期間的計劃任務,在下一次系統運行時執行。
apmd acpi的擴展
atd 類似於cron的任務調度系統。建議關閉
binfmt-support 核心支持其他二進制的文件格式。建議開啟
bluez-utiles 藍牙設備支持
bootlogd 啟動日誌。開啟它
cron 任務調度系統,建議開啟
cupsys 列印機子系統。
dbus 消息匯流排系統(message bus system)。非常重要
dns-clean 使用撥號連接時,清除dns信息。
evms 企業卷管理系統(Enterprise Volumn Management system)
fetchmail 郵件用戶代理,用於收取郵件
gdm gnome登錄和桌面管理器。
gdomap
gpm 終端中的滑鼠支持。
halt 別動它。
hdparm 調整硬碟的腳本,配置文件為「/etc/hdparm.conf」。
hibernate 系統休眠
hotkey-setup 筆記本功能鍵支持。支持類型包括: HP, Acer, ASUS, Sony, Dell,和IBM。
hotplug and hotplug-net 即插即用支持,比較復雜,建議不要動它。
hplip HP列印機和圖形子系統
ifrename 網路介面重命名腳本。如果您有十塊網卡,您應該開啟它
inetd在文件「/etc/inetd.conf」中,注釋掉所有你不需要的服務。如果該文件不包含任何服務,那關閉它是很安全的。
klogd 重要。
linux-restricted-moles-common受限模塊支持。「/lib/linux-restricted-moles/」文件夾中的模塊為受限模塊。例如某些驅動程序,如果您沒有使用受限模塊,就不需要開啟它。
lvm 邏輯卷管理系統支持。
makedev 創建設備文件,非常重要。
mdamd 磁碟陣列
mole-init-tools 從/etc/moles載入擴展模塊,建議開啟。
networking 網路支持。按「/etc/network/interfaces」文件預設激活網路,非常重要。
ntpdate 時間同步服務,建議關閉。
pcmcia pcmcia設備支持。
powernowd 移動CPU節能支持
ppp and ppp-dns 撥號連接
readahead 預載入庫文件。
reboot 別動它。
resolvconf 自動配置DNS
rmnologin 清除nologin
rsync rsync守護程序
sendsigs 在重啟和關機期間發送信號
single 激活單用戶模式
ssh ssh守護程序。建議開啟
stop-bootlogd 在2,3,4,5運行級別中停止bootlogd服務
sudo 檢查sudo狀態。重要
sysklogd 系統日誌
udev & udev-mab 用戶空間dev文件系統(userspace devfilesystem)。重要
umountfs 卸載文件系統
urandom 隨機數生成器
usplash 開機畫面支持
vbesave 顯卡BIOS配置工具。保存顯卡的狀態
xorg-common 設置X服務ICE socket。
adjtimex 調整核心時鍾的工具
dirmngr 證書列表管理工具,和gnupg一起工作。
hwtools irqs優化工具
libpam-devperm 系統崩潰之後,用於修理設備文件許可的守護程序。
lm-sensors 板載感測器支持
mdadm-raid 磁碟陳列管理器
screen-cleanup 清除開機屏幕的腳本
xinetd 管理其他守護進程的一個inetd超級守護程序
系統管理
========
一些細節
--------
Linux是大小寫敏感的系統,所有的命令、路徑、參數、變數……都區分大小寫
您可以使用TAB鍵補全您的命令,無論任何時候,多按幾次TAB總會有所幫助
Shell的功能鍵能夠協助您更高效的編輯命令,請熟悉其鍵綁定,盡量使用它
命令由命令名、分隔符、參數、操作對象構成
命令名標識命令的功能,例如cp()、mv(move)、rm(remove)……
有些命令包含一些子命令,您可以認為它的命令名由兩個單詞構成,例如「apt」軟體包管理系統:
apt-get install 安裝一個軟體
apt-get remove 刪除一個軟體
分隔符為空格,多個連續的空格視為一個空格,下面兩個命令相同:
cp a b
cp a b
有一些特殊符號也屬於分隔符,例如管道(「|」)、重定向(「>」、「>>」、「<」)、後台運行(「&」)、序列執行(「&&」、「;」)。使用這些符號時,您不需要再使用空格作為分隔符,例如:
ls -al|less
我們寫為以下形式,只是為了您更容易的閱讀它:
ls -al | less
參數可以精細調節命令的行為,以「-」引導,通常為參數名的首字母。許多軟體都可以使用「-h」參數來閱讀使用說明,例如:
apt-get -h
您也可以使用參數的全名,一般以「--」引導,例如:
apt-get --help
多數命令中,使用「-」引導多個字元,將會被視為多個參數,例如:
apt-get -help
系統會解讀為以下命令
apt-get -h -e -l -p
少數命令的參數,不需要以「-」引導,或者使用「-」引導參數全名,例如:
ps aux
/etc/init.d/gdm start
mplayer -loop xxx
當您需要對多個對象進行操作時,您可以使用空格分隔符將它們隔開:
touch 1 2 3 4 5 6
使用空格分隔的多個對象,視為一個整體,作為命令的一個操作對象:
mv 1 2 3 4 5 6 /home/
這個命令把「1 2 3 4 5 6」作為一個操作對象,移動到另一個操作對象,「/home/」目錄
遞歸表示在子層次中重復相同操作。例如遞歸復制某目錄,不但復制當前目錄及其下的所有文件;而且對當前目錄的子目錄,也進行遞歸復制的操作。
格式約定
--------
使用「[]」表示可選項,實際輸入為方括弧中的內容,例如
ls [-al]
ls是必須的,參數不需要以方括弧包圍起來。
使用「<>」表示必需項,實際輸入為尖括弧中的內容
使用「|」表示「或」,以「|」分隔的項目不能同時使用,例如
tar [-z|j c|x vf] <歸檔文件> [源文件]
參數通常緊跟命令名,除非必要,在命令格式中,我們通常省略它們
系統信息
--------
uptime
聯機信息-時間,顯示如下
11:27pm up 9 days, 7:12, 3 user, load average: 0.07, 0.12,0.14
當前系統時間 系統運行時間 當前在線用戶數 系統負荷 1分鍾前 5分鍾前 15分鍾前
w
聯機信息-已登錄用戶,顯示如下
01:04:10 up 1:34, 2 users, load average: 0.25, 0.16, 0.11
uptime 信息
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
user tty1 192.168.0.1 23:30 1:33 0.14s 0.12s -bash
用戶名 登錄方式 來源地址 登錄時間 發呆時間 資源佔用 當前任務
Tips:w [用戶名稱] : 顯示某一用戶相關信息
who
聯機信息,常用參數
-r 運行級別
whoami
顯示當前用戶名
last
最近用戶登錄信息
-<數字> 使用數字作為參數,控制顯示條目。例如
last -10 顯示10條紀錄
uname
系統信息
-s 內核名稱(默認參數)
-a 全部
-p CPU信息
-n 主機名
-r 內核發行信息(版本號)
-v 內核版本信息
date
顯示、設定系統時間
-u 顯示格林尼洛時間(UTC)
MMDDhhmm[[CC]YY][.ss] 設定時間,需要管理員許可權。例如: date 12292359
MM 月份 DD 天數 hh 小時 mm 分鍾 CC 年份前兩位 YY 年份後兩位 ss 秒鍾
秒鍾、年份為可選,例如: date 122923592006.59
+[%X]設定顯示格式,以下為date默認輸出格式:
date +%Y年\ %m月\ %d日\ %A\ %H:%M:%S\ %Z
格式控制
%n 換行
%t 製表符
小時
%H(00~23) %I(01~12) %k(0~23) %l(1~12) %p(AM|PM)
分、秒
%M分鍾(00~59)
%S秒(00..61)
%T(hh:mm:ss) %r(hh:mm:ss [AM|PM])
%s 從1970年1月1日00:00:00 UTC到目前為止的秒數
%X(%H:%M:%S)
%Z時區
星期
%a(Sun~Sat) %A(Sunday~Saturday) %w : 一周中的第幾天 (0..6)
年份
%Y(0000~9999) %y(00~99)
月份
%m(01~12) %b %h(Jan~Dec) %B(January~December)
日期
%d(01~31) %j(001~366)
%x(本地格式mm/dd/yy) %D(mm/dd/yy) %c
一年中的第幾周
%U(00~53)以Sunday為一周的第一天 %W(00~53)以Monday為一周的第一天
cal
顯示日歷
文件管理
--------
鏈接
為當前文件建立在其它路徑中的訪問方法。例如將系統中其它位置的可執行文件,鏈接到「/usr/local/bin」目錄下,使用命令調用。
ls [路徑]
顯示當前目錄文件列表
--color 不同屬性以不同顏色顯示(默認參數)
-a 全部顯示
-i 顯示inode值
-l 詳細信息
-F 顯示文件類型後綴 目錄/ 鏈接@ 可執行文件* 埠文件= 管道文件| >
-A 顯示隱藏文件
-R 遞歸顯示子目錄文件列表
-S 按文件大小排序
-t 按修改時間排序
-u 按訪問時間排序
-d 只顯示目錄,不遞歸顯示目錄下的文件
cd [目錄路徑] | [特殊路徑]
切換目錄
目錄路徑可以使用絕對路徑或者相對路徑
特殊路徑:
~ $HOME目錄(默認值)
- 上一次目錄
.. 上一級目錄
. 當前目錄
Tips:您可以通過修改「/etc/environment」文件,來定義$CDPATH變數,設定「cd」命令的搜索路徑。
pwd
顯示當前路徑
file <文件名>
顯示文件類型
-i 顯示mime類型
[文件名]
計算文件或目錄空間佔用
-h 人性化顯示。自動以G、M、K為單位顯示佔用空間大小
-l 重復計算硬鏈接文件大小
-L 計算符號鏈接文件大小
-a 顯示當前目錄子目錄中的文件
-c 顯示文件數
less <文件名>
瀏覽文件,使用VI和Emacs兩種風格的鍵綁定。以下為VI風格鍵綁定
Ctrl+f(orward) 向下翻一頁 Ctrl+d(own) 向下翻半頁
Ctrl+b(ackward) 向上翻一頁 Ctrl+u(p) 向上翻半頁
/ 查找 q(uit) 退出
touch <目標文件>
創建一個空文件
cp <源文件><目標目錄|文件>
將源文件復制為目錄文件,或者將源文件復制到目標目錄。多個源文件使用空格分隔
cp <源目錄><目標目錄>
將源目錄復制到目標目錄中,如果復制多個源目錄,需要使用「-R」參數
-a 相當於-dpr參數
-d 保留鏈接
-f 強制復制,覆蓋目標文件
-i 覆蓋時詢問用戶
-p 保留修改時間和訪問許可權
-r -R 遞歸復制(目錄=>目錄)
-l 創建鏈接
-v 顯示過程
rm <目標目錄|文件>
-r -R 遞歸刪除
-f 強制刪除(無需確認,直接刪除。慎用!)
-i 互動式刪除(詢問用戶)
rmdir <目標目錄>
刪除目錄時,建議您使用「rm -r」命令
mv <源文件><目標目錄|文件>
相當於cp後刪除源文件,也可以作為「重命名」使用。
mv <源目錄><目標目錄>
-r -R 遞歸
ln <源文件><鏈接>
-s 符號鏈接
-f 強制鏈接,覆蓋目標文件
-i 覆蓋前詢問用戶
文件操作
--------
nano
一個簡單輕便的文本編輯器,使用Emacs風格的鍵綁定。
split <源文件> [目標文件名前綴]
將源文件按一定規則分割成若干個目標文件。默認文件名前綴為「x」
-<行數> 按行數分割文件
-l <行數> 同上
-b <位元組>按大小分割文件。可以使用b、k、m作單位,不指定單位的情況下,默認單位為b
-C <位元組> 按大小分割文件,並盡量保持每行的完整
示例:
split -C 100k file.split x
cat <文件名>
輸出文件內容。用空格分隔多個文件名,可以將多個文件內容連接到一起輸出。使用重定向合並為一個文件
-n 在輸出中添加行號
-b 在輸出中添加行號,空行不編號
-s 將兩行或以上的空行,合並為一個空行
示例:
cat xaa xab xac > file.split
sort [-o <輸出文件>] [-t<分隔字元>][+<起始欄位> -<結束欄位>] [文件]
對文本內容排序
-m 合並文件
-c 檢查文件是否已按規則排序
-b 忽略行首空格字元
-u 忽略內容重復行
-f 忽略大小寫
-l 忽略非列印字元
-M 作為月份比較
-d 按字典順序排序,按照字母、數字、空格、製表符排序
-r 逆序輸出
more
查看文件內容,我們建議您使用「less」
diff <文件名>
比較文件
cksum [文件名]
計算文件的CRC值。不指定文件名則從標准輸入設備讀入數據,例如:
echo xxx | cksum
md5sum [文件名]
計算文件的md5值。同上
許可權管理
--------
一個文件主要包含下列屬性,「ls -l」
- rwx rwx rwx user group date filename
111 101 101
其中,第一組為歸屬用戶的許可權,第二組為歸屬群組的許可權,第三組為其它用戶群組的許可權。user為文件的歸屬用戶,group為文件的歸屬群組,date為日期信息,filename為文件名。
可以使用3位的二進制數字來描述一組許可權,某一許可權對應的數字為1,則表示具有該種許可權,為0,則不具有該種許可權。
對於文件夾,必須擁有它的可執行許可權,才能夠使用「cd」命令進入該文件夾;擁有可讀許可權,才能夠使用「ls」命令查看該文件夾的文件列表。
root用戶擁有最高許可權。
使用二進制數字來描述一組許可權,雖然非常直觀,但是3組許可權需要用9位數來表示,使用不夠方便。因此我們將三組許可權使用3位8進制數字來表示。它們的對應關系為:
r 100 4
w 010 2
x 001 1
將這三位8進制數字相加的結果,就可以表示該組許可權的具體內容,例如:
7=4+2+1=rwx
5=4+1=rx
755=4+2+1 4+1 4+1=rwx r-x r-x
我們還可以使用「a、u、g、o」表示歸屬關系,使用「=、+、-」表示許可權變化,使用「r、w、x」表示許可權內容,
a 所有用戶 u 歸屬用戶 g 歸屬群組 o 其它用戶
= 具有許可權 + 增加許可權 - 去除許可權
r 可讀許可權 w 可寫許可權 x 可執行許可權
例如:
a+x 給所有用戶增加可執行許可權
go-wx 將歸屬群組和其它用戶的可寫、可執行許可權去掉
u=rwx 歸屬用戶具有可讀、可寫、可執行許可權
chmod <許可權表達式><文件|目錄>
改變文件的許可權。許可權的表達式可以使用三位8進制數字表示,或者使用<augo>+-=<rxw-s>來表示
-R 遞歸
-v 顯示過程
-c 類似「-v」,僅顯示更改部分
--reference=<參考文件或目錄>以指定文件為參考改變許可權
示例:
chmod -R a+x path
chmod -Rv 755 path
chown <歸屬用戶>[:歸屬群組]<文件|目錄>
改變文件的歸屬用戶。可以使用用戶名或者UID
-R 遞歸
-v 顯示過程
-c 類似「-v」,僅顯示更改部分
--reference=<參考文件或目錄>以指定文件為參考改變許可權
示例:
chown user:admin path
chown -R user.admin path
chown user path
chgrp <歸屬群組><文件|目錄>
改變文件的歸屬群組。可以使用群組名或者GID
參數同上
SUID、SGID、Sticky bit
某些情況下,需要以可執行文件歸屬用戶的身份執行該文件,可以為該文件設置SUID。同樣,設置SGID能夠以該文件歸屬群組的身份執行它。
例如:用戶自行設定密碼。
出於安全方面的考慮,「/etc/shadow」只能由root用戶直接修改。
-rw------- root root /etc/shadow
這個時候,可以為程序「/usr/bin/passwd」設置SUID,當普通用戶執行「passwd」命令時,便能夠以該程序歸屬用戶root的身份修改「/etc/shadow」文件。而「passwd」程序自身帶有身份驗證機制,不能通過驗證時拒絕執行,從而保證了安全。
ls -l /usr/bin/passwd
-r-s--x--x root root /usr/bin/passwd
我們發現,歸屬用戶的可執行許可權位使用「s」,表示SUID。同樣,歸屬群組的可執行許可權位使用「s」,表示SGID。
任何用戶或群組都擁有「其它用戶」的許可權,所以不需要以「其它用戶」身份執行文件,其它用戶的可執行許可權位便不會出現「s」。該許可權位可能出現的屬性為「t」,也就是粘著位Stickybit。
ls -ld /tmp
drwxrwxrwt root root /tmp
粘著位表示任何用戶都可能具有寫許可權,但只有該歸屬用戶或root用戶才能夠刪除
SUID、SGID、Sticky bit也可以像許可權一樣,使用一個八位數表示,如下:
4 SUID
2 SGID
1 Sticky bit
通過在「chmod」命令中使用四個八位數的表達式,如「4755」,用第一位表示SUID、SGID、或Stickybit,便能夠為文件設置這些特殊許可權。
示例:
chmod -R 4755 path
lsattr [路徑]
查看文件的特殊屬性
-a 全部顯示
-d 只顯示目錄
-R 遞歸
特殊屬性包括:
a:僅供附加用途
b:不更新最後存取時間
c:壓縮後存放
d:排除在傾倒操作之外
i:不得任意更動文件或目錄
s:保密性刪除文件或目錄
S:即時更新文件或目錄
u:預防以外刪除
chattr<+|-|=><abcdisSu><路徑>
-R 遞歸
-V 顯示過程
『伍』 MD5是如何編譯的
MD5簡介
MD5的全稱是Message-Digest Algorithm 5,在90年代初由MIT的計算機科學實驗室和RSA Data Security Inc發明,經MD2、MD3和MD4發展而來。
Message-Digest泛指位元組串(Message)的Hash變換,就是把一個任意長度的位元組串變換成一定長的大整數。請注意我使用了「位元組串」而不是「字元串」這個詞,是因為這種變換只與位元組的值有關,與字元集或編碼方式無關。
MD5將任意長度的「位元組串」變換成一個128bit的大整數,並且它是一個不可逆的字元串變換演算法,換句話說就是,即使你看到源程序和演算法描述,也無法將一個MD5的值變換回原始的字元串,從數學原理上說,是因為原始的字元串有無窮多個,這有點象不存在反函數的數學函數。
MD5的典型應用是對一段Message(位元組串)產生fingerprint(指紋),以防止被「篡改」。舉個例子,你將一段話寫在一個叫readme.txt文件中,並對這個readme.txt產生一個MD5的值並記錄在案,然後你可以傳播這個文件給別人,別人如果修改了文件中的任何內容,你對這個文件重新計算MD5時就會發現。如果再有一個第三方的認證機構,用MD5還可以防止文件作者的「抵賴」,這就是所謂的數字簽名應用。
MD5還廣泛用於加密和解密技術上,在很多操作系統中,用戶的密碼是以MD5值(或類似的其它演算法)的方式保存的,用戶Login的時候,系統是把用戶輸入的密碼計算成MD5值,然後再去和系統中保存的MD5值進行比較,而系統並不「知道」用戶的密碼是什麼。
一些黑客破獲這種密碼的方法是一種被稱為「跑字典」的方法。有兩種方法得到字典,一種是日常搜集的用做密碼的字元串表,另一種是用排列組合方法生成的,先用MD5程序計算出這些字典項的MD5值,然後再用目標的MD5值在這個字典中檢索。
即使假設密碼的最大長度為8,同時密碼只能是字母和數字,共26+26+10=62個字元,排列組合出的字典的項數則是P(62,1)+P(62,2)….+P(62,8),那也已經是一個很天文的數字了,存儲這個字典就需要TB級的磁碟組,而且這種方法還有一個前提,就是能獲得目標賬戶的密碼MD5值的情況下才可以。
在很多電子商務和社區應用中,管理用戶的Account是一種最常用的基本功能,盡管很多Application Server提供了這些基本組件,但很多應用開發者為了管理的更大的靈活性還是喜歡採用關系資料庫來管理用戶,懶惰的做法是用戶的密碼往往使用明文或簡單的變換後直接保存在資料庫中,因此這些用戶的密碼對軟體開發者或系統管理員來說可以說毫無保密可言,本文的目的是介紹MD5的Java Bean的實現,同時給出用MD5來處理用戶的Account密碼的例子,這種方法使得管理員和程序設計者都無法看到用戶的密碼,盡管他們可以初始化它們。但重要的一點是對於用戶密碼設置習慣的保護。
有興趣的讀者可以從這里取得MD5也就是RFC 1321的文本。 http://www.ietf.org/rfc/rfc1321.txt
實現策略
MD5的演算法在RFC1321中實際上已經提供了C的實現,我們其實馬上就能想到,至少有兩種用Java實現它的方法,第一種是,用Java語言重新寫整個演算法,或者再說簡單點就是把C程序改寫成Java程序。第二種是,用JNI(Java Native Interface)來實現,核心演算法仍然用這個C程序,用Java類給它包個殼。
但我個人認為,JNI應該是Java為了解決某類問題時的沒有辦法的辦法(比如與操作系統或I/O設備密切相關的應用),同時為了提供和其它語言的互操作性的一個手段。使用JNI帶來的最大問題是引入了平台的依賴性,打破了SUN所鼓吹的「一次編寫到處運行」的Java好處。因此,我決定採取第一種方法,一來和大家一起嘗試一下「一次編寫到處運行」的好處,二來檢驗一下Java 2現在對於比較密集的計算的效率問題。
實現過程
限於這篇文章的篇幅,同時也為了更多的讀者能夠真正專注於問題本身,我不想就某一種Java集成開發環境來介紹這個Java Bean的製作過程,介紹一個方法時我發現步驟和命令很清晰,我相信有任何一種Java集成環境三天以上經驗的讀者都會知道如何把這些代碼在集成環境中編譯和運行。用集成環境講述問題往往需要配很多屏幕截圖,這也是我一直對集成環境很頭疼的原因。我使用了一個普通的文本編輯器,同時使用了Sun公司標準的JDK 1.3.0 for Windows NT。
其實把C轉換成Java對於一個有一定C語言基礎的程序員並不困難,這兩個語言的基本語法幾乎完全一致.我大概花了一個小時的時間完成了代碼的轉換工作,我主要作了下面幾件事:
把必須使用的一些#define的宏定義變成Class中的final static,這樣保證在一個進程空間中的多個Instance共享這些數據
刪去了一些無用的#if define,因為我只關心MD5,這個推薦的C實現同時實現了MD2 MD3和 MD4,而且有些#if define還和C不同編譯器有關
將一些計算宏轉換成final static 成員函數。
所有的變數命名與原來C實現中保持一致,在大小寫上作一些符合Java習慣的變化,計算過程中的C函數變成了private方法(成員函數)。
關鍵變數的位長調整
定義了類和方法
需要注意的是,很多早期的C編譯器的int類型是16 bit的,MD5使用了unsigned long int,並認為它是32bit的無符號整數。而在Java中int是32 bit的,long是64 bit的。在MD5的C實現中,使用了大量的位操作。這里需要指出的一點是,盡管Java提供了位操作,由於Java沒有unsigned類型,對於右移位操作多提供了一個無符號右移:>>>,等價於C中的 >> 對於unsigned 數的處理。
因為Java不提供無符號數的運算,兩個大int數相加就會溢出得到一個負數或異常,因此我將一些關鍵變數在Java中改成了long類型(64bit)。我個人認為這比自己去重新定義一組無符號數的類同時重載那些運算符要方便,同時效率高很多並且代碼也易讀,OO(Object Oriented)的濫用反而會導致效率低下。
限於篇幅,這里不再給出原始的C代碼,有興趣對照的讀者朋友可以去看RFC 1321。MD5.java源代碼
測試
在RFC 1321中,給出了Test suite用來檢驗你的實現是否正確:
MD5 ("") =
MD5 ("a") =
MD5 ("abc") =
MD5 ("message digest") =
MD5 ("abcdefghijklmnopqrstuvwxyz") =
……
這些輸出結果的含義是指:空字元串」」的MD5值是,字元串」a」的MD5值是……
編譯並運行我們的程序:
javac –d . MD5.java
java beartool.MD5
為了將來不與別人的同名程序沖突,我在我的程序的第一行使用了package beartool;
因此編譯命令javac –d . MD5.java 命令在我們的工作目錄下自動建立了一個beartool目錄,目錄下放著編譯成功的 MD5.class
我們將得到和Test suite同樣的結果。當然還可以繼續測試你感興趣的其它MD5變換,例如:
java beartool.MD5 1234
將給出1234的MD5值。
可能是我的計算機知識是從Apple II和Z80單板機開始的,我對大寫十六進制代碼有偏好,如果您想使用小寫的Digest String只需要把byteHEX函數中的A、B、C、D、E、F改成a、b、 c、d、e、f就可以了。
MD5據稱是一種比較耗時的計算,我們的Java版MD5一閃就算出來了,沒遇到什麼障礙,而且用肉眼感覺不出來Java版的MD5比C版的慢。
為了測試它的兼容性,我把這個MD5.class文件拷貝到我的另一台Linux+IBM JDK 1.3的機器上,執行後得到同樣結果,確實是「一次編寫到處運行了」。
Java Bean簡述
現在,我們已經完成並簡單測試了這個Java Class,我們文章的標題是做一個Java Bean。
其實普通的Java Bean很簡單,並不是什麼全新的或偉大的概念,就是一個Java的Class,盡管 Sun規定了一些需要實現的方法,但並不是強制的。而EJB(Enterprise Java Bean)無非規定了一些必須實現(非常類似於響應事件)的方法,這些方法是供EJB Container使用(調用)的。
在一個Java Application或Applet里使用這個bean非常簡單,最簡單的方法是你要使用這個類的源碼工作目錄下建一個beartool目錄,把這個class文件拷貝進去,然後在你的程序中import beartool.MD5就可以了。最後打包成.jar或.war是保持這個相對的目錄關系就行了。
Java還有一個小小的好處是你並不需要摘除我們的MD5類中那個main方法,它已經是一個可以工作的Java Bean了。Java有一個非常大的優點是她允許很方便地讓多種運行形式在同一組代碼中共存,比如,你可以寫一個類,它即是一個控制台Application和GUI Application,同時又是一個Applet,同時還是一個Java Bean,這對於測試、維護和發布程序提供了極大的方便,這里的測試方法main還可以放到一個內部類中,有興趣的讀者可以參考: http://www.cn.ibm.com/developerWorks/java/jw-tips/tip106/index.shtml
這里講述了把測試和示例代碼放在一個內部靜態類的好處,是一種不錯的工程化技巧和途徑。
把Java Bean裝到JSP里
正如我們在本文開頭講述的那樣,我們對這個MD5 Bean的應用是基於一個用戶管理,這里我們假設了一個虛擬社區的用戶login過程,用戶的信息保存在資料庫的個名為users的表中。這個表有兩個欄位和我們的這個例子有關,userid :char(20)和pwdmd5 :char(32),userid是這個表的Primary Key,pwdmd5保存密碼的MD5串,MD5值是一個128bit的大整數,表示成16進制的ASCII需要32個字元。
這里給出兩個文件,login.html是用來接受用戶輸入的form,login.jsp用來模擬使用MD5 Bean的login過程。
為了使我們的測試環境簡單起見,我們在JSP中使用了JDK內置的JDBC-ODBC Bridge Driver,community是ODBC的DSN的名字,如果你使用其它的JDBC Driver,替換掉login.jsp中的
Connection con= DriverManager.getConnection("jdbc:odbc:community", "", "");
即可。
login.jsp的工作原理很簡單,通過post接收用戶輸入的UserID和Password,然後將Password變換成MD5串,然後在users表中尋找UserID和pwdmd5,因為UserID是users表的Primary Key,如果變換後的pwdmd5與表中的記錄不符,那麼SQL查詢會得到一個空的結果集。
這里需要簡單介紹的是,使用這個Bean只需要在你的JSP應用程序的WEB-INF/classes下建立一個beartool目錄,然後將MD5.class拷貝到那個目錄下就可以了。如果你使用一些集成開發環境,請參考它們的deploy工具的說明。在JSP使用一個java Bean關鍵的一句聲明是程序中的第2行:
<jsp:useBean id='oMD5' scope='request' class='beartool.MD5'/>
這是所有JSP規范要求JSP容器開發者必須提供的標准Tag。
id=實際上是指示JSP Container創建Bean的實例時用的實例變數名。在後面的<%和%>之間的Java程序中,你可以引用它。在程序中可以看到,通過 pwdmd5=oMD5.getMD5ofStr (password)引用了我們的MD5 Java Bean提供的唯一一個公共方法: getMD5ofStr。
Java Application Server執行.JSP的過程是先把它預編譯成.java(那些Tag在預編譯時會成為java語句),然後再編譯成.class。這些都是系統自動完成和維護的,那個.class也稱為Servlet。當然,如果你願意,你也可以幫助Java Application Server去干本該它乾的事情,自己直接去寫Servlet,但用Servlet去輸出HTML那簡直是回到了用C寫CGI程序的惡夢時代。
如果你的輸出是一個復雜的表格,比較方便的方法我想還是用一個你所熟悉的HTML編輯器編寫一個「模板」,然後在把JSP代碼「嵌入」進去。盡管這種JSP代碼被有些專家指責為「空心粉」,它的確有個缺點是代碼比較難管理和重復使用,但是程序設計永遠需要的就是這樣的權衡。我個人認為,對於中、小型項目,比較理想的結構是把數據表示(或不嚴格地稱作WEB界面相關)的部分用JSP寫,和界面不相關的放在Bean裡面,一般情況下是不需要直接寫Servlet的。
如果你覺得這種方法不是非常的OO(Object Oriented),你可以繼承(extends)它一把,再寫一個bean把用戶管理的功能包進去。
到底能不能兼容?
我測試了三種Java應用伺服器環境,Resin 1.2.3、Sun J2EE 1.2、IBM WebSphere 3.5,所幸的是這個Java Bean都沒有任何問題,原因其實是因為它僅僅是個計算程序,不涉及操作系統,I/O設備。其實用其它語言也能簡單地實現它的兼容性的,Java的唯一優點是,你只需提供一個形態的運行碼就可以了。請注意「形態」二字,現在很多計算結構和操作系統除了語言本身之外都定義了大量的代碼形態,很簡單的一段C語言核心代碼,轉換成不同形態要考慮很多問題,使用很多工具,同時受很多限制,有時候學習一種新的「形態」所花費的精力可能比解決問題本身還多。比如光Windows就有EXE、Service、的普通DLL、COM DLL以前還有OCX等等等等,在Unix上雖說要簡單一些,但要也要提供一個.h定義一大堆宏,還要考慮不同平台編譯器版本的位長度問題。我想這是Java對我來說的一個非常重要的魅力吧。
MD5演算法說明
一、補位
二、補數據長度
三、初始化MD5參數
四、處理位操作函數
五、主要變換過程
六、輸出結果
補位:
MD5演算法先對輸入的數據進行補位,使得數據位長度LEN對512求余的結果是448。即數據擴展至K*512+448位。即K*64+56個位元組,K為整數。
具體補位操作:補一個1,然後補0至滿足上述要求。
補數據長度:
用一個64位的數字表示數據的原始長度B,把B用兩個32位數表示。這時,數
據就被填補成長度為512位的倍數。
初始化MD5參數:
四個32位整數 (A,B,C,D) 用來計算信息摘要,初始化使用的是十六進製表
示的數字
A=0X01234567
B=0X89abcdef
C=0Xfedcba98
D=0X76543210
處理位操作函數:
X,Y,Z為32位整數。
F(X,Y,Z) = X&Y|NOT(X)&Z
G(X,Y,Z) = X&Z|Y?(Z)
H(X,Y,Z) = X xor Y xor Z
I(X,Y,Z) = Y xor (X|not(Z))
主要變換過程:
使用常數組T[1 ... 64], T[i]為32位整數用16進製表示,數據用16個32位
的整數數組M[]表示。
具體過程如下:
/* 處理數據原文 */
For i = 0 to N/16-1 do
/*每一次,把數據原文存放在16個元素的數組X中. */
For j = 0 to 15 do
Set X[j] to M[i*16+j].
end /結束對J的循環
/* Save A as AA, B as BB, C as CC, and D as DD.
*/
AA = A
BB = B
CC = C
DD = D
/* 第1輪*/
/* 以 [abcd k s i]表示如下操作
a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
/* Do the following 16 operations. */
[ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3
22 4]
[ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7
22 8]
[ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA
11 22 12]
[ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15]
[BCDA 15 22 16]
/* 第2輪* */
/* 以 [abcd k s i]表示如下操作
a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */
/* Do the following 16 operations. */
[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA
0 20 20]
[ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23]
[BCDA 4 20 24]
[ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA
8 20 28]
[ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA
12 20 32]
/* 第3輪*/
/* 以 [abcd k s i]表示如下操作
a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */
/* Do the following 16 operations. */
[ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35]
[BCDA 14 23 36]
[ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA
10 23 40]
[ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43]
[BCDA 6 23 44]
[ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47]
[BCDA 2 23 48]
/* 第4輪*/
/* 以 [abcd k s i]表示如下操作
a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */
/* Do the following 16 operations. */
[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51]
[BCDA 5 21 52]
[ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55]
[BCDA 1 21 56]
[ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59]
[BCDA 13 21 60]
[ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63]
[BCDA 9 21 64]
/* 然後進行如下操作 */
A = A + AA
B = B + BB
C = C + CC
D = D + DD
end /* 結束對I的循環*/
輸出結果。
『陸』 如何破解WPA密碼
卡皇可以破解WPA,
分多給點給你詳細步驟~!
BT3 破解無線WEP 傻瓜版教程講解
Home-wifi重新編輯
准備工作:
1 安裝好網卡管理程序,點「可用網路」記下你打算破解的AP信號的頻道。(可省略,最新的spoonwep2 支持全頻道掃描 CHAN HOPPING)
2 進bios把電腦設置為光碟機啟動,U盤版設置為USB啟動,如果你不知道如何設置請參考主板說明書,或者直接google一下,(現在很多電腦買回來默認開啟光碟機啟動,所以你不設置說不定也可以)
3 放入BT3光碟,默認選擇 第一項 BT3 Graphics mode (KDE) 進入linux 系統,如果不選擇會倒數30秒自動進入。
註:有關光碟啟動黑屏問題,請用以下幾種方法解決:
1、選擇啟動方式後黑屏的可以在出現啟動畫面時選擇BT3 Graphics mode (VESA KDE)後按TAB鍵,在最後面加上 空格acpi=off 按回車,注意,要在原來這些文字之後加一個空格再輸入這幾個字元,都是小寫。
選擇BT3 Graphics mode (VESA KDE)是把解析度設為1024*768,有些寬屏電腦可以選擇BT3 Graphics mode (KDE)後按TAB鍵,最後面加入acpi=off 回車進入.也可以黑屏時按Fn+F8
2、輸入startx後黑屏的可以先輸入xconf再輸入startx
如果還不能進入就第一步和第二步一起用,如果還不行,換個電腦是最快的方法,呵呵,或者到home-wifi論壇深入研究一下可能需要載入顯卡驅動什麼的!
正式開始破解,首先拿自己的路由開刀(無客戶端模式) ESSID: CWZMD
1 進入系統後點擊系統桌面左下角第二個圖標(黑色)開啟一個命令窗口,輸入:spoonwep 回車後10秒左右彈出 spoonwep2 主程序:
NET CARD 網卡介面 選擇 WLAN0(卡皇、威海王是wlan0,神卡或者1211b晶元的760N是選擇eth1,但也有可能是其他的,如果沒有信號,可以多試下)
DRIVER 驅動 選擇 NORMAL
MODE 模式 選擇 UNKNOWN VICTIM
點 NEXT 轉到 VICTIMS DISCOVERY 窗口
2首先點擊左上角下拉菜單選擇 FIXED CHAN 然後拉箭頭指定頻道 選定頻道3
這里的CHAN HOPPING 是全頻段掃描
點擊右上角 LAUNCH 按鈕 (點完後會變成 ABORT ) 這時會彈出抓包窗口,可作為參考,也可不用理會。20秒左右程序會顯示掃描到的信息,其中:
ESSID 路由廣播名稱
MAC 路由的MAC地址
CHAN 使用的頻道
POW 信號強度
DATA (注意:這個數值一直為0基本無法破解,有些無線路由只開機不連貓撥號也不產生data,你可另尋時機等到有DATA再破)
CLIS 空白代表無客戶端,打鉤則代表有客戶端
選擇我自己的路由 CWZMD ,然後點 SELECTION OK 轉到 ATTACK PANEL 窗口:
3 第一個下拉菜單有4個選項,後面3個都可作為無客戶端攻擊模式,其中 :
ARP REPLAY ATTACK (有客戶端時用)
P0841 REPLAY ATTACK (末選)
CHOPCHOP & FORGEATTACK (次選)
FRAGMENTATION & FORGE ATTACK (首選)
第二個下拉菜單有3個選項,其中:
??? LENGTH (不指定加密位數,首選)
128 BITS LENGTH (指定128位加密,末選)
64 BITS LENGTH (指定 64位加密,次選)
兩個下拉菜單右邊的 Inj Rate 是每秒發包數量,選默認的600即可。
選擇好2個下拉菜單,點擊左邊 LAUNCH 按鈕 開始自動破解,破解速度和信號強度成正比,破解速度有時候和攻擊方式也有關系,如果太慢可以換種攻擊方式看看,因為是自己的路由,信號很強,密碼1分鍾就出來了!最下面的WEP Key 就是密碼在windows下輸入aaaaa88888即可,無需輸入冒號。
『柒』 tp-link_c5b8如何改密碼
默認的密碼是:admin
破無線密碼是一個漫長而復雜的工序,本人親身經歷以來,得出以下結論:
1.破解密碼需要有一個熱鬧的網路。周邊無線越多越近越好.畢竟想攻擊路由器的無線,特別是WPA的,抓手包半天弄不上幾個。但他在下載、上傳時是很快的。
2.破解密碼電腦配置很重要,他需要大量的運算。本人用的又好又順手的是EWSA軟體,破解沒多久就讓電腦發熱。
3.字典很重要。人們大多數以自家電話號碼為無線密碼,如XXXX-XXXXXXX共十位。當你確定所在地區區號後010、07XX,以及所用的開頭189、133、139……經過字典生成器生成,測試詞有10^7個,如果每秒測試1000個,你得等上2.7個小時。
4.搞到他家電話號碼,自己試試吧。我這地區成功率大約20%5.投機取巧,輸入12345678、00000000或許能行EWSA軟體及BEINI奶瓶LINUX破解系統網上有,自己搜吧!
~希望我的回答對你有幫助,如果有疑問,請繼續「追問」!
~答題不易,互相理解,您的採納是我前進的動力,感謝您!!
『捌』 Wifi 鑰匙哪個好用
用的人越多的越好用。
wifi鑰匙的原理是你把自己所連接過的所有wifi的定位信息和ssid密碼一起發到伺服器,
等別人需要連接的時候先確定位置,連接資料庫尋找對應的ssid的密碼。
如果庫里有就能直接連接。如果沒有可以嘗試簡單破解。
所以用的人越多的萬能鑰匙資料庫越強大。
我認為用的最多的還是連尚網路科技的萬能鑰匙