天天看點

Linux下的檔案權限管理

一、檔案權限

讀、寫、執行權限的意義

對于普通檔案
    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 ] && [ “

id -gn

” = “

id -un

” ]; then

71 umask 002 ##普通使用者的更改

72 else

73 umask 022 ##超級使用者的更改

74 fi

59 if [ $UID -gt 199 ] && [ “

id -gn

” = “

id -un

” ]; 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
           

繼續閱讀