1. 程式人生 > >用戶解析庫與文件權限

用戶解析庫與文件權限

文件權限 用戶解析庫

一、與用戶和組賬戶相關的文件

1./etc/passwd

用戶的解析庫

每一行是一條記錄,記錄一個和用戶相關的內容

root:x:0:0:root:/root:/bin/bash

1 2 3 4 5 6 7 8


1.用戶賬戶名稱

2.以前是用於保存賬戶密碼,現在使用x來表示密碼占位符

3.用戶賬戶的UID

4.用戶賬戶的GID(基本組的ID)

5.可選的,為了存放信息的目的而設,註釋信息,如用戶職位、完整名稱等

6.用戶目錄家目錄的絕對路徑

7.用戶的默認登錄shell

usermod命令實際是修改passwd文件中的字段,當使用useradd時會在passwd文件追加一行信息


2./etc/group

root:x:0:gentoo

1 2 3 4


1.組賬戶名稱

2.組賬戶密碼占位符

3.組賬戶GID

4.該以該組為附加組的用戶列表


3./etc/shadow

root:$6$t6zR/bnP6Sfa60QW$ePc6rOskoOYA9ksL9RKB4NZcFWf6zWw.sXPbhmfO/itXzJ35BWPSu2d5Lh3Cr3.LEtd9fjadEw8ogTk22q9D/0::0:99999:7:::


前半段為用戶賬戶登錄名和密碼加密字段;加密字段為:加密算法+salt+加密字符串;

: :0:99999:7: : :

1 2 3 4 5 6 7


1.最後一次修改密碼的時間,其表示法為從1970年1月1日到當前系統時間

2.用戶密碼的最短使用期限,理解為多長時間內不能更改密碼,0表示隨時可以更改密碼

3.用戶密碼的最長使用期限

4.用戶的用戶密碼的使用時間在達到使用期限前多少天開始給用戶發送警告信息,默認為七天,用戶密碼過期後 登錄會提示修改密碼

5.用戶密碼過期之後的寬限期,寬限期默認是無限,寬限期內登錄會提示修改密碼,寬限期後只能通過root用戶修改密碼

6.用戶密碼的絕對有效期,其表示法為從1970年1月1日到當前系統時間

7.保留,未被使用


4./etc/gshadow

root: : :gentoo

1 2 3 4


1.組的名稱

2.組賬戶真正的加密密碼

3.組管理員,現在廢棄

4.組成員


gpasswd 可以設置組的密碼及管理組成員

-a LOGIN_NAME GROUP_NAME 為賬戶添加附加組

-d LOGIN_NAME GROUP_NAME 為賬戶刪除附加組


newgrp 用一個新的組重新登錄到系統,需要被指定的組有正確的密碼設置



5./etc/default/useradd

用於定義創建用戶的默認屬性


# useradd defaults file

GROUP=100 GROUP=100意思是當創建用戶時創建與用戶名相同的組作為基本組

HOME=/home 在/home目錄中窗為用戶創建一個以用戶名為目錄名的目錄

INACTIVE=-1 在創建用戶時,設定密碼過期之後的寬限期,默認為-1

EXPIRE= 在創建用戶時設定用戶密碼的絕對失效日期,默認沒有啟用

SHELL=/bin/bash 默認shell

SKEL=/etc/skel 默認家目錄中的文件

CREATE_MAIL_SPOOL=yes 創建用戶時,是否直接為用戶創建郵箱文件,默認創建


6./etc/login.defs

用於定義與shadow工具有關的屬性,包括用戶郵箱路徑,密碼的時間參數、UID和GID的範圍、刪除用戶賬戶的命令、是否設置私有組(僅包含一個用戶並作為該用戶主要組的組)、權限的掩碼、家目錄的創建開關、加密算法、默認的UID和GID的選擇範圍


7./etc/skel(目錄)

為新創建的用戶的家目錄提供默認的shell配置文件



二、文件系統的權限

1.DAC:自主訪問控制

