和用戶與組有關的文件
/etc/passwd:用戶名解析庫
我們通過tail查看其中一行內容例如:
~]#tail -1 /etc/passwd
xiaoming:x:8089:8089:"wang xiaoming":/home/xiaoming:/bin/bash
1 2 3 4 5 6 7
可以看出passwd中存放的是和用戶信息有關的信息,一共七段,每段之間由":"隔開
1:用戶賬戶登錄名稱;
2:使用"x"表示密碼佔位符;(以前用來存放密碼,後來爲了安全存放到其他文件中,用x進行密碼佔位)
3:用戶賬戶的UID;
4:用戶賬戶的GID,即該用戶賬戶的基本組的ID;
5:註釋信息,如用戶職位、用戶完整名稱等;
6:用戶賬戶的家目錄的絕對路徑;
7:用戶賬戶的默認登錄shell;
2./etc/group 組名解析庫
通過tail查看其內容
tangbohu:x:5010:
qiuxiang:x:5011:xiaoqiang,wangcai,tangbohu
xiaoming:x:8089:
1 2 3 4
1:組賬戶名稱;
2:組賬戶密碼佔位符;
3:組賬戶的GID;
4:以該組爲附加組的用戶列表,多個用戶名之間使用","分隔;
3./etc/shadow用戶名認證庫
用來存放密碼及密碼的多種規則
~]#head -1 /etc/shadow
root:$6$1bJAWLkjSA8dkPR5$q5CjatV0j62iTzbfyHZUD0dmRTKa54Yb.E1GVz1uOk5mKjR/KaRV963jkGQ0T1MS.wxj7LLu3VpSSDW4bX8wd0::0:99999:7:::
1:用戶賬戶登錄名;
2:密碼的加密算法+salt+密碼的加密結果;(三種信息用$分隔開)
3:最後一次修改密碼的時間;其表示法爲從1970年1月1日到當前系統時間所表示的日期的天數;
4:用戶密碼的最短使用期限;可以理解爲多長時間內不能更改密碼,0表示隨時可以更改密碼;
5:用戶密碼的最長使用期限;可以理解爲多長時間內無需更改密碼,也可以正常登錄;
6:用戶密碼的使用時間達到最長使用期限之前多少天開始,在用戶登錄到系統時發送警告消息;
7:用戶密碼過期之後的寬限期;可以理解爲在密碼過期之後的多少天內,登錄系統時仍然可以提示修改密碼;
8:用戶密碼的絕對失效時間;其表示法爲從1970年1月1日到指定日期時間的天數;
9:保留,未被使用;
4./etc/gshadow組名認證庫
root:::user1,myuser
1 23 4
1.組賬戶名稱;
2.組賬戶的加密密碼;
3.組管理員,現在廢棄了;
4.以該組爲附加組的用戶賬戶列表;
5./etc/default/useradd :定義創建用戶時的用戶屬性的默認值的文件;
GROUP=100
//在創建用戶時,如果沒有爲用戶指定基本組,系統會爲用戶指定一個與用戶名相同的組作爲其基本組;
HOME=/home
//在創建用戶時,如果沒有爲用戶指定家目錄,則會在/home目錄中創建一個與用戶同名的目錄作爲其家目錄;
INACTIVE=-1
//在創建用戶時,設定用戶密碼過期之後的寬限期,默認爲-1,意爲關閉用戶密碼過期寬限期的功能,即寬限期爲永遠;
EXPIRE=
//在創建用戶時,設定用戶密碼的絕對失效日期,默認沒有啓用;
SHELL=/bin/bash
//在創建用戶時,設定用戶的默認登錄shell,默認值爲/bin/bash;
SKEL=/etc/skel
//在創建用戶時,爲用戶的家目錄提供的默認文件的模版;
CREATE_MAIL_SPOOL=yes
//在創建用戶時,是否直接爲用戶創建郵箱文件;默認創建;
6./etc/login.defs (Definations)
作用:定義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_MIN 201
SYS_UID_MAX 999
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
//是否開啓私有組開關;(使用userdel刪除用戶時,如果用戶的基本組中沒有其他用戶,則默認刪除該組)
ENCRYPT_METHOD SHA512
//使用何種算法加密密碼;
7./etc/skel
作用:爲新創建的用戶的家目錄提供默認的[shell配置]文件;
[root@localhost ~]# ls -a /etc/skel . .. .bash_logout .bash_profile .bashrc .mozilla 我們新建一個用戶,查看其家目錄 [root@localhost ~]# useradd user7 [root@localhost ~]# ls -a /home/user7 . .. .bash_logout .bash_profile .bashrc .mozilla
--------------------------------------------------------------------------------------
文件系統的權限管理:
普通權限
特殊權限
文件的擴展屬性
FACL(文件系統訪問控制列表)
AC:自主訪問控制;
安全上下文:進程和其要操作的文件之間的關係,就定義爲安全上下文;
在DAC模型中,定義安全上下文的方式很簡單:
所有權:任何啓動進程的用戶就是該進程的所有者;進程的所有者可以變更;任何創建文件的用戶就是該文件的所有者;文件的所有者可以變更;
使用權:在文件上面定義的不同用戶對該文件的特定使用權限;
三個權限:所有者權限,所屬組權限,其他人權限;
可以使用 ls -l[d] /PATH/TO/SOMEFILE查看文件的所有權使用權信息
[root@localhost ~]# ll -d /etc
drwxr-xr-x. 138 root root 8192 11月 11 19:29 /etc
d|1||2||3| 4 5
屬主權限:rwx,此權限位標識爲user,簡寫爲u;
屬組權限:r-x,此權限位標識爲group,簡寫爲g;
其他用戶權限:r-x,此權限位標識爲other,簡寫爲o;
4.表示所有者
5.表示所屬組
注意:root用戶和文件的所有者可以修改該文件的使用權,但是文件的所有權只有root才能修改
安全上下文的匹配規則:
當某個進程試圖操作某個文件時,DAC將做如下規則匹配:
1.判斷進程的所有者和文件的所有者是否爲同一用戶,如果是,則直接應用文件的所有者權限;
2.如果不是,進一步判斷進程的所有者是否爲文件的所屬組的成員,如果是,則直接應用文件的所屬組權限;
3.如果不是,直接應用其他人權限;
8.文件權限的構成:
使用權:MODE,Permission
三個基本權限:
r:Readable,可讀;
w:Writable,可寫;
x:eXecutable,可執行;
目錄文件:
r:可以使用ls命令獲取其中所包含的所有文件的文件名列表;
w:可以在此目錄中進行文件名修改(創建,刪除,修改);即:可以創建文件名,刪除文件名及修改文件名;
x:可以使用ls -l命令來查看各個文件的屬性信息;在路徑中引用該目錄;
非目錄文件:
r:可以利用cat類的命令獲取文件中存放的數據信息;
w:可以修改(添加,修改,刪除、覆蓋)文件中存放的數據信息;
x:可以將文件發起爲進程;
9.權限標識
符號權限標識:
注意:"-"表示在該權限位上不具備指定權限;
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 file mode bits
格式:
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
MODE:符號權限標識法:
u, g, o, a:表示權限位;
+, -, =:表示授權方式;
+:表示在指定的權限位上增加指定權限;若權限已存在則權限無變化
-:表示在指定的權限位上撤銷指定權限;若權限已不存在則權限無變化
=:表示在指定的權限位上精確授權;此種授權方式不考慮該權限位原有的權限設定的;(類似覆蓋)
r, w, x:表示具體的權限;
[root@localhost ~]# ll -d touch2 drwxr-xr-x. 2 root root 6 11月 9 19:34 touch2 [root@localhost ~]# chmod u-r,g+w,o=r-- touch2 [root@localhost ~]# ll -d touch2 d-wxrwxr--. 2 root root 6 11月 9 19:34 touch2 [root@localhost ~]# 或使用數字標識符修改 [root@localhost ~]# chmod 700 touch2 [root@localhost ~]# ll -d touch2 drwx------. 2 root root 6 11月 9 19:34 touch2
注意:
chmod +|- r|x FILE:在所有的權限位上增加或撤銷讀或執行權限;
chmod +|- w FILE:僅在所有者權限位上增加或撤銷寫權限;
注意:對於文件來說,執行權限是非常重要的安全上下文標識;因此默認情況下,所有的非目錄文件都不應該有執行權限;因爲一旦非目錄具有了執行權限,則意味着該文件可以被執行,發起爲進程,則可以按需使用系統資源;
選項
--reference=RFILE: 參照賦權
drwx------. 2 root root 6 11月 9 19:34 touch2 [root@localhost ~]# ll -d touch drwxr-xr-x. 2 root root 6 11月 9 19:34 touch [root@localhost ~]# chmod --reference touch touch2 //參照touch文件的權限給touch2賦權 [root@localhost ~]# ll -d touch2 drwxr-xr-x. 2 root root 6 11月 9 19:34 touch2
常用選項:
-R, --recursive:遞歸地設置目標文件或目錄的權限;
[root@localhost ~]# ll -d touch2 drwx------. 2 root root 6 11月 9 19:34 touch2 [root@localhost ~]# ll -d /mnt drw-r-xr-x. 2 root root 67 11月 10 13:34 /mnt [root@localhost ~]# mkdir /mnt/wwww [root@localhost ~]# ll -d /mnt/wwww drwxr-xr-x. 2 root root 6 11月 11 20:17 /mnt/wwww [root@localhost ~]# chmod -R /mnt --reference touch2 //參照touch2的權限,給 /mnt目錄遞歸 賦權 [root@localhost ~]# ll -d /mnt drwx------. 4 root root 90 11月 11 20:19 /mnt [root@localhost ~]# ll /mnt 總用量 16 -rwx------. 1 wcca wc2 15 11月 9 20:04 a.sh -rwx------. 1 root root 0 11月 10 13:34 a.txt -rwx------. 1 wcca wc2 15 11月 9 20:04 b.sh drwx------. 2 root root 6 11月 11 20:19 ccc -rwx------. 1 wcca wc2 15 11月 9 20:04 c.sh drwx------. 2 root root 6 11月 11 20:17 wwww -rwx------. 1 wcca wc2 15 11月 9 20:04 x.sh
修改文件的所有權:
chown - change file owner and group //修改文件的屬主和屬組
格式:
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
只能使用root用戶修改:
格式:~]#chown user file //把文件的文件所有者改爲user
~]#chown user: file //把文件的文件所有者改爲user,所屬組改爲user的基本組
~]#chown :user file //把文件的文件所屬組改爲user
~]#chown user:user1 file //把文件的文件所有者改爲user,所屬組改爲usre1
示例:
~]# ll -a ~user7/aa.txt -rw-rw-r--. 1 user7 user7 0 11月 11 20:25 /home/user7/aa.txt ~]# chown xiaoming:xiaoqiang ~user7/aa.txt 修改 ~]# ll -a ~user7/aa.txt 1 xiaoming xiaoqiang 0 11月 11 20:25 /home/user7/aa.txt ~]# chown xiaoming: ~user7/aa.txt ~]# ll -a ~user7/aa.txt -rw-rw-r--. 1 xiaoming xiaoming 0 11月 11 20:25 /home/user7/aa.txt ~]# chown :xiaoqiang ~user7/aa.txt ~]# ll -a ~user7/aa.txt -rw-rw-r--. 1 xiaoming xiaoqiang 0 11月 11 20:25 /home/user7/aa.txt ~]# chown xiaoqiang ~user7/aa.txt ~]# ll -a ~user7/aa.txt -rw-rw-r--. 1 xiaoqiang xiaoqiang 0 11月 11 20:25 /home/user7/aa.txt ~]# chown xiaoming ~user7/aa.txt ~]# ll -a ~user7/aa.txt -rw-rw-r--. 1 xiaoming xiaoqiang 0 11月 11 20:25 /home/user7/aa.txt [root@localhost ~]# su - user7 [user7@localhost ~]$ chown xiaoqiang ~/aa.txt chown: 正在更改"/home/user7/aa.txt" 的所有者: 不允許的操作
10.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命令,不能複製目錄,即不能以目錄爲源文件;如果其源文件是一個目錄,則install命令會進入該目錄,依次複製其中的所有非目錄文件到目標位置;
[root@localhost ~]# ll a.txt -r--rw-rw-. 1 wcca wc1 92 11月 10 17:09 a.txt [root@localhost ~]# install a.txt /mnt -o xiaoming -g xiaoqiang -m 555 -r-xr-xr-x. 1 xiaoming xiaoqiang 92 11月 11 20:43 a.txt 如果複製一個目錄 [root@localhost ~]# install touch2 /mnt -o xiaoming -g xiaoqiang -m 555 install: 略過目錄"touch2"
特殊權限:
SUID,SGID,STICKY
1.SUID:SUID僅設置在可執行的文件上。
默認情況下,當用戶執行此類可執行文件時,被髮起的進程的所有者不是進程發起者,而是可執行文件的所有者;換句話說,進程以文件所有者的身份運行;
SUID權限所顯示的位置:文件的屬主的權限位中的執行權限位上;如果屬主本來就具有執行權限,則顯示爲"s";如果屬主本來沒有執行權限,則顯示爲"S";
管理SUID權限:
1.符號標識法:chmod u+s FILE
2.數字標識法:chmod 4755 FILE
2.SGID:SGID可以設置在可執行文件或目錄的屬組權限位的執行權限上。
如果某個目錄設置了SGID權限,並且對於某些用戶有寫權限,則所有在此目錄中創建的新文件和目錄的所屬組均爲其父目錄的所屬組,而並非進程發起者的主要組;
SGID權限的顯示位置:文件的屬組權限位上的執行權限上;如果屬組本來就有執行權限,則顯示爲"s",否則,就顯示爲"S";
管理SGID權限:
1.符號標識法:chmod g+s DIR
2.數字標識法:chmod 2770 DIR
3.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]
直接輸入umask命令會顯示當前的遮罩碼 [root@localhost ~]# umask 0022 我們創建一個目錄 [root@localhost ~]# ll -d /mmt drwxr-xr-x. 2 root root 6 11月 11 20:47 /mmt //目錄的默認權限爲755 我們創建一個文件 [root@localhost ~]# ll -d mmt -rw-r--r--. 1 root root 0 11月 11 20:48 mmt //文件的默認權限爲655 我們修改umask [root@localhost ~]# umask 0644 再創建目錄和文件 [root@localhost ~]# mkdir /ppt [root@localhost ~]# ll -d /ppt d--x-wx-wx. 2 root root 6 11月 11 20:49 /ppt //目錄的默認權限爲133 [root@localhost ~]# ll -d ppt -----w--w-. 1 root root 0 11月 11 20:51 ppt //文件的默認權限爲022
默認設置遮罩碼的文件:/etc/bashrc
規則:如果用戶的UID大於199並且用戶的用戶名和主要組的組名相同,則遮罩碼爲002;否則遮罩碼爲022;
當我們退出再登錄時,遮罩碼會恢復默認值
文件的擴展屬性:
lsattr:
lsattr - list file attributes on a Linux second extended file system
在Linux第二擴展文件系統中列出文件屬性
格式:
lsattr [ -RVadv ] [ files... ]
[root@localhost ~]# lsattr a.txt ---------------- a.txt 不能展示目錄擴展屬性
chattr:
chattr - change file attributes on a Linux file system
修改擴展屬性
格式:
chattr [ -RVf ] [ -v version ] [ mode ] files...
mode可以是:+-=[aAcCdDeijsStTu]
+
-
=
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 ...
setfacl
setfacl - set file access control lists
格式:
setfacl [-bkndRLPvh] [{-m|-x} acl_spec] file ...
setfacl --restore=file
常用選項:
-m acl_spec:爲指定文件設置acl_spec;
-x acl_spec:將acl_spec從指定文件上移除;
acl_spec:acl_specification,acl規格,訪問控制列表;
u:USERNAME:MODE
用戶名 權限值
g:GROUPNAME:MODE
MODE一般是使用符號權限標識法標識的權限;
示例:
爲文件賦予指定用戶的額外訪問權限:
[user3@lab1 ~]$ setfacl -m u:link:rwx /tmp/temp/
撤銷指定文件的額外訪問權限:
[user3@lab1 ~]$ setfacl -x u:link /tmp/temp/
[root@localhost ~]# getfacl a.txt # file: a.txt # owner: wcca # group: wc1 user::r-- group::rw- other::rw- [root@localhost ~]# setfacl -m u:wc:rw a.txt [root@localhost ~]# getfacl a.txt # file: a.txt # owner: wcca # group: wc1 user::r-- user:wc:rw- group::rw- mask::rw- other::rw-
注意:如果設置了FACL之後,再修改目標文件的使用權限,那麼FACL中設置的權限條目可能受到影響而導致授權失敗;因此,爲了保證沒有此項干擾,應該先調整目標文件或目錄的權限,再設置FACL;