1. 程式人生 > >鳥哥的linux私房菜_檔案許可權與目錄配置

鳥哥的linux私房菜_檔案許可權與目錄配置

6. linux的檔案許可權與目錄配置


6.1.使用者與使用者組


a. 檔案所有者


b. 使用者組概念


c. 其他人概念


6.2. 檔案許可權概念


6.2.1 Linux 


子主題 1


第一個字元代表這個檔案是『目錄、檔案或連結檔案等等』:
o  當為[ d ]則是目錄,例如上表檔名為『.config』的那一行;
o  當為[ - ]則是檔案,例如上表檔名為『initial-setup-ks.cfg』那一行;
o  若是[ l ]則表示為連結檔(link file);
o  若是[ b ]則表示為裝置檔案裡面的可供儲存的介面裝置(可隨機存取裝置);
o  若是[ c ]則表示為裝置檔案裡面的串列埠裝置,例如鍵盤、滑鼠(一次性讀取裝置)。


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


1) chgrp:改變檔案所屬的使用者組


語法


[

[email protected] ~]#  chgrp [-R] dirname/filename ...
選項與引數:
-R : 進行遞迴(recursive)的持續變更,亦即連同次目錄下的所有檔案、目錄
都更新成為這個群組之意。常常用在變更某一目錄內所有的檔案之情況。


範例


[[email protected] ~]#  chgrp users initial-setup-ks.cfg
[[email protected] ~]#  ls -l 
-rw-r--r--. 1 root users 1864 May 4 18:01 initial-setup-ks.cfg


2) chown: 改變檔案所有者。


語法


[
[email protected]
~]#  chown [- R]  賬號名稱 檔案或目錄
[[email protected] ~]#  chown [-R]  賬號名稱:組名 檔案或目 錄
選項與引數:
-R : 進行遞迴(recursive)的持續變更,亦即連同次目錄下的所有檔案都變更


範例


範例:將 initial-setup-ks.cfg 的擁有者改為 bin 這個賬號:
[[email protected] ~]#  chown bin initial-setup-ks.cfg
[[email protected] ~]#  ls -l
-rw-r--r--. 1 bin users 1864 May 4 18:01 initial-setup-ks.cfg


範例:將 initial-setup-ks.cfg 的擁有者與群組改回為 root:
[
[email protected]
~]#  chown root:root initial-setup-ks.cfg
[[email protected] ~]#  ls -l
-rw-r--r--. 1 root root 1864 May 4 18:01 initial-setup-ks.cfg


3) chmod :改變檔案許可權


語法


[[email protected] ~]#  chmod [-R] xyz  檔案或目 錄
選項與引數:
xyz : 就是剛剛提到的數字型別的許可權屬性,為 rwx 屬性數值的相加。
-R : 進行遞迴(recursive)的持續變更,亦即連同次目錄下的所有檔案都會變更


符號型別改變檔案許可權 
基本上就九個許可權分別是(1)user (2)group (3)others 三種身份啦!那麼我們就可以藉由 u, g, o 來代表三種身份的許可權!此外, a 則代表 all 亦即全部的身份


範例


[[email protected] ~]#  chmod u=rwx,go=rx .bashrc
# 注意喔!那個 u=rwx,go=rx 是連在一起的,中間並沒有任何空格符!
[[email protected] ~]#  ls -al .bashrc
-rwxr-xr-x. 1 root root 176 Dec 29 2013 .bashrc


6.2.3  目錄與檔案之許可權意義:


6.2.4 Linux  檔案種類與副檔名


檔案種類


普通檔案


ls -la 顯示的屬性為[-] ,例如[-rwxr--r--];
依照檔案內容,又大致分為:
純文字檔案
二進位制檔案
資料格式檔案


連線檔案


類似windows下快捷方式,[l]


目錄


第一個屬性為[d]


裝置與裝置檔案


與系統外設及儲存相關的一些檔案,通常都集中在/dev這個目錄。通常又分為兩種:


1.塊(block)裝置檔案:就是一些儲存資料,以提供系統隨機訪問的裝置介面,例如硬碟、軟盤等。 你可以隨機的在硬碟的不同塊讀寫,這種裝置就是成組裝置。可檢視下/dev/sda,會發現第一個屬性是[b];
2.字元(character)裝置檔案: 也即是一些串列埠的檔案的介面裝置,例如鍵盤、滑鼠等。這些裝置的特徵就是 “一次性讀取”,不能夠截斷輸出。舉例來說,你不可能讓滑鼠“跳到”另一個頁面,只能”滑到“另一地方。其第一屬性是[c];


套接字(sockets)


資料介面檔案,這種檔案通常被用在網路上的資料連線。我們可以啟動一個程式來監聽客戶端的請求,而使用者就可以通過這個socket來進行資料通訊了。其第一個屬性為[s]


管道(FIFO、pipe)


FIFO是一種特俗的檔案型別,他主要解決多個程式同時訪問一個檔案造成的錯誤問題。第一個屬性為[p]


副檔名


基本上linux的檔案是沒有所謂的副檔名。
*.sh 指令碼或者批處理檔案;
*Z、*.tar、*.tar.gz、 *.zip、 *.tgz:經過打包的壓縮檔案。由不同的壓縮檔案 gunzip、tar等;
.html、.php:網頁相關檔案;


linux檔案的長度限制


*單一檔案或者目錄的最大允許檔名為255個字元;
*包含完整目錄及名稱的完整檔名為4096個字元;


linux檔名的限制


一般來說,你在設定 Linux 底下的檔名時, 最好可以避免一些特殊字元比較好!例如底下這些: * ? > < ; & ! [ ] | \ ' " ` ( ) { }
因為這些符號在文字介面下,是有特殊意義的!另外,檔名的開頭為小數點『.』時, 代表這個檔案為『隱藏檔』


6.3 Linux  目錄配置


6.3.1 Linux  目錄配置的依據--FHS


是什麼


根據 FHS(注 2)的標準檔案指出,他們的主要目的是希望讓使用者可以瞭解到已安裝軟體通常放置於那個目錄下, 所以他們希望獨立的軟體開發商、作業系統製作者、以及想要維護系統的使用者,都能夠遵循 FHS 的標準。 也就是說,FHS 的重點在於規範每個特定的目錄下應該要放置什麼樣子的資料而已。 這樣做好處非常多,因為 Linux 作業系統就能夠在既有的面貌下(目錄架構不變)發展出開發者想要的獨特風格。


目錄定義成為四種互動作用的形態


上表中的目錄就是一些代表性的目錄,
1) 可分享的:可以分享給其他系統掛載使用的目錄,所以包括執行檔案與使用者的郵件等資料, 是能夠分享給網路上其他主機掛載用的目錄;
2)不可分享的:自己機器上面運作的裝置檔案或者是與程式有關的 socket 檔案等, 由於僅與自身機器有關,所以當然就不適合分享給其他主機了。
3)不變的:有些資料是不會經常變動的,跟隨著 distribution 而不變動。 例如函式庫、檔案說明檔案、系統管理員所管理的主機服務配置檔案等等;
4)可變動的:經常改變的資料,例如登入檔案、一般使用者可自行收受的新聞組等。


FHS 針對目錄樹架構僅定義出三層目錄


根目錄


意義


所有目錄都由根目錄衍生出來,與開機、還原、系統修復等操作有關。非常重要。
FHS建議根目錄所在的分割槽要越小越好,且應用程式所安裝的軟體最好不要與根目錄放在同一個分割槽內,保持根目錄越小越好。如此不但效能較好,根目錄所在的檔案系統也不容易發生問題。


內容


/bin : 系統有很多放置執行檔案的目錄,但是/bin 比較特殊。因為/bin放置的單使用者模式下還能夠被操作的命令。在/bin目錄下的命令可以被root與一般賬號使用,主要有cat 、chmod、chown、date、mv、mkdir、cp、bash等常用命令;


/boot: 這個目錄主要放置開機會使用的檔案,包括linux核心檔案以及開機選單與開機所需要的配置檔案等。