安全上下文:任何在計算機中執行的任務都是由進程來實現,因此進程有必要使用或訪問某些文件數據資源,進程和其要操作的文件之間的關系,就定義為安全上下文


在DAC模型當中,定義安全上下文的方式很簡單:


所有權

哪個用戶啟動的進程,那個用戶就是進程的所有者;進程的所有者可以變更

任何創建文件的用戶就是該文件的所有者,文件的所有者可以變更

使用權

在文件上定義的權限

三個權限:所有者權限、所屬者權限、其他人權限


安全上下文的匹配規則:

當某個進程試圖操作某個文件時,DAC將做如下規則匹配:

1)判斷進程的所有者和文件的所有者是否為同一用戶,如果是,則直接應用文件的所有者權限

2)如果不是,則進一步判斷進程的所有者是否為文件的所屬組的成員,如果是,則直接應用文件的所屬組權限

3)如果不是,則應用其他人權限


2.文件權限的構成:

使用權:MODE,Permission

三個基本權限:

r:可讀

w:可寫

x:可執行


目錄文件:

r:可以使用ls命令獲取其包含的文件名列表(目錄的內容為文件名)

w:可以在此目錄中進行文件名的創建、刪除、修改

x:可以使用ls -l命令來查看各個文件的屬性信息;在路徑中引用該目錄


非目錄文件:

r:可以利用cat類命令獲取文件中存放的數據信息

w:可以修改文件中的數據信息

x:可以將文件發起為進程


獲取權限的使用權和所有權的相關信息,可以使用ls -l

屬主權限;此權限位標識為user,簡寫為u

屬組權限:此權限位標識位group,簡寫為g

其他用戶權限:此權限為表示為other,簡寫為o

所有權限位可以統一用all標識,簡寫為a


3.數字權限標識法:

--- 000 0

--x 001 1

-w- 010 2

r-- 100 4


使用符號標識權限和數字標識權限的區別:

1.使用符號標識可以只標識某個特定的權限位,也可以同時標識所有的權限位

u=rx ug=rx u=rwx,g=rx,o=r a=rwx

2.使用數字標識法只能同時標識所有權限位

755 644 7==007


4.修改文件的使用權

chmod

1)符號標識法:

u,g,o,a 表示權限位

+,-,= 表示授權方式

+:表示在指定權限位增加權限

-:表示在指定權限位減少權限

=:將指定權限位指定為"="之後的權限

r,w,x 表示具體權限


註意:chmod +|- r|x FILE 表示在所有權限位增加或撤銷讀或執行權限

chmod +|- w FILE 表示僅在所有者權限位增加或撤銷寫權限

對於文件來說,執行權限是非常重要的安全上下文標識,因此默認情況下,所有的非目錄文件都不應該有執行權限,因為一旦非目錄具有了執行權限,則意味著該文件可以被執行,發起為進程,則可以按需使用系統資源


2) 八進制數字權限標識法

具體權限用八進制數字表示

-R 遞歸的設定目標文件或目錄


5.修改文件的所有權

chown 修改文件的屬主和屬組

~]# chown user3 test1 只修改所屬主,不改變所屬組

~]# chown user3: test2 改變所屬主,並且將所屬組改變為user3的主要組

~]# chown :user3 test3 改變所屬組,所有者不變

~]# chown user3:myuser test4 同時修改所屬組和所屬主

特別的,chown命令中可以使用 . 代替:


-R 遞歸的設置目標文件或目錄的所有權



chgrp(不常用)


mkdir

-m 在創建目錄時為其制定權限


install 復制文件


-g 設定目標文件的所屬組為指定組

-m MODE 設置權限,默認是755

-o 設定目標所有者,僅root可用

install命令不能復制目錄,即不能以目錄為源文件,如果其源文件是一個目錄,則install命令會進入該目錄,依次復制其中所有非目錄


6.特殊權限

1)SUID

僅設置在可執行文件上,默認情況下,當用戶去執行此類文件時,被發起的進程的所有者不是進程的發起者而是該文件的所有者;SUID在屬主的權限位中的執行權限位,如果屬主具有執行權限則表示為s,如果沒有則顯示為S


