用戶賬戶和組賬戶的的相關文件及文件權限介紹
與用戶賬戶和組賬戶相關的文件:
/etc/passwd
/etc/group
/etc/shadow
/etc/gshadow
/etc/default/useradd
/etc/login.defs
/etc/skel(Directory)
/etc/passwd:
root:x:0:0:root:/root:/bin/bash
1 2 3 4 5 6 7
1.用戶賬戶登錄名稱;
2.使用“x”表示密碼占位符;
3.用戶賬戶的UID;
4.用戶賬戶的GID,即該用戶賬戶的基本組的ID;
5.註釋信息如用戶職位、用戶完整名稱等;
6.用戶賬戶家目錄的絕對路徑;
7.用戶的默認登錄shell
/etc/group
root:x:0:gentoo
1 2 3 4
1.組賬戶名稱;
2.組賬戶密碼占位符;
3.組賬戶的GID;
4.以該組為附加組的用戶列表,多個用戶之間使用“,”分隔;
/etc/shadow
root:$6$1osUNf6.3L1leJlU$AoKGLJDxcmkWGmXxfxNm2OB79MIlyCgp3hVnUQSRpDfUsIlS2ZJI0J7goegN09qH.JlTktRapf8CLzQIA9zGT0::0:99999
1 2 3 4 5
:7:::
6789
1.用戶賬戶登錄名;
2.密碼的加密算法+salt+密碼的加密結果;$可以看作是這三部分分隔符
3.最後一次修改密碼的時間,其表示法為從1970年1月1日到當前系統時間所表示的日期的天數;
4.用戶密碼的最短使用期限,可以理解為多長時間內不能更改密碼;
5.用戶密碼的最長使用期限,得以理解為多長時間內無需改密碼也可以正常登陸;
6.用戶密碼的使用時間達到最常使用期限之前多少天開始,在用戶登錄到系統時發送警告信息;
7.用戶密碼過期之後的寬限期,可以理解為密碼過期之後的多少天內,登錄系統時仍然可以提示修改密碼;
8.用戶密碼的絕對失效時間,其表示法為從1970年1月1日到指定日期時間的天數; usermod -e 可修改
9.保留,未被使用;
/etc/gshadow
root:::user1,mysuser
1.組賬戶名稱;
2.組賬戶的加密密碼;
3.組管理員,現在廢棄了;
4.以該組為附加組的用戶賬戶列表;
gpasswd :設置組的密碼及管理組成員
gpasswd - 管理員 /etc/group 和 /etc/gshadow
格式:gpasswd [選項] group
-a USERNAME:將-a選項指定的用戶添加到指定組
-d USERNAME:將-d選項指定的用戶從指定的組中移除
newgrp :用一個新的組重新登錄到系統,需要被指定的組有正確密碼設置
格式:newgrp [-] [group]
/etc/default/useradd
作用:定義創建用戶時的用戶屬性的默認值的文件
GROUP=100
//在創建用戶時,如果沒有為用戶指定基本組,那麽系統會為用戶制定一個與用戶名相同的組此組作為其基本組;
HOME=/home
//在創建用戶時,如果沒有為用戶指定家目錄,則會在/home目錄中創建一個與用戶名同名的目錄作為其家目錄;
INACTIVE=-1
//在創建用戶時,設定用戶密碼過期之後的寬限期,默認為-1,意味著關閉用戶密碼過期期限的功能,即寬限期為永久;
EXPIRE=
//在創建用戶時,設定用戶的默認登錄shell,默認為/bin/bash;
SHELL=/bin/bash
//在創建用戶時,為用戶的家目錄提供默認文件的模板;
CREATE_MAIL_SPOOL=yes
//在創建用戶時,是否直接為用戶創建郵箱文件,默認創建;
/etc/login.defs
作用:定義shadow_utils相關的屬性,包括用戶郵箱路徑、密碼的時間參數、UID和GID的範圍,刪除用戶賬戶的命令、是否設置私有組(僅包含一個用戶並作為該用戶主要組)、權限位掩碼、家目錄創建開關、密碼的加密算法;
MAIL_DIR /var/spool/mail
//指定創建用戶時指定用想文件的路徑;
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
//與密碼的時間參數有關的設置;
UID_MIN 1000
UID_MAX 60000
# System accounts
SYS_UID_MAX 999
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 1000
GID_MAX 60000
# System accounts
SYS_GID_MIN 201
SYS_GID_MAX 999
//指定默認的ID選擇範圍;
#USERDEL_CMD /usr/sbin/userdel_local
//指定刪除用戶時使用的命令;
CREATE_HOME yes
//是否在創建用戶時為用戶創建家目錄的開關;
UMASK 077
//指定用戶家目錄的默認權限的掩碼;
USERGROUPS_ENAB yes
//是否開啟私有組開關
ENCRYPT_METHOD SHA512
//使用何種算法加密密碼
/etc/skel
作用:為新創建的用戶的家目錄提供默認的[shell配置]文件
文件系統的權限管理:
普通權限
特殊權限
文件的擴展屬性
FACL(文件系統訪問控制列表)
DAC:自主訪問控制;
安全上下文:
任何在計算機中執行的任務都是由進程實現的;
進程有必要訪問和使用文件或某些數據資源;
進程和其要操作的文件之間的關系可以定義為安全上下文;
在DAC模型中,定義安全上下文的方式很簡單:
所有權
任何啟動進程的用戶就是該進程的所有者;進程的所有者也可以變更;
任何創建文件的用戶就是該文件的所有者,文件的所有者是可以變更的;
使用權
在文件上面定義的對該文件的特定使用過濾規則;
三個權限:所有者權限、所屬組權限、其他人權限;
安全上下文的匹配規則:
當某個進程想要試圖操作某個文件時,DAC將作如下規則匹配:
1.判斷進程的所有者和文件的所有者是否為同一用戶,如果是,則直接應用文件的所有者權限;
2.如果不是,進一步判斷進程的所有者是否為文件的所屬組的成員,如果是,則直接應用文件的所屬組權限;
3.如果不是,直接應用其他人權限;
文件權限的構成:
使用權:MODE,Permission
三個基本權限:
r:Readable,可讀;
w:Writable,可寫:
x:eXecutable,可執行;
目錄文件:
r:可以使用ls命令獲取其中所包含的文件的文件名列表;
w:可以在此目錄中進行文件名修改(創建、刪除、修改):即:可以創建文件名,刪除文件名及修改文件名
x:可以使用ls -l命令來查看各個文件的屬性信息;在路徑中引用該目錄;
非目錄文件:
r:可以利用cat類的命令獲取文件中存放的數據信息;
w:可以修改(添加,修改,刪除,覆蓋)文件中所存放的信息;
x:可以將文件發起為進程;
獲取使用權和所有權的相關信息:
ls -l[d] /PATH/SOMEFILE
rwxr-xr-x.:三個權限位(屬主/所有者,屬組/所屬組,其他用戶)
屬主權限:rwx,此權限位標示為user,簡寫為u;
屬組權限:r-x,此權限位標示為group,簡寫為g;
其他用戶權限:r-x,此權限位標示為other,簡寫為o;
所有權限位可以統一用all標識,簡寫為a;
註意:“-”表示在該權限位上不具備指定權限;
rwx組合稱為“權限標識三元組”
數字權限標識:二進制數字標識,在對應的權限位上有權限則為1,無權限則為0;
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
使用符號標識權限和數字標識權限的區別:
1.使用符號標識法可以只標識某個特定的權限位,也可以同時標識所有的權限位;
示例:
u=rx;ug=rwx;u=rwx,g=rx,o=r;a=rwx
2.使用數字標識只能同時標識所有權限位;
示例:
755;644;7==007;75==075
修改文件的使用權:
chmod - change mode
格式:chmod [options] …MODE[,MODE]…FILE
chmod [options] …OCTAL-MODE FILE…
chmod [options] …--reference=RFILE FILE…
MODE:符號權限標識法:
u,g,o,a:標識權限位;
+,-,=:表示授權方式;
+:表示在指定的權限位上增加指定權限;如果新增的權限是已經存在的權限,則結果相比授權之前無變化;
-:表示在指定的權限位上撤銷指定權限;如果撤銷的權限是未存在的權限,則結果相比授權之前無變化;
=:表示在指定的權限位上精確授權;此種授權方式不考慮該權限位原有的權限設定的;
r,w,x:表示具體的權限;
註意:
chmod +/- r/x FILE:在所有的權限位上增加或撤銷讀或執行權限;
chmod +/- w FILE:僅在所有者權限位上增加或撤銷寫權限;
註意:
對於文件來說,執行權限是非常重要的安全上下文標識,因此默認情況下,Linux中所有的非目錄文件都不應該有執行權限;因為一旦非目錄具有了執行權限,則意味著該文件可以被執行,發起為進程,則可以按需使用系統資源;
OCTAL-MODE:八進制數字標識法
示例:
# chmod 640 root.txt(給此文件賦予權限rw-r-----)
--reference=RFILE
示例:
# chmod --reference=/etc/shadow root.txt
//參考/etc/shadow文件的權限為root.txt設置相同權限
常用選項:
-R,--recursive:遞歸地設置目標文件或目錄的權限(目錄裏的文件都有相同的權限);(使用時要確保安全性因為文件被授予執行權限 很危險)
修改文件的所有權:
chown
chown - change file owner and group//修改文件的屬主和屬組
格式:chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
示例:
~]# chown user3 test1 :只修改文件的所有者變更為user3 所屬組不變
~]# chown user3: test2 :文件的所有者變為user3,所屬組為user3的主要組
~]# chown :user3 test3 :文件的所有者沒變,所屬組為user3
~]# chown user3:myser test4 :文件的所有者為user3,文件的所屬組為myser
註意:在使用chown命令時,特別的,可以使用“.”代替“:”;
常用選項:
-R,--recursive:遞歸的設置目標文件或目錄的所有權;
註意:對於文件來說,普通用戶可以修改所有者為自己的文件的使用權,但無法修改文件的所有權,修改文件的所有權只能是root用戶可以完成;
chgrp(不常用)
chgrp - change group ownership
格式:chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
註意:chown和chgrp命令所指定的用戶和組,既可以使用戶名和組名,也可以是UID和GID;
mkdir
-m MODE:在創建目錄時為其指定權限
install命令:
install - copy files and set attributes
格式:install [OPTION]... [-T] SOURCE DEST
單源復制,為復制後的文件增加執行權限
install [OPTION]... SOURCE... DIRECTORY
多源復制,為復制後的文件增加執行權限
install [OPTION]... -d DIRECTORY...
創建目錄
常用選項:
-g, --group=GROUP
set group ownership, instead of process‘ current group
//設定目標文件的所屬組為指定組,而不是進程所有者的主要組;
-m, --mode=MODE
set permission mode (as in chmod), instead of rwxr-xr-x
//設定目標文件的權限,而不是rwxr-xr-x;
-o, --owner=OWNER
set ownership (super-user only)
//設定目標文件的所有者,僅root可用;
註意:install命令,不能復制目錄,即不能以目錄為源文件;如果其源文件是一個目錄,則stall命令會進入該目錄,依次復制其中的所有非目錄文件到目標位置;
特殊權限:
SUID,SGID,STICKY
SUID:SUID僅設置在可執行的文件上,默認情況下,當用戶執行此類可執行文件時,被發起的進程的所有者不是進程的發起者,而是可執行文件的所有者;換句話說,進程以文件所有者的身份運行;
SUID權限所顯示的位置:文件的屬主的權限位中的執行權限位上,如果屬主本來就具有執行權限,則顯示為“s”;如果屬主本來沒有執行權限則顯示為“S”;
管理SUID權限:
1.符號標識法:chmod u+s FILE
2.數字標識法:chmod 4755 FILE
SGID:SGID可設置在可執行文件或目錄的屬組權限位的執行權限上,
如果某個目錄設置了SGID權限並且對於某些用戶有寫權限,則所有在此目錄中創家的新文件和目錄的所屬組均為其父目錄的所屬組,而並非發起進程者的主要組;
SGID權限的顯示位置:文件的屬組權限位上的執行權限上;如果屬組本來就有執行權限,則顯示為“s”,否則,就顯示“S”;
管理SGID權限:
1.符號標識法:chmod g+s FILE
2.數字標識法:chmod 2770 DIR
STICKY:STICKY僅設置在目錄的其他用戶權限位的執行權限上;
如果在某個目錄上的權限設置為多個用戶都擁有寫權限,那就意味著凡使用有寫權限的用戶都能直接管理該目錄中的所有文件名,包括該名文件及刪除文件名等操作,因此需要在這樣的目錄上設置STICKY特殊權限;如果此類目錄設置了STICKY,則所有用戶即便用有寫權限,也僅能刪除或改名所有者為其自身的文件;
STICKY權限的顯示位置,在目錄的其他用戶的權限位的執行權上;如果該權限位本來有執行權限,則顯示為“t”,否則顯示為“T”;
管理STICKY權限:
1.符號標識法:chmod o+t DIR
2.數字標識位:chmod 1777 DIR
權限遮罩碼:umask
作用:在創建目錄或文件時被創建出來的目錄或文件的默認權限上要刪除遮罩碼上所對應的權限;
註意:在創建目錄或文件時,默認不會設置特殊權限;
對於目錄:默認的權限為0777-umask 0777-0033=0744
對於非目錄文件:默認的權限位0666-umask 0666-0033=0644
umask[OCTAL-MODE]
默認設置遮罩碼的文件:/etc/bashrc
規則:如果用戶的UID大於199並且用戶的用戶名和主要組的組名相同,則遮罩碼為002,否則遮罩碼為022;
文件的擴展屬性:
lsattr:
lsattr - 顯示文件在Linux第二擴展文件系統上的特有屬性
格式:lsattr [ -RVadv ] [ files... ]
chattr:
chattr - 修改文件在Linux第二擴展文件系統(E2fs)上的特有屬性
格式:chattr [ -RV ] [ -v version ] [ mode ] files...
mode可以是:+-=[aAcCdDetjsStTu]
+:表示在指定的權限位上增加指定權限;如果新增的權限是已經存在的權限,則結果相比授權之前無變化;
-:表示在指定的權限位上撤銷指定權限;如果撤銷的權限是未存在的權限,則結果相比授權之前無變化;
=:表示在指定的權限位上精確授權;此種授權方式不考慮該權限位原有的權限設定的;
a:在向文件寫數據時,只能以附加的形式進行寫操作;文件的內容不能被更改或刪除;
A:atime,文件的訪問時間戳控制屬性;對於並發訪問量較大或者並發訪問頻率較高的文件,應該設置此屬性以降低IO成本;防止IO瓶頸;
c:是否自動壓縮之後再存儲;
C:是否開啟“寫時復制”;
d:使用dump備份文件系統時,跳過屬性設置為d的文件;
D:設置文件的文件系統中的異步寫操作;
i:設置文件不能被刪除,改名及設定連接關系;
s:設置文件的保密性刪除;
u:與s屬性相反,如果此類文件被刪除,則在存儲器中會繼續保存其內容;
FACL:
Filesystem Access Control List,文件系統訪問控制列表
想要應用此功能,必須讓文件能夠支持
FACl為文件系統的額外賦權機制;
在原有的u,g,o權限位之外,讓普通用戶能夠控制權限賦予另外的某個指定的用戶或組的一種賦權機制;
這種機制在centos或者RHEL7之後的發行版本中才逐漸成熟;
與FACL相關的命令:
getfacl:
getfacl - get file access control lists
格式:getfacl [-aceEsRLPtpndvh] file ...
getfacl [-aceEsRLPtpndvh] -
setfacl:
setfacl - set file access control lists
格式:setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file ...
setfacl --restore=file
常用到的選項:
-m acl_spec:為指定文件設置acl_spec
-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;
本文出自 “運維” 博客,謝絕轉載!
用戶賬戶和組賬戶的的相關文件及文件權限介紹