1. 程式人生 > >CentOS的檔案許可權與目錄配置

CentOS的檔案許可權與目錄配置

1.

Linux一般將檔案可存取訪問的身份分為3個類別,分別是owner、group、others,且3種身份各有read、write、execute等許可權。

2.

每個賬號都可以有多個使用者組支援。

3.

/etc/passwd,預設情況下所有系統上的賬號與一般身份使用者還有root的相關資訊,都記錄在這個資料夾中。

/etc/shadow,個人密碼記錄在這個資料夾中。

/etc/group,所有的組名記錄在這個資料夾中。

6.2 Linux檔案許可權概念

6.2.1 Linux檔案屬性

1.

$ls -al,ls是“list”的意思,重點在顯示檔案的檔名與相關屬性。引數“-al”則表示列出所有的檔案詳細許可權與屬性(包含隱藏檔案,就是檔名第一個字元為“.”的檔案)

2.

顯示的每一行會有如下格式,例如:

-rw-r--r--        1           root           root          42304          Sep 4 18:26        install.log,分別表示:

許可權          連線        所有者         使用者組        檔案容量          修改日期             檔名

3.

許可權-rw-r--r--中擁有10個字元,分別代表如下:

第1個字元代表檔案的型別。“d”代表目錄,“-”代表檔案,“l”代表連結檔案(linkfile),“b”表示裝置檔案裡面的可供儲存的介面裝置,“c”表示裝置檔案裡面的串列埠裝置,例如滑鼠鍵盤(一次性讀取裝置)。

接 下來的字元,以3個為一組,且均為“rwx”的3個引數組合,“r”表示可讀,“w”表示可寫,“x”表示可執行(execute),這三個許可權的位置不 會改變,如果沒有許可權,則以減號“-”代替。第一組為檔案所有者的許可權,第二組為同用戶組的許可權,第三組為其他非本使用者組的許可權。

4.

2.中的“連結”表示有多少檔案連結到此節點(i-node)。每隔檔案都會將它的許可權與屬性記錄到檔案系統的i-node中,每個檔案都會連結到一個i-node。這個屬性記錄的就是有多少個不同的檔名連線到相同的一個i-node號碼。

5.

2.中的“修改日期”表示這個檔案的建立日期或最近修改的日期。如果年份太久則只會顯示年份。想要顯示完整的時間格式,則可使用如下指令(ls的引數):

$ls -l --full-time

6.

修改系統預設語言為英文,可以管理員身份修改該系統配置檔案/etc/sysconfig/i18n,利用nano編譯器進行修改,LANG=en_US。

#nano /etc/sysconfig/i18n,將LANG後面改為“en_US……”

7.

對於目錄的許可權如果是“-drwxr-xr--”,則others仍然不能進入本目錄,需要有x許可權才能進入。

6.2.2如何改變檔案屬性與許可權

1.

chgrp,改變檔案所屬使用者組;

chown,改變檔案所有者;

chmod,改變檔案的許可權。

2.

chgrp就是change group的簡稱,使用該指令時,要被改變的組名必須在/etc/group檔案記憶體在才行。

#chgrp [-R] group filename(or dirname),其中R表示進行遞迴(recursive)的持續更改,也即連同子目錄下的所有檔案、目錄。所以當修改一個目錄中所有檔案的使用者組(所有者與許可權也一樣)時,要加上-R。

例如將檔案install.log改到users使用者組

$chgrp users install.log

3.

chown就是change owner的簡稱。

#chown [-R] user filename(or dirname),改變file的檔案所有者為user。

#chown [-R] .group filename(or dirname),改變file的使用者組為group(注意加點)。

#chown [-R] user.group filename(or dirname),改變file的檔案所有者為user,使用者組為group。為避免“.”引起的系統誤判,通常用一下命令表示該句:
#chown [-R] user:group filename(or dirname)。

4.

複製檔案給其他人,複製命令:

$cp [-option] [source file or dir] [target file or dir]

複製行為(cp)會複製執行者的屬性與許可權,所以即使複製到他人使用者組仍然無法使用,所以這時必須修改該許可權。

5.

chmod就是change mode bits的簡稱。

數字型別改變檔案許可權:

#chmod [-R] xyz fileordir,其中x代表owner許可權,y代表group許可權,z代表others許可權。

r=4,w=2,x=1,上面三種身份的許可權是r+w+x的和,如果沒有相應的許可權,則值為0。

例如:install.log檔案,owner=rwx=4+2+1=7,group=rwx=4+2+1=7,others=---=0+0+0=0,所以這個檔案的將改變許可權值為770:

#chmod 770 install.log。

6.

符號型別改變檔案許可權

我們可以用u,g,o三個引數來代表user,group,others 3種身份的許可權。

a代表all,也即全部的身份。

讀寫的許可權就可以寫成r,w,x。

+,-,=分別代表加入,出去,設定一個許可權。

加入要設定一個檔案的許可權成“-rwxr-xr-x,指令為:

#chmod u=rwx,go=rx filename,注意加上那個逗號。

要給一個檔案的全部身份加上x許可權,則指令為:

#chmod a+x filename。

6.2.3 目錄與檔案的許可權意義

1.

許可權對檔案的作用:

檔案是實際含有資料的地方,包括一般文字檔案、資料庫內容檔案、二進位制可執行檔案(binary program)等。

r(read):可讀取此檔案實際內容。

w(write):可以編輯、新增或者是修改該檔案的內容(不能刪除該檔案)。

x(execute):可以被系統執行。

