Linux循序漸進(10)(轉)

post0發表於2007-08-09
Linux循序漸進(10)(轉)[@more@]

  第十課(八)  目錄的建立與刪除命令 

mkdir命令

功能:建立一個目錄(類似DOS下的md命令)。

語法:mkdir [選項] dirname

說明:該命令建立由dirname命名的目錄。要求建立目錄的使用者在當前目錄中(dirname的父目錄中)具有寫許可權,並且dirname不能是當前目錄中已有的目錄或檔名稱。

命令中各選項的含義為:

- m 對新建目錄設定存取許可權。也可以用chmod命令設定。

- p 可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在, 加上此選項後,系統將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄。

例如:在當前目錄中建立inin 和inin下的/mail目錄,也就是連續建兩個目錄。

$ mkdir - p - m 700 ./inin/mail/

該命令的執行結果是在當前目錄中建立巢狀的目錄層次inin /mail,許可權設定為只有檔案主有讀、寫和執行許可權。

rmdir 命令

功能:刪除空目錄。

語法:rmdir [選項] dirname

說明:dirname表示目錄名。該命令從一個目錄中刪除一個或多個子目錄項。需要特別注意的是,一個目錄被刪除之前必須是空的。(注意,rm - r dir命令可代替rmdir,但是有很大危險性。)刪除某目錄時也必須具有對父目錄的寫許可權。

命令中各選項的含義為:

- p 遞迴刪除目錄dirname,當子目錄刪除後其父目錄為空時,也一同被刪除。如果整個路徑被刪除或者由於某種原因保留部分路徑,則系統在標準輸出上顯示相應的資訊。

例如:

$ rmdir - p /usr/xu/txt

將/usr/xu/txt目錄刪除。

改變工作目錄、顯示目錄內容命令

cd 命令

功能:改變工作目錄。

語法:cd [directory]

說明:該命令將當前目錄改變至directory所指定的目錄。若沒有指定directory,則回到使用者的主目錄。為了改變到指定目錄,使用者必須擁有對指定目錄的執行和讀許可權。

該命令可以使用萬用字元(萬用字元含義請參見第十章)。

例如:假設使用者當前目錄是:/home/xu,現需要更換到/home/xu/pro目錄中,

$ cd pro

此時,使用者可以執行pwd命令來顯示工作目錄。

$ pwd

/home/xu/pro

pwd 命令

在Linux層次目錄結構中,使用者可以在被授權的任意目錄下利用mkdir命令建立新目錄,也可以利用cd命令從一個目錄轉換到另一個目錄。然而,沒有提示符來告知使用者目前處於哪一個目錄中。要想知道當前所處的目錄,可以使用pwd命令,該命令顯示整個路徑名。

語法:pwd

說明:此命令顯示出當前工作目錄的絕對路徑。

例:$ pwd

/home/xu

顯示的路徑名為/home/xu,每個目錄名都用“/”隔開,根目錄以開頭的“/”表示。

ls 命令

ls是英文單詞list的簡寫,其功能為列出目錄的內容。這是使用者最常用的一個命令之一,因為使用者需要不時地檢視某個目錄的內容。該命令類似於DOS下的dir命令。

語法:ls [選項] [目錄或是檔案]

對於每個目錄,該命令將列出其中的所有子目錄與檔案。對於每個檔案,ls將輸出其檔名以及所要求的其他資訊。預設情況下,輸出條目按字母順序排序。當未給出目錄名或是檔名時,就顯示當前目錄的資訊。

命令中各選項的含義如下:

- a 顯示指定目錄下所有子目錄與檔案,包括隱藏檔案。

- A 顯示指定目錄下所有子目錄與檔案,包括隱藏檔案。但不列出“.”和“..”。

- b 對檔名中的不可顯示字元用八進位制逃逸字元顯示。

- c 按檔案的修改時間排序。

- C 分成多列顯示各項。

- d 如果引數是目錄,只顯示其名稱而不顯示其下的各檔案。往往與l選項一起使用,以得到目錄的詳細資訊。

- f 不排序。該選項將使lts選項失效,並使aU選項有效。

- F 在目錄名後面標記“/”,可執行檔案後面標記“*”,符號連結後面標記“@”,管道(或FIFO)後面標記“|”,socket檔案後面標記“=”。

- i 在輸出的第一列顯示檔案的i節點號。

- l 以長格式來顯示檔案的詳細資訊。這個選項最常用。每行列出的資訊依次是:

檔案型別與許可權 連結數 檔案屬主 檔案屬組 檔案大小 建立或最近修改的時間 名字

