2010年5月28日 星期五

檔案基本權限管理-自我筆記

檔案基本權限管理
指的權限一般我們是指針對檔案內容的存取能力,不是僅就檔案本身!
例如:使用者 a可以讀取/etc/passwd檔案內容,因此他便具備檔案內容的存取權限。

檔案基本權限檢視
linux ox中每個檔案都會擁有一個基本權限的記錄(指令ls –l):如圖
-rw-r--r--
1
root
root
4096
126 02:09
passwd
檔案屬性
連結數量
檔案擁有者
檔案擁有群組
檔案大小
時間戳記
檔案名稱
一個檔案的完整資訊中包含了七個欄位的資訊,只有其中的 檔案屬性、檔案擁有者、檔案擁有群組和權限有關聯(其它的不會影響設定與使用)

檔案屬性:是由10個字元共同組成,第一個字元表示檔案的類型,2~10稱為權限模式,9個字元又會每三個字元為一組。
檔案擁有者
通常會用英文字母u來代表檔案擁有者的權限欄位
檔案擁有群組
通常會用英文字母g來代表檔案擁有群組的權限欄位
其他使用者
通常會用英文字母o來代表其它使用者的權美欄位
R
讀取檔案內容的權限
顯示存放目錄內的檔案名稱
W
變更檔案內容的權限
目錄內進行新增、刪除、搬移、更名等檔案操作
X
執行檔案內容的權限
進入目錄內或檢式存放於目錄的檔案完整內容
  檔案類型         檔案擁有群組權限(g)
-  rw-  r--  r--
檔案擁有者權限(u) 其它使用者權限(o)
檔案擁有者:欄位中會顯示檔案的擁有者是誰,通常有二種情況下可以成為檔案的擁有者
            1.建立這檔案的使用者預設會成為檔案擁有者
            2.透過chown指令將使用者設定為檔案的擁有者
檔案擁有群組:欄位中會用來顯示檔案擁有群組帳號是誰,二種情況下
1.      建立這個檔案的使用者所使用的主要群組預設會成為檔案的擁有群組
2.      透過chgrp指偷將群組帳號設定為檔案的擁有群組

變更檔案權限
Chmod變更檔案的存取權限,有二種方法,數字類型改變檔案權限、符號類型改變檔案權限。
數字類型改變檔案權限:r=4 w=2 x=1
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0
chmod [-R] xyz 檔案或目錄
選項與參數:
 xyz : 就是剛剛提到的數字類型的權限屬性,為 rwx 屬性數值的相加。
-R : 進行遞迴(recursive)的持續變更,亦即連同次目錄下的所有檔案都會變更


符號類型改變檔案權限
chmod
u
g
o
a
+(加入)
-(
除去)
=(
設定)
r
w
x
檔案或目錄
Chmod u=rwx,go=rx passwd

變更檔案擁有者權限:chown變更檔案擁有者、chgrp案有群組
chown [-R] 帳號名稱 檔案或目錄
chown [-R] 帳號名稱:群組名稱 檔案或目錄
選項與參數:
-R : 進行遞迴(recursive)的持續變更,亦即連同次目錄下的所有檔案都變更

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








檔案特殊權限功能
特殊權限
檔案
目錄
說明
Setuid
1.      檔案擁有者需具備x的執行權限
2.      程式執行以檔案擁者決定

也稱suid,在os中,當使用者存取某檔案時,系統會判斷存取者是否符合流程中的權限需求,如符合便賦予,否則不賦予。
Setgid
1.      檔案擁有群組需具備x的執行權限
2.      程式執行以檔案擁群組決定
1.      目錄的檔案擁有群組需具備wx權限
2.      在目錄內新建立的檔案將會copy目錄的檔案擁有群組作為檔案的擁有群組
唯一支援檔案與目錄的權限設定,針對檔案的運作方式與功能與suid相同。只要將目錄的w權限開啟後便允許符合的使用者,所產生的檔案會以產生檔案的使用者設定權限。
stickybit

1.      目錄的其他使用者需具備wx權限
2.      只有結級使用者與檔案擁有者可在目錄內刪除檔案
針對目錄所存在的,允許所有user在目錄上產生新檔,但僅許檔案擁有者和超級使用者可以刪檔的權限。
特殊權限的開啟與關閉
u
g
o
欄位
{+-}
s
s
t
權限
Setuidchmod u+s vi(vi編輯器程式)
Setuid並非是將使用者切換到檔案擁有者的身分去執行程式檔案,而是讓使用者暫時具備有檔案擁有者的權限去執行程式檔案。

S
x權限欄位出現表該程式檔案沒有具備執行權限
s
x權限欄位出現表該程式檔案有具備執行權限

Setgidchmod g+ws 檔案名稱:在檔案擁有群組權限欄位會變更為rws
Sticky bitchmod o+t 目錄名稱:在其他使用者權限欄位中的x執行權變成t,僅對其他使用者有斷影響。
T
x權限欄位出現表該目錄沒有具備執行權限
t
x權限欄位出現表該目錄有具備執行權限