/dev :在linux系統上,任何裝置與介面裝置都是以檔案的形式存在於這個目錄當中。


/etc :系統主要的配置檔案幾乎都放置在這個目錄下。例如人員賬號密碼,各種服務的啟始檔案等。一般來說這個目錄可以被一般使用者查閱,但是隻有root使用者可以修改;FHS建議不要放置可執行檔案(binary)在這個目錄中。
比較重要的檔案有:/etc/inittab 、 /etc/init.d 、/etc/modprobe.conf 、 /etc/X11、/etc/fstab、 /etc/sysconfig等。
/etc/init.d : 所有服務的預設啟動指令碼全都放置在這裡,例如要啟動和關閉iptables的話,“/etc/init.d/iptables star”“/etc/init.d/iptables stop”


/home :系統預設的使用者主資料夾,在你建立一個一般使用者賬號時,預設的使用者主資料夾都會放到這裡。 ~:代表當前使用者主資料夾 ~tom 代表tom的主資料夾;


/lib: 系統的函式庫非常多,而lib放置的則是開機時會用到的函式庫,以及在/bin 或者/sbin 下面的命令會呼叫的函式庫。


/media: 放置的是可刪除的裝置,例如 軟盤,官光碟 dvd等


 /mnt: 如果想要暫時掛載額外的裝置,可以放到這個目錄中,


/opt : 給第三方軟體放置的目錄。什麼是第三方軟體:舉例來說kde這個桌面管理系統,是一個獨立的計劃,不過他可以安裝到linux系統中,因此kde這個軟體建議安裝到opt目錄下。如果想要安裝額外的軟體,可以安裝到這個目錄下,不過按照以前的習慣安裝到 /usr/local ;


/root :系統管理員的主資料夾。 


/sbin : linux 有非常多的命令是用來設定系統環境的,這些命令只有root才能使用來設定系統,其他使用者只能有來查閱。常見的命令包括 fdisk、fsck、ifconfig、init、mkfs等;放在/sbin 下的一般為開機過程中所需要的,包括開機、修復,還原等。至於伺服器軟體程式,一般放在/use/sbin中, 本機自動安裝的軟體則放在/usr/local/sbin中;


/srv : 可視為service的縮寫,是一些網路服務啟動之後,這些服務所取用的資料目錄;例如www ftp服務等。


/tmp : 一般是使用者或者執行的程式暫時存放檔案的地方;


/usr 目錄


意義


unix software resource 的縮寫,“unix 作業系統軟體資源”; FHS建議 所有的軟體開發者應該將他們的資料合理的放置在這個目錄的子目錄下,不要自行新建該軟體的獨立目錄;


內容


/usr/X11R6: 為x11系統重要資料所放置的目錄


/usr/bin : 絕大部分使用者可以使用的命令都放置在這裡。注意與/bin的不同之處(是否與開機有關)


/usr/include : c/c++ d等陳旭語言的標頭檔案放置處,


/usr/lib: 應用軟體的函式庫、目標檔案(object file)、以及不被一般使用者慣用的執行檔案或者指令碼。


/usr/local : 系統管理員在本機自行安裝自己下載的軟體。建議安裝到此目錄,這樣回比較便於管理。


/usr/sbin : 非系統正常執行所需要的系統命令。最常見的就是某些網路服務軟體的服務命令;


/usr/share : 放置共享資料夾的地方;


/usr/src : 一般原始碼放置在這裡。至於核心原始碼建議放置在/usr/src/linux下;


/var 目錄


意義與內容:
var主要包括常態性變得檔案,包括 快取、登入文案、以及某些軟體執行所產生的檔案。


6.3.2  目錄樹(directory tree)


目錄樹的特性


1目錄樹的啟始點為根目錄 (/, root);
2 每一個目錄不止能使用本地端的 partition 的檔案系統,也可以使用網路上的 filesystem 。舉例來說, 可
以利用 Network File System (NFS) 伺服器掛載某特定目錄等。
3 每一個檔案在此目錄樹中的檔名(包含完整路徑)都是獨一無二的。


6.3.3  絕對路徑與相對路徑