對於符號連結檔案,顯示的檔名之後有“—〉”和引用檔案路徑名。

對於裝置檔案,其“檔案大小”欄位顯示主、次裝置號,而不是檔案大小。目錄中的總塊數顯示在長格式列表的開頭,其中包含間接塊。

- L 若指定的名稱為一個符號連結檔案,則顯示連結所指向的檔案。

- m 輸出按字元流格式,檔案跨頁顯示,以逗號分開。

- n 輸出格式與l選項相同,只不過在輸出中檔案屬主和屬組是用相應的UID號和GID號來表示,而不是實際的名稱。

- o 與l選項相同,只是不顯示擁有者資訊。

- p 在目錄後面加一個“/”。

- q 將檔名中的不可顯示字元用“?”代替。

- r 按字母逆序或最早優先的順序顯示輸出結果。

- R 遞迴式地顯示指定目錄的各個子目錄中的檔案。

- s 給出每個目錄項所用的塊數,包括間接塊。

- t 顯示時按修改時間(最近優先)而不是按名字排序。若檔案修改時間相同,則按字典順序。修改時間取決於是否使用了c或u選頂。預設的時間標記是最後一次修改時間。

- u 顯示時按檔案上次存取的時間(最近優先)而不是按名字排序。即將-t的時間標記修改為最後一次訪問的時間。

- x 按行顯示出各排序項的資訊。

用ls - l命令顯示的資訊中,開頭是由10個字元構成的字串,其中第一個字元表示檔案型別,它可以是下述型別之一:

- 普通檔案

d 目錄

l 符號連結

b 塊裝置檔案

c 字元裝置檔案

後面的9個字元表示檔案的訪問許可權,分為3組,每組3位。第一組表示檔案屬主的許可權,第二組表示同組使用者的許可權,第三組表示其他使用者的許可權。每一組的三個字元分別表示對檔案的讀、寫和執行許可權。

各許可權如下所示:

r 讀

w 寫

x 執行。對於目錄,表示進入許可權。

s 當檔案被執行時,把該檔案的UID或GID賦予執行程式的UID(使用者ID)或GID(組ID)。

t 設定標誌位(留在記憶體,不被換出)。如果該檔案是目錄,在該目錄中的檔案只能被超級使用者、目錄擁有者或檔案屬主刪除。如果它是可執行檔案,在該檔案執行後,指向其正文段的指標仍留在記憶體。這樣再次執行它時,系統就能更快地裝入該檔案。

- 沒有設定許可權。

例1:列出當前目錄的內容。

$ ls -F

bin/ lib/ var/

etc/ tmp/ index. html

例2:列出某個目錄的內容。

$ ls –F /home/xu

Mai1/ map1e/ mm/ ptr/ telnetd*

fd/ mbox mount sobsrc. tgz tmp/

例3:列出某個目錄下所有的檔案(包括隱藏檔案)。

$ 1s -aF /home/xu

./ . .e1m/ .netscape/ map1e ptr/

../ .fvwin2rc95 .term/ mbox sobsrc. tgz

.Xauthority .kermrc Mai1/ mm/ te1netd*

.bash-history .ncftp/ fd/ mount tmp/

 

例4:用長格式列出某個目錄下所有的檔案(包括隱藏檔案)。

$ 1s -laF /home/xu

total 584

drwxr-xr-x l2 root root 1024 Nov 02 22:07 ./

drwxr-xr-x 15 bbs bbs 1024 Jul 29 07:08 ../

-rw-r--r-- 1 yu users 4343 Ju1 29 22:20 .bash-history

drwx------ 2 yu users 1024 May 17 06:36 .e1m/

--rw------ 1 root root 4628 Jun 2 1l:34 mbox

lrwxrwxrwx 1 root root l4 Ju1 29 03:08 mount->/mnt

drwxrwxr-x 4 root root 1024 Ju1 23 03:43 ptr/

-rw--r--r- 1 root root 483997 Ju1 l5 17:3l sobsrc. tgz

-rwxr-xr-x l root users 60177 Jun 8 01:29 telnetd*

drwxr-xr-x 2 root root 1024 Mar 6 22:32 tmp/

 

例5:用長格式列出某個目錄下所有的檔案包括隱藏檔案和它們的i節點號。並把檔案屬主和屬組以UID號和GID號的形式顯示。

$ 1s -1ainF /home/xu

tota1 584

399672 drwxr-xr-x l2 0 0 l024 Nov 30 22:07 ./