存取控制清單ALC的使用
權限管理機制(Access Control List,ALC):提供傳統的基本權限外,還開放更細部權限設定功能,可對單一使用者、單一檔案或目錄進行權限規範。
在每個檔案或目錄中如啟用了acl權限規則時,原先的ACL entry ownerother所配置的基本權限都是永久有效的,不受其它規則所影響
User class
指的是使統POSIX標準檔案的權限:例如ugo
Acces ACL
用來決定檔案或是目錄可以由哪個使用者帳號或是群組帳號進行存取。又稱為基本型ACL
Default ACL
針對目錄所進行的權限規範
語法:setfacl –d –m g:newgrp:rw 目錄名稱
ACL entry
組成ACL規則的最小單位,每一個檔案或是目錄的acl權限都是由ACL entry所組成的。
型態
格式
named user
user:lpi_yang:rw-
Named gropu
group:newgrp:r--
mask
mask::rwx
Owner
user::rw-
Onwer group
group::r-x
other
other::rwx
檔案或目錄增加mask ACL entry,則會影響原先檔案上的named usernamed groupowner group的有效權限變化。
ACL規則語法 :
{ugo}:{使用者、群組帳號、其它使用者的名稱}:設定的權限 檔名
getfacl:取得某個檔案/目錄的 ACL 設定項目;
setfacl:設定某個目錄/檔案的 ACL 規範。
setfacl [-bkRd] [{-m|-x} acl參數] 目標檔名
選項與參數:
-m :設定後續的 acl 參數給檔案使用,不可與 -x 合用;
-x :刪除後續的 acl 參數,不可與 -m 合用;
-b :移除所有的 ACL 設定參數;
-k :移除預設的 ACL 參數,關於所謂的『預設』參數於後續範例中介紹;
-R :遞迴設定 acl ,亦即包括次目錄都會被設定起來;
-d :設定『預設 acl 參數』的意思!只對目錄有效,在該目錄新建的資料會引用此預設值
# 1. 針對特定使用者的方式:
# 設定規範:『 u:[使用者帳號列表]:[rwx] 』,例如針對 vbird1 的權限規範 rx
[root@www ~]# touch acl_test1
[root@www ~]# ll acl_test1
-rw-r--r-- 1 root root 0 Feb 27 13:28 acl_test1
[root@www ~]# setfacl -m u:vbird1:rx acl_test1
[root@www ~]# ll acl_test1
-rw-r-xr--+ 1 root root 0 Feb 27 13:28 acl_test1
# 權限部分多了個 + ,且與原本的權限 (644) 看起來差異很大!但要如何查閱呢?

[root@www ~]# setfacl -m u::rwx acl_test1
[root@www ~]# ll acl_test1
-rwxr-xr--+ 1 root root 0 Feb 27 13:28 acl_test1
# 無使用者列表,代表設定該檔案擁有者,所以上面顯示 root 的權限成為 rwx 了!
上述動作為最簡單的 ACL 設定,利用『 u:使用者:權限 』的方式來設定的啦!設定前請加上 -m 這個選項。 如果一個檔案設定了 ACL 參數後,他的權限部分就會多出一個 + 號了!但是此時你看到的權限與實際權限可能就會有點誤差! 那要如何觀察呢?就透過 getfacl 吧!
Getfacl:當你讀取檔案中所存放的acl設定則要透過getfacl來完成。
[root@www ~]# getfacl filename
選項與參數:
getfacl 的選項幾乎與 setfacl 相同!所以鳥哥這裡就免去了選項的說明啊!
 
# 請列出剛剛我們設定的 acl_test1 的權限內容:
[root@www ~]# getfacl acl_test1
# file: acl_test1   <==說明檔名而已!
# owner: root       <==說明此檔案的擁有者,亦即 ll 看到的第三使用者欄位
# group: root       <==此檔案的所屬群組,亦即 ll 看到的第四群組欄位
user::rwx           <==使用者列表欄是空的,代表檔案擁有者的權限
user:vbird1:r-x     <==針對 vbird1 的權限設定為 rx ,與擁有者並不同!
group::r--          <==針對檔案群組的權限設定僅有 r 
mask::r-x           <==此檔案預設的有效權限 (mask)
other::r--          <==其他人擁有的權限囉!

# 2. 針對特定群組的方式:
# 設定規範:『 g:[群組列表]:[rwx] 』,例如針對 mygroup1 的權限規範 rx 
[root@www ~]# setfacl -m g:mygroup1:rx acl_test1
[root@www ~]# getfacl acl_test1
# file: acl_test1
# owner: root
# group: root
user::rwx
user:vbird1:r-x
group::r--
group:mygroup1:r-x  <==這裡就是新增的部分!多了這個群組的權限設定!
mask::r-x
other::r--
 
# 3. 針對有效權限(使用者或群組所設定的權限必須要存在於 mask 的權限設定範圍內才會生效,此即『有效權限 (effective permission))
mask 的設定方式:
# 設定規範:『 m:[rwx] 』,例如針對剛剛的檔案規範為僅有 r 
[root@www ~]# setfacl -m m:r acl_test1
[root@www ~]# getfacl acl_test1
# file: acl_test1
# owner: root
# group: root
user::rwx
user:vbird1:r-x        #effective:r-- <==vbird1+mask均存在者,僅有 r 而已!
group::r--
group:mygroup1:r-x     #effective:r--
mask::r--
other::r--
 

檢視與設定檔案的隱藏屬性
------------- 13個隱藏屬性資訊未啟動
Lsattr
檢視隱藏屬性lsattr 檔案
Chattr
啟用對應的隱藏屬性 chattr 參數 檔案



沒有留言:

張貼留言