管理SUID權限:

1.符號標識法:chmod u+s FILE

2.數字表示法:chmod 4755 FILE


2)SGID

可設置在可執行文件或目錄上(一般都設置在目錄上),如果某個目錄設置了SGID權限,並且對於某些組內用戶有寫權限,則所有在此目錄中創建的新文件和目錄的所屬組均為其父目錄的所屬組,而並非發起用戶所在的主要組;SGID在屬組的權限位中的執行權限位,如果屬組具有執行權限則表示為s,如果沒有則顯示為S


管理SGID權限:

1.符號標識法:chmod g+s DIR

2.數字表示法:chmod 2755 DIR


3)STICKY

僅設置在目錄的其他用戶權限位的執行權限上


如果在某個目錄上的權限設置為多個用戶都擁有寫權限,那就意味著凡是擁有寫權限的用戶都能直接管理該目錄中的所有文件名,包括改名文件及刪除文件名等操作,因此需要再這樣的目錄上設置STICKY特殊權限;如果此類目錄設置了STICKY,則所有用戶即便擁有寫權限也僅能刪除所有者為其自身的文件


STICKY權限的顯示位置:在目錄的其他用戶的權限位的執行權限上,如果該權限為本來有執行權限,則顯示為t,否則為T


管理STICKY權限:

1.符號標識法:chmod o+t DIR

2.數字表示法:chmod 1770 DIR


7.權限遮罩碼:umask

作用:創建目錄或文件時,被創建出來的文件或目錄的默認權限上刪除遮罩碼上對應的權限


註意:在創建和文件時,默認不設置特殊權限

對於目錄:默認權限為0777-umask

對於非目錄:默認權限為0666-umask


unmask NUMBER 設置遮罩碼

unmask 顯示當前遮罩碼


umask配置文件在/etc/bashrc

如果用戶的UID大於199且用戶名和基本組名相同時,則遮罩碼為002,否則為022


8.文件的擴展屬性

lsattr

MODE:+-=[aAcCdDeijsStTu]

a:在向文件寫數據時,只能以附加的方式進行寫操作;文件的內容不能被更改和刪除,一般會為日誌文件設置此屬性;

A:文件的訪問時間戳控制屬性,對於並發訪問較高的文件應該設置此屬性防止IO高負荷

c:設置是否自動壓縮之後再儲存

C:是否開啟寫時復制功能

d:在使用dump備份文件系統時,跳過屬性設置為d的文件

D:設置文件在文件系統中的異步寫操作

i:設置文件不能被刪除,改名及設定鏈接關系

s:設置文件的保密性刪除

u:與s相反,文件被刪除,儲存器中會繼續保存其中內容,僅僅是刪除了文件名


9.FACL(filesystem access control list),文件系統訪問控制列表,要向應用此功能,必須要讓文件系統支持,默認支持

FACL為文件系統的額外賦權機制;在原有的u,g,o權限之外,讓普通用戶能夠控制權限賦予另外的用戶或組的一種賦權機制


這種機制在CentOS或者RHEL7之後的發行版本中,才逐漸成熟;

與FACL相關的命令


setfacl FILE

-m acl_spec 為指定文件設置acl_sepc

-x acl_spec 將acl_spec從指定文件上溢出


acl_spec:acl_specification,acl規格,訪問控制列表

u:USERNAME:MODE

g:USERNAME:MODE

MODE一般使用符號權限標識法標識的權限


示例:為文件賦予指定用戶的額外訪問權限

setfacl -m u:link:rwx /tmp/temp


撤銷指定文件的額外訪問權限

setfacl -x u:link /tmp/temp


註意:如果設置了FACL之後,再修改目標文件的試用權限,那麽FACL中設置的權限條目可能受到影響而導致授權失敗;因此,為了保證沒有此項幹擾,應該先調整目標文件或目錄的權限,再設置FACL



getfacl FILE


用戶解析庫與文件權限