333907 drwxr-xr-x 15 9999 99 l024  Ju1 29 07:08 ../

39980l -rw------- l 0 0 0 Jun 2 2:09 .Xauthority

399679 -rw-r--r-- 1 505 l00 4343 Jul 29 22:20 .bash-hist0ry

30l763 drwxr----- 2 505 100 l024  May 17 06:36 .e1m/

第十課(九) 改變檔案或目錄的訪問許可權命令    

Linux系統中的每個檔案和目錄都有訪問許可許可權,用它來確定誰可以透過何種方式對檔案和目錄進行訪問和操作。

檔案或目錄的訪問許可權分為只讀,只寫和可執行三種。以檔案為例,只讀許可權表示只允許讀其內容,而禁止對其做任何的更改操作。可執行許可權表示允許將該檔案作為一個程式執行。檔案被建立時,檔案所有者自動擁有對該檔案的讀、寫和可執行許可權,以便於對檔案的閱讀和修改。使用者也可根據需要把訪問許可權設定為需要的任何組合。

有三種不同型別的使用者可對檔案或目錄進行訪問:檔案所有者,同組使用者、其他使用者。所有者一般是檔案的建立者。所有者可以允許同組使用者有權訪問檔案,還可以將檔案的訪問許可權賦予系統中的其他使用者。在這種情況下,系統中每一位使用者都能訪問該使用者擁有的檔案或目錄。

每一檔案或目錄的訪問許可權都有三組,每組用三位表示,分別為檔案屬主的讀、寫和執行許可權;與屬主同組的使用者的讀、寫和執行許可權;系統中其他使用者的讀、寫和執行許可權。當用ls -l命令顯示檔案或目錄的詳細資訊時,最左邊的一列為檔案的訪問許可權。例如:

$ ls -l sobsrc. tgz

-rw-r--r-- 1 root root 483997 Ju1 l5 17:3l sobsrc. tgz

橫線代表空許可。r代表只讀,w代表寫,x代表可執行。注意這裡共有10個位置。第一個字元指定了檔案型別。在通常意義上,一個目錄也是一個檔案。如果第一個字元是橫線,表示是一個非目錄的檔案。如果是d,表示是一個目錄。

例如:

- rw- r-- r--

普通檔案 檔案主 組使用者 其他使用者

是檔案sobsrc.tgz 的訪問許可權,表示sobsrc.tgz是一個普通檔案;sobsrc.tgz的屬主有讀寫許可權;與sobsrc.tgz屬主同組的使用者只有讀許可權;其他使用者也只有讀許可權。

確定了一個檔案的訪問許可權後,使用者可以利用Linux系統提供的chmod命令來重新設定不同的訪問許可權。也可以利用chown命令來更改某個檔案或目錄的所有者。利用chgrp命令來更改某個檔案或目錄的使用者組。

下面分別對這些命令加以介紹。

 

chmod 命令

chmod命令是非常重要的,用於改變檔案或目錄的訪問許可權。使用者用它控制檔案或目錄的訪問許可權。

該命令有兩種用法。一種是包含字母和運算子表示式的文字設定法;另一種是包含數字的數字設定法。

1. 文字設定法

chmod [who] [+ | - | =] [mode] 檔名¼

命令中各選項的含義為:

操作物件who可是下述字母中的任一個或者它們的組合:

u 表示“使用者(user)”,即檔案或目錄的所有者。

g 表示“同組(group)使用者”,即與檔案屬主有相同組ID的所有使用者。

o 表示“其他(others)使用者”。

a 表示“所有(all)使用者”。它是系統預設值。

運算子號可以是:

+ 新增某個許可權。

- 取消某個許可權。

= 賦予給定許可權並取消其他所有許可權(如果有的話)。

設定mode所表示的許可權可用下述字母的任意組合:

r 可讀。

w 可寫。

x 可執行。

X 只有目標檔案對某些使用者是可執行的或該目標檔案是目錄時才追加x 屬性。

s 在檔案執行時把程式的屬主或組ID置為該檔案的檔案屬主。方式“u+s”設定檔案的使用者ID位,“g+s”設定組ID位。

t 儲存程式的文字到交換裝置上。

u 與檔案屬主擁有一樣的許可權。

g 與和檔案屬主同組的使用者擁有一樣的許可權。

o 與其他使用者擁有一樣的許可權。

檔名:以空格分開的要改變許可權的檔案列表,支援萬用字元。

在一個命令列中可給出多個許可權方式,其間用逗號隔開。例如:chmod g+r,o+r example

使同組和其他使用者對檔案example 有讀許可權。

