Linux之檔案通路權限管理
概述:在linux中的每一個檔案或目錄都包含有通路權限,這些通路權限決定了誰能通路和如何通路這些檔案和目錄。
有以下三種通路方式限制通路權限:
隻允許使用者自己通路;
允許一個預先指定的使用者組中的使用者通路;
允許系統中的任何使用者通路。
同時,使用者能夠控制一個給定的檔案或目錄的通路程度。一個檔案活目錄可能有讀(r)、寫(w)及執行權限(x)。當建立一個檔案時,系統會自動地賦予檔案所有者讀和寫的權限,這樣可以允許所有者能夠顯示檔案内容和修改檔案。
三種不同的使用者類型通路一個目錄或者檔案:所有者(ownuer: u)、使用者組(group: g)或其他使用者(other: o)。
所有者建立檔案的使用者,使用者是所有使用者所建立的檔案的所有者,使用者可以允許所在的使用者組能通路使用者的檔案。通常,使用者都組合成使用者組。在這種意義上,系統内的其他所有使用者就是other使用者類。
每一個使用者它自身的讀(r)、寫(w)和執行權限(x)。
1、權限控制通路自己的檔案權限,即所有者權限。
2、權限控制使用者組通路其中一個使用者的檔案的權限。
3、權限控制其他所有使用者訪
3種權限賦予使用者不同類型讀、寫及執行權限就構成了一個有9種類型的權限組
用-l參數的ls指令顯示檔案的詳細資訊,包括權限
如下:
[CENTOS@localhost ~]$ ls -lh /var/log/
總用量 1.7M
-rw-------. 1 root root 2.4K 8月 23 20:12 anaconda.ifcfg.log
-rw-------. 1 root root 30K 8月 23 20:12 anaconda.log
-rw-------. 1 root root 43K 8月 23 20:12 anaconda.program.log
-rw-------. 1 root root 145K 8月 23 20:12 anaconda.storage.log
-rw-------. 1 root root 133K 8月 23 20:12 anaconda.syslog
-rw-------. 1 root root 31K 8月 23 20:12 anaconda.xlog
-rw-------. 1 root root 117K 8月 23 20:12 anaconda.yum.log
drwxr-x---. 2 root root 4.0K 8月 23 20:24 audit
-rw-r--r--. 1 root root 2.6K 8月 25 14:27 boot.log
-rw-------. 1 root utmp 384 8月 25 04:16 btmp
drwxr-xr-x. 2 root root 4.0K 8月 23 21:55 ConsoleKit
-rw-------. 1 root root 19K 8月 25 23:53 cron
drwxr-xr-x. 2 lp sys 4.0K 7月 24 19:09 cups
注:最前面的第2~10個字元是用來表示權限。第一個字元一般用來區分檔案和目錄。以下用二進制和十進制表示權限
權限 二進制 十進制
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
如上面的cpus檔案通路權限用十進制為
drwxr-xr-x. cups 十進制表示法:755
Linux指令之檔案系統權限管理指令,chmod、chown,chgrp,umask(遮罩碼)
chmod:改變檔案或目錄的通路權限;該指令有兩種用法:包含字母和操作符表達式設定法;包含數字的數字設定法
文法:chmod [who] [+ | - | =] [mode] 檔案名
常用選項參數
對象who有下述字母中的任一個或者任意組合:
u:user,檔案或目錄的所有者
g:group,檔案或目錄屬組
o:others,其他使用者
a:all,預設所有使用者
操作符[+ | - | =]:
+:添權重限
-:取消權限
=:賦予權限
[mode]下述字母的任意組合權限:
r(可讀),w(可寫),x(可執行)
示例:給/tmp/back.local檔案屬組添加可寫權限
删除/tmp/back.local所有可讀權限
設定/tmp/back.local檔案屬主可讀可寫,屬組、其他使用者均為可讀
chown:改變檔案的擁有者和群組
文法:chown [選項]... [所有者][:[組]] FILE...
常見選項參數
-R:處理指定目錄以及其子目錄下的所有檔案
--reference=<目錄或檔案> 把指定的目錄/檔案作為參考,把操作的檔案/目錄設定成參考檔案/目錄相同擁有者和群組
示例:改變/tmp/log/log2015.log擁有者和群組為user1
改變指定目錄以及其子目錄下的所有檔案的擁有者和群組
chgrp:改變檔案或目錄的所屬群組,使用權限是超級使用者
文法:chgrp [選項] [組] [FILE]
常見參數選項
-R:處理指定目錄以及其子目錄下的所有檔案
-v:顯示詳細的處理資訊
--reference=<目錄或檔案> 把指定的目錄/檔案作為參考,把操作的檔案/目錄設定成參考檔案/目錄相同擁有者和群組
示例:改變指定目錄以及其子目錄下的所有檔案的群組
通過GID改變檔案群組
指定檔案改變檔案的群組
umask:權限掩碼,預設情況下的umask值是022(可以用umask指令檢視)。umask是為控制預設權限,建立檔案預設權限為644,即(6-0,6-2,6-2),建立目錄預設權限為755即(7-0,7-2,7-2)
常用的umask值及對應的檔案和目錄權限
umsk(022) 目錄(755)檔案(644)
umsk(002) 目錄(775)檔案(664)
umsk(006) 目錄(771)檔案(660)
修改umask值方法
umask [mode] 注:此指令隻對目前shell有效
示例:修改umask為024,即對應的建立的檔案和目錄分别為642、753,并且隻對目前shell有效