2.

許可權對目錄的作用:

r(read contemts in directory)可讀取目錄結構列表,可利用ls命令將該目錄結構列表中的檔名顯示出來(僅能顯示檔名)。

w(modify contents of directory)可更改目錄結構列表,如新建、刪除、重新命名、轉移檔案或目錄。

x(access directory)可進入該目錄成為工作目錄(就是目前所在的目錄),當登陸Linux時所在的~(即主資料夾)就是當前工作目錄。

3.

工作目錄對於命令的執行非常重要,如果對一個目錄不具有x許可權,則無法使該目錄稱為工作目錄,也就無法執行該目錄下的任何命令。

要開放目錄給任何人瀏覽時,應該至少給予r和x的許可權,但w的許可權不可以隨便給。

4.

如果具有對一個目錄的w許可權,那麼該目錄下的任何檔案都可以刪除,不管要刪除的檔案的所有者和使用者組是什麼。

5.

#cd /tmp,切換工作目錄到/tmp

#mkdir testing,在以上目錄下建立testing資料夾

#chmod 744 testing,更改以上建立的testing資料夾的許可權為drwxr--r--

#touch testing/testing1,在testing資料夾中新建空的檔案testing1

#ls -ald testing testing/testing1,列出上面建立的資料夾和檔案的資訊(ls的-a引數表示all,即顯示所有檔案,包括隱藏檔案;-l引數表示 long,顯示長資訊格式,即顯示使用者組,所有者,修改日期等等;-d引數表示將目錄象檔案一樣顯示,而不是顯示其下的檔案)。

可以看到testing目錄,和testing1檔案的所有者和使用者組都是root。

下面來用自己的賬號進行一些操作。

6.

#su - SF_Chipan,切換身份成為SF_Chipan

$cd /tmp,進入/tmp成為工作目錄

$ls -l testing,列出testing目錄中的內容,因為剛才在5.中設定了testing目錄對others的許可權為r,所以這裡就會顯示檔名為testing1的檔案,其他都是問號。

$cd tesing,這時候因為SF_Chipan身份對testing目錄的許可權只是r,沒有x,所以不能使testing成為工作目錄。

7.

使用“su - ”登陸的賬戶,當使用$exit退出時,是退回使用“su - ”之前的賬戶。如果使用“su - ”登陸root賬戶,需要提供密碼,而root賬戶登陸到一般賬戶,則不需要提供密碼。

8.

可以是用rm命令刪除testing1檔案:

#cd /tmp/testing

#rm testing1

6.2.4 Linux檔案種類與副檔名

1.

檔案種類:

普通檔案(regular file):[-]

純文字檔案(ASCⅡ):Linux中最多的一種檔案型別。可以執行下列命令來檢視一個隱藏檔案:

$cat ~/.bashrc,cat是將一個檔案內容讀出來的命令。

二進位制檔案(binary):Linux中的可執行檔案就是這種格式的(scripts、文字批處理檔案不算),.bashrc就是這種格式。

目錄(directory):[d]

連結檔案(link):[l],有點類似windows下的快捷方式。

設 備與裝置檔案(device)通常分為一下兩種:塊(block)裝置檔案,[ d],就是一些儲存資料以提供系統隨機訪問的介面裝置,如硬碟等。可以隨機地在硬碟的不同塊讀寫,這種裝置就是成組裝置;字元(character)裝置 檔案,就是一些串列埠的介面裝置,如鍵盤滑鼠,特點是“一次性讀取”,不能夠階段輸出,比如滑鼠不可能跳到另一個地方,只能划過去。

套接字(sockets):[s],通常被用在網路上的資料連線。我們可以啟動一個程式來監聽客戶端的請求,而客戶端就可以通過這個socket來進行書序的通訊。通常在/var/run這個目錄中就能看到。

管道(FIFO,pipe):[p],主要目的在解決多一個程式同時訪問一個檔案所造成的錯誤問題。FIFO是first-in-first-out的縮寫。

上面的套接字和管道都與程序比較有關,可以通過man  fifo及man socket來查閱。

2.

一個Linux檔案能不能被執行,與它的第一列的10個屬性有關,與檔名一點關係都沒有。

3.

x許可權代表這個檔案具有可執行的能力,但能不能執行成功,要看該檔案的內容。

4.

我們希望可以通過副檔名瞭解該檔案時什麼東西,所以還是會使用適當的副檔名來表示該檔案是什麼種類的。

5.

*.sh:指令碼或批處理檔案(scripts),因為批處理檔案用shell寫成的,所以副檔名就是.sh。

*Z、*.tar、*tar.gz、*zip、*.tgz:經過打包的壓縮檔案。由於不同的壓縮軟體而取其相關的副檔名。

*.html、*.php:網頁相關檔案,分別代表HTML語法與PHP語法的網頁檔案。.html的檔案可以使用網頁瀏覽器來直接啟動;.php的檔案,可以通過客戶端的瀏覽器來服務端瀏覽,以得到運算後的網頁結果。

6.

從網路上傳送到你的Linux系統中,檔案的屬性與許可權可能是會改變的。

7.

在Linux下,使用預設的Ext2/Ext3檔案系統時,針對檔案的檔名長度限制為:單一檔案或目錄的最大容許檔名為255個字元;包含完整路徑名稱及目錄(/)的完整檔名為4096個字元。

8.

由於Linux在文字介面下的一些命令操作的關係,在設定檔名時,最好能避免一些特殊的字元,如:*?><;&![]|\'"`(){}。