2. 數字設定法

我們必須首先了解用數字表示的屬性的含義:0表示沒有許可權,1表示可執行許可權,2表示可寫許可權,4表示可讀許可權,然後將其相加。所以數字屬性的格式應為3個從0到7的八進位制數,其順序是(u)(g)(o)。

例如,如果想讓某個檔案的屬主有“讀/寫”二種許可權,需要把4(可讀)+2(可寫)=6(讀/寫)。

數字設定法的一般形式為:

chmod [mode] 檔名¼

例子:

(1)文字設定法:

例1:$ chmod a+x sort

即設定檔案sort的屬性為:

檔案屬主(u) 增加執行許可權

與檔案屬主同組使用者(g) 增加執行許可權

其他使用者(o) 增加執行許可權

 

例2:$ chmod ug+w,o-x text

即設定檔案text的屬性為:

檔案屬主(u) 增加寫許可權

與檔案屬主同組使用者(g) 增加寫許可權

其他使用者(o) 刪除執行許可權

 

例3:$ chmod u+s a.out

假設執行chmod後a.out的許可權為(可以用ls – l a.out命令來看):

–rws--x--x 1 inin users 7192 Nov 4 14:22 a.out

並且這個執行檔案要用到一個文字檔案shiyan1.c,其檔案存取許可權為“–rw-------”,即該檔案只有其屬主具有讀寫許可權。

當其他使用者執行a.out這個程式時,他的身份因這個程式暫時變成inin(由於chmod命令中使用了s選項),所以他就能夠讀取shiyan1.c這個檔案(雖然這個檔案被設定為其他人不具備任何許可權),這就是s的功能。

因此,在整個系統中特別是root本身,最好不要過多的設定這種型別的檔案(除非必要)這樣可以保障系統的安全,避免因為某些程式的bug而使系統遭到入侵。

例4:$ chmod a–x mm.txt

$ chmod –x mm.txt

$ chmod ugo–x mm.txt

 

以上這三個命令都是將檔案mm.txt的執行許可權刪除,它設定的物件為所有使用者。

(2)數字設定法:

例1: $ chmod 644 mm.txt

$ ls –l

即設定檔案mm.txt的屬性為:

-rw-r--r-- 1 inin users 1155 Nov 5 11:22 mm.txt

檔案屬主(u)inin 擁有讀、寫許可權

與檔案屬主同組人使用者(g) 擁有讀許可權

其他人(o) 擁有讀許可權

 

例2: $ chmod 750 wch.txt

$ ls –l

-rwxr-x--- 1 inin users 44137 Nov 12 9:22 wchtxt

即設定wchtxt這個檔案的屬性為:

檔案主本人(u)inin 可讀/可寫/可執行權

與檔案主同組人(g) 可讀/可執行權

其他人(o) 沒有任何許可權

chgrp命令

功能:改變檔案或目錄所屬的組。

語法:chgrp [選項] group filename¼

該命令改變指定指定檔案所屬的使用者組。其中group可以是使用者組ID,也可以是/etc/group檔案中使用者組的組名。檔名是以空格分開的要改變屬組的檔案列表,支援萬用字元。如果使用者不是該檔案的屬主或超級使用者,則不能改變該檔案的組。

該命令的各選項含義為:

- R 遞迴式地改變指定目錄及其下的所有子目錄和檔案的屬組。

例1:$ chgrp - R book /opt/local /book

改變/opt/local /book/及其子目錄下的所有檔案的屬組為book。

chown 命令

功能:更改某個檔案或目錄的屬主和屬組。這個命令也很常用。例如root使用者把自己的一個檔案複製給使用者xu,為了讓使用者xu能夠存取這個檔案,root使用者應該把這個檔案的屬主設為xu,否則,使用者xu無法存取這個檔案。

語法:chown [選項] 使用者或組 檔案

說明:chown將指定檔案的擁有者改為指定的使用者或組。使用者可以是使用者名稱或使用者ID。組可以是組名或組ID。檔案是以空格分開的要改變許可權的檔案列表,支援萬用字元。

該命令的各選項含義如下:

- R 遞迴式地改變指定目錄及其下的所有子目錄和檔案的擁有者。

- v 顯示chown命令所做的工作。

例1:把檔案shiyan.c的所有者改為wang。

$ chown wang shiyan.c

例2:把目錄/his及其下的所有檔案和子目錄的屬主改成wang,屬組改成users。

$ chown - R wang.users /his

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-938944/,如需轉載,請註明出處,否則將追究法律責任。

相關文章