一、檔案權限
讀、寫、執行權限的意義
對于普通檔案
r:表示讀取檔案的内容的權限。
例如讀取一個文本檔案的文字;
對某檔案執行複制操作時,需使用者對該檔案有“r”權限4。
w:表示編輯修改檔案内容的權限(但不含删除該檔案)。
x:表示檔案是否可以被執行。
windows可通過檔案擴充名判斷檔案是否可以被執行,而linux的檔案名并無特别意義,檔案是否可執行完全看是否有此權限。
對于目錄檔案
r:表示讀取目錄結構清單的權限,即可使用指令“ls”檢視目錄中的檔案名清單。
目錄的主要内容就是記錄檔案名清單。
w:表示更改目錄結構清單的權限,即:
可在該目錄建立新的目錄或檔案;
可在該目錄删除已存在的目錄或檔案,不論被删除的檔案權限為何;
這裡寫圖檔描述
可在該目錄重命名已存在的目錄和檔案;
可在該目錄剪切已存在的目錄和檔案等。
綜上,“w”權限對目錄來講可了解為,變動該目錄下的檔案名清單的權限。
x:表示能否切換到該目錄作為目前工作目錄,即:
可使用指令“cd”至該目錄;
可讀取、執行該目錄下的檔案(如果檔案本身開放讀、執行權限的話),若目錄無“x”權限,則無法讀取、執行該目錄下的檔案;
1.mask –能夠賦予使用者權限的最大值
umask相當于chmod 的補碼。
臨時修改
umask ##顯示系統預留權限值
umask 077 ##臨時修改umask值
永久修改
70 if [ $UID -gt 199 ] && [ “ ” = “ ” ]; then 71 umask 002 ##普通使用者的更改 72 else 73 umask 022 ##超級使用者的更改 74 fi |
59 if [ $UID -gt 199 ] && [ “ ” = “ ” ]; then 60 umask 002 61 else 62 umask 022 63 fi |
2.chmod更改檔案權限
使用方式 : chmod [-cfvR] [–help] [–version] mode file…
說明 : Linux/Unix 的檔案調用權限分為三級 : 檔案擁有者、群組、其他。利用 chmod 可以藉以控制檔案如何被他人所調用。
參數 :
u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬于同一個群體(group)者,o 表示其他以外的人,a 表示這三者皆是。 + 表示增權重限、- 表示取消權限、= 表示唯一設定權限。 r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示隻有當該檔案是個子目錄或者該檔案已經被設定過為可執行。 -c : 若該檔案權限确實已經更改,才顯示其更改動作 -f : 若該檔案權限無法被更改也不要顯示錯誤訊息 -v : 顯示權限變更的詳細資料 -R : 對目前目錄下的所有檔案與子目錄進行相同的權限變更(即以遞回的方式逐個變更) |
範例 :将檔案 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 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 效果相同。
[root@localhost mnt]# chmod 600 /mnt/happig.sql
[root@localhost mnt]# ls -l happig.sql
-rw------- user group May : happig.sql
二、檔案權限管理
1.setfacl –設定檔案執行清單
setfacl
-m, –modify=acl modify the current ACL(s) of file(s) -M, –modify-file=file read ACL entries to modify from file -x, –remove=acl remove entries from the ACL(s) of file(s) -X, –remove-file=file read ACL entries to remove from file -b, –remove-all remove all extended ACL entries |
eg:
setfacl -m u:lisa:rwx file 更改使用者lisa對file檔案權限
setfacl -x g:staff file 移除file檔案中staff組權限資訊
setfacl -b file 移除file檔案中其他組/使用者權限資訊
2.getfacl –擷取檔案執行權限
[kiosk@foundation55 Desktop]$ getfacl file
# file: file
# owner: kiosk
# group: kiosk
user::rwx
group::rw-
other::r-x --ACL(Acess Control Lists )
3.chmod – change file mode bits
用法:chmod [OPTION]… MODE[,MODE]… FILE…
-R, –recursive 更改目錄和目錄下所有檔案的執行權限
eg:
[kiosk@foundation55 Desktop]$ chmod file
# file: file
# owner: kiosk
# group: kiosk
user::rwx
group::rw-
other::r-x
4.檔案屬性檢視
指令ls,用于列出(list)各檔案。
預設僅顯示非隐藏檔案檔案名。
選項:
選項“-a”:顯示包括隐藏檔案在内的所有檔案名。
檔案名第一個字元為“.”的即為隐藏檔案。
[root@foundation41 fileproprity]# ls -a
. .. .
選項“-d”:若參數為目錄1,該選項表示僅列出目錄本身,而非目錄内的檔案。
[root@foundation41 fileproprity]# ls -d
.
選項“-R”:若參數為目錄,該選項表示連同子目錄及其下檔案都列出。
[[email protected] fileproprity]# ls -l
total 0
-rw-r--r-- 1 root root 0 May 27 11:12 1
-rw-r--r-- 1 root root 0 May 27 11:12 2
-rw-r--r-- 1 root root 0 May 27 11:12 3
選項“-l”:列出詳細的檔案和屬性。
[[email protected] fileproprity]# ls -l
total 0
-rw-r--r-- 1 root root 0 May 27 11:12 1
-rw-r--r-- 1 root root 0 May 27 11:12 2
-rw-r--r-- 1 root root 0 May 27 11:12 3
各字段以空格分隔,各字段意義:
共10個字元。第一個字元表示檔案類型2;後9個字元,每3個一組分别表示檔案屬主(u)、屬組(g)、其他使用者(o)對于此檔案是否有讀(r)、寫(w)、執行(x)權限。
該檔案被硬連結的次數。
檔案屬主。
檔案屬組。
檔案大小,預設機關為B。
檔案内容最近一次被修改的時間,即mtime。
檔案名。
[[email protected] upload]# ls -l config_global_default.php
-rwxrwxrwx root root Dec config_global_default.php
[1] ##檔案類型
- #普通檔案 d #目錄 s #socket套接字 l #軟連結 p #管道 c #字元裝置 b #塊裝置 |
[3] #檔案内容被系統記錄的次數
[4] #檔案擁有者
[5] #檔案所在組
[6] #檔案大小
[7] #檔案最後一次被更改的時進
[8] #檔案名稱
5.檢視目錄屬性
ls -ld directoy
[root@localhost html]# ls -ld upload/
drwxrwxrwx root root May : upload/
[1] ##類型(同檔案) [2] ##權限 [3] ##子目錄個數 [4] ##目錄擁有者 [5] ##目錄所在組 [6] ##目錄中内容的屬性的大小 [7] ##目錄中檔案增加或減少或被更名的時間 [8] ##目錄名稱 |
三、檔案使用者組的更改
1.更改檔案/目錄所屬使用者
chown 使用者名稱 檔案 ##更改檔案所有人
[root@localhost mnt]# chown user happig.sql
[root@localhost mnt]# ls -l happig.sql
-rw-r--r-- user group May : happig.sql
chown -R 使用者 目錄 ##更改目錄本身以及目錄中的子檔案的所有人
[[email protected] mnt]# chown -R user Directory/
[[email protected] mnt]# ls -lR Directory
Directory:
total 0
-rw-r--r-- 1 user root 0 May 27 04:37 file1
-rw-r--r-- 1 user root 0 May 27 04:37 file2
2.更改檔案/目錄組
chgrp 組名稱 檔案 ##更改檔案所有組
[root@localhost mnt]# chgrp group happig.sql
[root@localhost mnt]# ls -l happig.sql
-rw-r--r-- root group May : happig.sql
chgrp -R 組名 目錄 ##更改目錄本身以及目錄中的子檔案的所有組
[root@localhost mnt]# chgrp -R group Directory/
[root@localhost mnt]# ls -l Directory
total
-rw-r--r-- user group May : file1
-rw-r--r-- user group May : file2