用戶泳桦、組汤徽、文件權(quán)限
1~3 重點(diǎn)
-
若對(duì)某個(gè)用戶的所屬組進(jìn)行修改,
相應(yīng)權(quán)限變化不會(huì)立即生效灸撰,需要重新登錄來(lái)更新自己的tokenZ烁!浮毯! - 對(duì)某個(gè)文件的某一項(xiàng)權(quán)限修改完疫,是立即生效的
1 Linux安全模型
資源分派:
- Authentication:認(rèn)證,驗(yàn)證用戶身份
- Authorization:授權(quán),不同的用戶設(shè)置不同權(quán)限
- Accouting | Audition:審計(jì)
當(dāng)用戶登錄時(shí),系統(tǒng)會(huì)自動(dòng)分配令牌token债蓝,包括用戶標(biāo)識(shí)和組成員等信息
1.1 用戶 user
Linux中每個(gè)用戶是通過(guò)User Id (UID)來(lái)唯一標(biāo)識(shí)的
[root@CentOS8 ~]#id -u #查看當(dāng)前用戶UID
0
[root@CentOS8 ~]#id -u jacklee #查看指定用戶UID
1000
- 管理員:root, UID=0
- 普通用戶:1-60000 自動(dòng)分配
- 系統(tǒng)用戶:對(duì)進(jìn)程獲取資源進(jìn)行權(quán)限分配
1-499 (CentOS 6以前), 1-999 (CentOS7以后) - 登錄用戶:給用戶進(jìn)行交互式登錄使用
500+ (CentOS6以前), 1000+(CentOS7以后)
- 系統(tǒng)用戶:對(duì)進(jìn)程獲取資源進(jìn)行權(quán)限分配
1.2 用戶組 group
Linux中可以將一個(gè)或多個(gè)用戶加入用戶組中壳鹤,用戶組是通過(guò)Group ID(GID) 來(lái)唯一標(biāo)識(shí)的
GID與UID可使用相同的數(shù)字,是相互獨(dú)立的部分(各自使用各自的1~999)
- 管理員組:root, 0
-
普通組:
- 系統(tǒng)組:對(duì)進(jìn)程獲取資源進(jìn)行權(quán)限分配
1-499 (CentOS 6以前), 1-999 (CentOS7以后) - 登錄組:給用戶進(jìn)行交互式登錄使用
500+ (CentOS6以前), 1000+(CentOS7以后)
- 系統(tǒng)組:對(duì)進(jìn)程獲取資源進(jìn)行權(quán)限分配
1.3 用戶和組的關(guān)系
- 用戶的主要組(primary group):用戶必須屬于一個(gè)且只有一個(gè)主組
- 默認(rèn)創(chuàng)建用戶時(shí)會(huì)自動(dòng)創(chuàng)建和用戶名同名的組饰迹,做為用戶的主要組
- 組中只有一個(gè)用戶芳誓,稱(chēng)為私有組
- 用戶的附加組(supplementary group): 一個(gè)用戶可以屬于零個(gè)或多個(gè)輔助組
組的存在是為了進(jìn)行多個(gè)用戶批量授權(quán),提高效率
范例:查看指定ID的用戶和組信息
[root@CentOS8 ~]#id jacklee
uid=1000(jacklee) gid=1000(jacklee) groups=1000(jacklee)
1.4 安全上下文
運(yùn)行中的程序稱(chēng)之為進(jìn)程 (process)
進(jìn)程能夠訪問(wèn)資源的權(quán)限取決于進(jìn)程的 運(yùn)行者的身份啊鸭,與進(jìn)程本身無(wú)關(guān)G绿省!赠制!
范例:root能訪問(wèn)/etc/shadow 赂摆,而用戶jacklee不行
[root@CentOS8 ~]#cat /etc/shadow
root:$6$ogqukkz6XDmQP2c3$lYEMf.Fuf5sXr8Y4G4Upzc/ii6n2WszGq5Yfz6ImMbLY1QPY04a2JzyqVBYk9w4z5h/tSYxb3ymON0fYQbHlY1::0:99999:7:::
bin:*:18027:0:99999:7:::
daemon:*:18027:0:99999:7:::
adm:*:18027:0:99999:7:::
[jacklee@CentOS8 ~]$cat /etc/shadow
cat: /etc/shadow: Permission denied
2 配置文件
2.1 用戶和組的主要配置文件
- /etc/passwd: 用戶及其屬性信息(名稱(chēng)、UID、主組ID等)
- /etc/shadow: 用戶密碼及其相關(guān)屬性
- /etc/group: 組及其屬性信息
- /etc/gshadow:組密碼及其相關(guān)屬性
查看上述文件烟号,除了cat命令绊谭,還可使用getent更為方便!直接 getent + basename
[root@CentOS8/~]# getent passwd #不需要寫(xiě)路徑
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
......
#也可以指定用戶查看
[root@CentOS8/~]# getent shadow jacklee
jacklee:$6$ByWgJCxL2f/Afybr$wuxHkxi04SjJmsbQAGyO82K537ZR9vv/LwRjKMKC1lkyrmBEH/OHiuHbU8UcdUdmfgc4LcTpeO/DWNuJ07ncl1:18475:0:99999:7:::
2.2 passwd文件格式
用戶名 | 密碼 | UID | GID | 描述信息 | 家目錄 | 默認(rèn)shell |
---|---|---|---|---|---|---|
root | x(表示隱藏) | 0 | 0 | root | /root | bash |
在不理解格式的情況下汪拥,應(yīng)該主動(dòng)使用幫助功能达传,對(duì)于passwd操作如下:
[root@CENTOS7 ~]#whatis passwd
sslpasswd (1ssl) - compute password hashes
passwd (1) - update user's authentication tokens
passwd (5) - password file
#此時(shí)是為了查看文件,應(yīng)該查看第五章內(nèi)容喷楣!
[root@CENTOS7 ~]#man 5 passwd #進(jìn)入文件后使用page翻頁(yè)趟大!
Each line of the file describes a single user, and contains
seven colon-separated fields:
name:password:UID:GID:GECOS:directory:shell #七個(gè)項(xiàng)目的含義,用:號(hào)隔開(kāi)
用戶名:密碼:UID:GID:描述信息:家目錄:默認(rèn)shell
實(shí)際操作查看:
[root@CentOS8 ~]#cat /etc/passwd
最后一行:jacklee:x:1000:1000:jacklee:/home/jacklee:/bin/bash
注意:
- 密碼位置的字符 x 是為了兼容性留下的占位符铣焊,表示密碼文件不在此處
(實(shí)際存放在 /etc/shadow文件) - shell類(lèi)型為nologin表示此用戶不需要登錄逊朽,開(kāi)機(jī)自啟,用于程序的相關(guān)服務(wù)
- 在/etc/passwd文件中修改對(duì)應(yīng)信息曲伊,即可實(shí)現(xiàn)對(duì)應(yīng)功能叽讳,但一般不直接修改文本
2.3 shadow文件格式
shadow存放密碼與其策略,因此只有root用戶有權(quán)限查看7啬肌5涸椤!
[jacklee@CentOS8 ~]$cat /etc/shadow
cat: /etc/shadow: Permission denied #無(wú)權(quán)限
同理懈糯,可使用 man 5 shadow查看格式
[root@CentOS8 ~]#cat /etc/shadow
root:$6$ogqukkz6XDmQP2c3$lYEMf.Fuf5sXr8Y4G4Upzc/ii6n2WszGq5Yfz6ImMbLY1QPY04a2JzyqVBYk9w4z5h/tSYxb3ymON0fYQbHlY1::0:99999:7:::
bin:*:18027:0:99999:7:::
...
jacklee:$6$QlCPFppDpXzzYYRB$Zot.igaBz4y8VWcAOKVjEfo54fnvC9GKd2DwmxOTXFCES5UU0zolUzUduI/607qQW6iLV04QFjxheuva/3lyd0:18449:0:99999:7:::
#其中jacklee的 salt 為 QlCPFppDpXzzYYRB
所有信息依次表示:
- 登錄名
- 密碼:字符 ! ! 表示密碼鎖定涤妒;字符 * 表示兼容占位符,即無(wú)密碼(多為系統(tǒng)用戶)
一長(zhǎng)串亂碼表示密碼使用了 SHA512 加密赚哗,標(biāo)志是以和第3個(gè)$之間的字符)
-
上次改密碼的時(shí)間:從1970年1月1日起 到密碼最近一次被更改的時(shí)間(天)
設(shè)置為0屿储,下次登錄必須修改(chage -d 0) - 最短有效期:密碼再過(guò)幾天可以被變更(0表示隨時(shí)可被變更)
- 最長(zhǎng)有效期:密碼再過(guò)幾天必須被變更(99999表示永不過(guò)期)
- 密碼過(guò)期前幾天系統(tǒng)提醒用戶(默認(rèn)為一周)
- 寬限期:密碼過(guò)期幾天后帳號(hào)會(huì)被鎖定;叨铩!够掠!
- 從1970年1月1日算起民褂,多少天后帳號(hào)失效(不填寫(xiě)此項(xiàng),表示永久)
用戶名 | 密碼 | 上次修改 | 最短期限 | 最長(zhǎng)期限 | 提前提醒 | 寬限期 | 有效期 |
---|---|---|---|---|---|---|---|
jacklee | sha512加密 | 18449天 | 0=隨時(shí)可改 | 99999=不過(guò)期 | 7天 | 99999天 | 永久 |
#直接查看指定用戶的密碼策略
[root@CentOS8/~]# chage -l jacklee
Last password change : Aug 01, 2020
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
#修改密碼策略:
[root@CentOS8/~]# chage jacklee
Changing the aging information for jacklee
Enter the new value, or press ENTER for the default
Minimum Password Age [0]: #按格式依次輸入設(shè)置值即可
注意:新建用戶都無(wú)密碼疯潭,默認(rèn)使用 !! 鎖定
-
shadow文件中密碼處的字符 ! ! 表示密碼鎖定(如Ubuntu的root)
普通用戶:將 !! 刪除后直接保存赊堪,則為空口令,可直接登錄
nologin用戶:刪除 ! 也不能登錄竖哩,因?yàn)楸旧砭筒恍枰卿?/p>shadow中字符 * 與passwd中的 x 一樣雹食,為兼容而留下的占位符
普通用戶即使有密碼,root也可以直接刪除加密字符期丰,成為空口令
為了允許Ubuntu遠(yuǎn)程ssh登錄,需要修改/etc/ssh/sshd_config文件
將#PermitRootLogin prohibit-password修改為 PermitRootLogin yes-
快速生成一個(gè)12位隨機(jī)密碼
[root@CentOS8/~]# tr -dc '[:alnum:]' < /dev/urandom | head -c 12 iQpKEMfMP1BZ [root@CentOS8/~]# openssl rand -base64 12 (可能帶符號(hào)) Bf2goiJ9p7gfEWar
-
快速查看今天距離1970-1-1的天數(shù):
echo `date +%s`/86400 | bc
2.4 group文件格式
[root@CentOS8 ~]#cat /etc/group
root:x:0:
bin:x:1:
jacklee:x:1000:
......
組名 | 組密碼 | GID | 以當(dāng)前組為 附加組的 用戶列表 |
---|---|---|---|
root | x | 0 |
組密碼存在的意義:
- 管理員添加組員,相當(dāng)于賦予權(quán)限钝荡,需要驗(yàn)證密碼
- 用戶主動(dòng)加入組街立,驗(yàn)證密碼通過(guò)即可
注意:
- 若有多個(gè)組員,使用逗號(hào)分隔
- 同理埠通,x 表示密碼儲(chǔ)存在其他文件(gshadow)
2.5 gshadow文件格式
[root@CentOS8 ~]#cat /etc/gshadow
root:::
bin:::
jacklee:!::
組名 | 組密碼 | 管理員列表 | 以當(dāng)前組為附加組的用戶列表 |
---|---|---|---|
jacklee | 赎离!鎖定 | 無(wú) | 無(wú) |
注意:
- 空密碼表示沒(méi)有密碼,因此普通用戶不能自己加入
- 無(wú)管理員端辱,則默認(rèn)管理員為root
- 同理梁剔,!表示鎖定
2.6 文件操作
-
getent直接查看文件舞蔽,也可指定用戶查看
getent passwd getent shadow jacklee
vipw和vigr(vi + 文件名:編輯文件內(nèi)容)
-
pwck和grpck(文件名+check:具有檢查語(yǔ)法錯(cuò)誤的功能)
[root@CentOS8 ~]#pwck 檢查passwd文件的語(yǔ)法錯(cuò)誤 user 'pulse': directory '/var/run/pulse' does not exist user 'gluster': directory '/run/gluster' does not exist user 'saslauth': directory '/run/saslauthd' does not exist user 'clevis': directory '/var/cache/clevis' does not exist user 'pipewire': directory '/var/run/pipewire' does not exist user 'gnome-initial-setup': directory '/run/gnome-initial-setup/' does not exist pwck: no changes
3 用戶與組的管理
用戶 | 組 | |
---|---|---|
新建 | useradd | groupadd |
修改屬性 | usermod | groupmod |
修改密碼 | passwd | gpasswd |
修改密碼策略 | chage | — |
刪除 | userdel | groupdel |
查看用戶的屬組 | id user_name | groups user_name |
管理組員 | — | gpasswd 或 groupmems |
3.0 重點(diǎn)&易錯(cuò)點(diǎn)
-
要求下次登錄必須修改密碼
passwd -e jack chage -d 0 jack
3.1 用戶創(chuàng)建@@@
useradd 命令可以創(chuàng)建新的Linux用戶
useradd [options] NEWUSER
-r 創(chuàng)建系統(tǒng)用戶 CentOS 6之前: ID<500荣病,CentOS 7以后: ID<1000
-u UID(指定想要的UID,不可重復(fù))
-o 不檢查UID唯一性 '因此 -uo 相當(dāng)于對(duì)用戶創(chuàng)建硬鏈接I痢8雠琛!一個(gè)UID兩個(gè)name
-g GID 指明用戶所屬基本組朵栖,'輸入時(shí)可指定組名或GID
-s SHELL 指明用戶的默認(rèn)shell程序颊亮,可用列表在/etc/shells文件中
'在Ubuntu中創(chuàng)建新用戶默認(rèn)使用sh而不是bash(可修改配置)
-d DIR 以指定的路徑為家目錄 '必須是不存在的目錄
-m 指定UID小于1000時(shí),加上 -m 可將其視為普通用戶陨溅,并創(chuàng)建家目錄
-c COMMENT 用戶的注釋信息
-p 指定密碼 '要求輸入的內(nèi)容為加密后的結(jié)果V栈蟆!门扇!
典型應(yīng)用:
- 創(chuàng)建指定信息用戶
useradd -r -u 48 -g apache -s /sbin/nologin -d /var/www -c "Apache" apache
#創(chuàng)建一個(gè)系統(tǒng)用戶雹有,UID=48,屬于主組apache悯嗓,shell類(lèi)型nologin件舵,指定家目錄為/var/www,注釋信息為Apache脯厨,用戶名為apache
-
批量創(chuàng)建用戶
newuser passwd 格式文件
-
批量修改密碼(一鍵修改密碼)
echo username:passwd | chpasswd
注意
- 普通用戶默認(rèn)會(huì)創(chuàng)建家目錄铅祸,系統(tǒng)用戶無(wú)家目錄
-
各個(gè)系統(tǒng)生成加密密碼的方式
-
Centos8 生成sha512加密密碼
#選項(xiàng)-6表示SHA512加密算法,centos8特有 [root@CentOS8/~]# openssl passwd -6 mimamima $6$nPam4qhiviJsajFj$VPu0EHBZ4kVc1rJNyRWkg76aZUwPrkcXHDX3v7RebfKMVPD6Pw3j5dSHKPyj9azStLuKbTeG4inmVV3mTlCpc1
-
Centos7 使用Python 生成sha512加密密碼
python -c 'import crypt,getpass;pw="jacklee";print(crypt.crypt(pw))' [root@CentOS7/~]# python -c 'import crypt,getpass;pw="jacklee";print(crypt.crypt(pw))' $6$X3QI12Kgouk0r.VN$yTQDu9kxetQ3H1X2W8paI.4TnpIGN2YorprSub3XLAKWEaA0UGZ/iA0zPRN2X6kXIpXwl50SUFFJGN.JgBc4r1
-
Centos6 生成sha512加密密碼
[root@CentOS6/~]# grub-crypt --sha-512 Password: #需要手動(dòng)輸入 Retype password: $6$bQkDf7TFR/YkAfRD$XfxboLIuWxcauEwuLKGOCe4FiN4952XzbBciKXq0.sBPXIfuB0ejTKVpIP3viVma8dbDOCIhA4O7pZO2zWQSh0 #使用加密結(jié)果創(chuàng)建新用戶合武,名為jacky [root@CentOS6/~]# useradd -p '$6$bQkDf7TFR/YkAfRD$XfxboLIuWxcauEwuLKGOCe4FiN4952XzbBciKXq0.sBPXIfuB0ejTKVpIP3viVma8dbDOCIhA4O7pZO2zWQSh0' jacky [root@CentOS6/~]# id jacky uid=500(jacky) gid=500(jacky) groups=500(jacky)
-
-
useradd命令的默認(rèn)設(shè)置临梗,在文件/etc/defalut/useradd
#使用useradd -D可查看當(dāng)前設(shè)置 [root@CentOS8/~]# useradd -D GROUP=100 系統(tǒng)默認(rèn)組users的GID HOME=/home 默認(rèn)家目錄 INACTIVE=-1 密碼過(guò)期的寬限期 EXPIRE= 賬戶有效期(從1970開(kāi)始算) SHELL=/bin/bash 默認(rèn)shell類(lèi)型 SKEL=/etc/skel/ 新用戶的家目錄中'默認(rèn)創(chuàng)建的文件的模板 CREATE_MAIL_SPOOL=yes 是否創(chuàng)建郵箱 #編輯默認(rèn)設(shè)置 useradd -D 顯示默認(rèn)設(shè)置 useradd -D -s shell 修改默認(rèn)值 useradd -D -b 家目錄 修改默認(rèn)值 useradd -D -g group 修改默認(rèn)值
-
adduser命令在centos中與useradd等效,在Ubuntu中有所不同
[root@CentOS8 ~]#which adduser /usr/sbin/adduser [root@CentOS8 ~]#which useradd /usr/sbin/useradd [root@CentOS8 ~]#ll /usr/sbin/adduser lrwxrwxrwx. 1 root root 7 May 11 2019 /usr/sbin/adduser -> useradd
3.2 用戶屬性修改(少用)
usermod 命令可以修改用戶屬性
usermod [OPTION] user
-u UID: 新UID
-l login_name: '設(shè)置新的名字
-g GID: 新GID或新組名
-G GROUP1[,GROUP2,...[,GROUPN]]]:
設(shè)置新的附加組稼跳,原來(lái)的附加組將會(huì)被覆蓋盟庞;
若想保留原有的附加組,則要同時(shí)使用 -a選項(xiàng)
-s 新的默認(rèn)SHELL
-c 新的注釋信息
-d newdir 修改家目錄為newdir
新指定的家目錄不會(huì)自動(dòng)創(chuàng)建汤善,若要'創(chuàng)建新家目錄并移動(dòng)原家數(shù)據(jù)什猖,同時(shí)使用-m選項(xiàng)
-L lock指定一個(gè)用戶,在/etc/shadow 密碼欄的增加 ! '表示進(jìn)行鎖定票彪,禁止登錄
-U unlock指定一個(gè)用戶,將 /etc/shadow 密碼欄的!拿掉,'表示解鎖
若提示禁止解鎖不狮,同時(shí) -p 設(shè)置新密碼即可
-e YYYY-MM-DD: 指明用戶賬號(hào)過(guò)期日期
-f INACTIVE: 設(shè)定非活動(dòng)期限
3.3 刪除用戶
userdel 可刪除Linux 用戶
userdel [OPTION]... user
-f, --force 強(qiáng)制刪除
-r, --remove 刪除用戶家目錄和郵箱
注意:若不加選項(xiàng)直接刪除降铸,無(wú)法刪除用戶的配置文件
3.4 查看用戶相關(guān)的ID信息
id [OPTION]... [USER]
-u: 顯示UID
-g: 顯示GID
-G: 顯示用戶的所屬組的ID(主+附加)
-n: 顯示名稱(chēng)'需配合ugG使用
[root@CentOS8/~]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@CentOS8/~]# id -u
0
[root@CentOS8/~]# id -u jacklee
1000
[root@CentOS8/~]# id jacky
uid=1001(jacky) gid=1001(jacky) groups=1001(jacky)
3.5 切換用戶@@@
su: 即switch user
可以切換用戶身份
切換用戶的兩種方式:
- su UserName:非登錄式切換,即不會(huì)讀取目標(biāo)用戶的配置文件摇零,不改變當(dāng)前工作目錄
- su - UserName:登錄式切換推掸,會(huì)讀取目標(biāo)用戶的配置文件,切換至家目錄驻仅,完全切換
說(shuō)明:
- root 切換至其他用戶無(wú)須密碼谅畅;其他用戶切換時(shí)需要密碼
- 使用 su 切換之后,exit 返回原用戶噪服,避免重復(fù) su 導(dǎo)致bash子進(jìn)程環(huán)境混亂
以指定用戶的身份執(zhí)行命令
普通用戶想要執(zhí)行高級(jí)命令:
su [-] UserName -c 'COMMAND'
#用戶jacklee查看shadow文件
[jacklee@CentOS8 ~]$su - root -c "getent shadow"
Password: #需要輸入密碼
root:$6$zPRAwzA.VZmVBIZ0$z5mVDGTn7jdDUBUINVr2at9kI45e9ScHQGaLjPqIFKnOVEv51Fq6feVhrJH33MEz/.m/XXvk/o6ro0kj22Jva1::0:99999:7:::
bin:*:18027:0:99999:7:::
daemon:*:18027:0:99999:7:::
adm:*:18027:0:99999:7:::
......
禁止普通用戶登錄
su -s /sbin/nologin user
3.6 設(shè)置用戶密碼@@@
新建用戶useradd命令默認(rèn)不設(shè)置密碼
passwd 可以修改用戶密碼
passwd [OPTIONS] UserName
-d 刪除指定用戶密碼
-l 鎖定指定用戶
-u 解鎖
-e 強(qiáng)制用戶下次登錄修改密碼!!!!!!!!!!!同 chage -d 0 jack
-f 強(qiáng)制操作
-n 指定最短使用期限
-x 指定最長(zhǎng)使用期限
-w 指定提醒期限
--stdin:從標(biāo)準(zhǔn)輸入接收用戶密碼毡泻,'ubuntu沒(méi)有此選項(xiàng)
對(duì)密碼策略各種時(shí)間期限的圖解:
- passwd expiration date —— 密碼到期日期
- inactive days —— 到期后的寬限期
- inactive dte —— 密碼失效日期
常用功能:一鍵修改密碼
#適用各種Linux版本:
[root@CentOS8/~]# echo -e '123456\n123456' | passwd jacky
Changing password for user jacky.
New password: BAD PASSWORD: The password is shorter than 8 characters
Retype new password: passwd: all authentication tokens updated successfully.
#適用紅帽系列:
[root@CentOS8/~]# echo 'jacklee' | passwd --stdin jacky
Changing password for user jacky.
passwd: all authentication tokens updated successfully.
3.7 修改密碼策略
chage 可以修改用戶密碼策略
chage [OPTION]... LOGIN
選項(xiàng):
-l 顯示密碼策略
-d LAST_DAY -d 0 表示下次登錄必須修改密碼
-m --mindays MIN_DAYS
-M --maxdays MAX_DAYS
-W --warndays WARN_DAYS
-I --inactive INACTIVE 密碼過(guò)期后的寬限期
-E --expiredate EXPIRE_DATE 用戶的有效期
范例:
[root@CentOS8 ~]#chage -m 3 -M 42 -W 14 -I 7 -E 2020-10-10 jacklee
#將用戶jacklee的密碼策略進(jìn)行重新定義
[root@CentOS8 ~]#chage -l jacklee
Last password change : Jul 06, 2020
Password expires : Aug 17, 2020
Password inactive : Aug 24, 2020
Account expires : Oct 10, 2020
Minimum number of days between password change : 3
Maximum number of days between password change : 42
Number of days of warning before password expires : 14
[root@CentOS8 ~]#getent shadow jacklee
jacklee:$6$QlCPFppDpXzzYYRB$Zot.igaBz4y8VWcAOKVjEfo54fnvC9GKd2DwmxOTXFCES5UU0zolUzUduI/607qQW6iLV04QFjxheuva/3lyd0:18449:3:42:14:7:18545:
#下一次登錄強(qiáng)制重設(shè)密碼
[root@CentOS8 ~]#chage -d 0 jacklee
[root@CentOS8 ~]#getent shadow jacklee
jacklee:$6$QlCPFppDpXzzYYRB$Zot.igaBz4y8VWcAOKVjEfo54fnvC9GKd2DwmxOTXFCES5UU0zolUzUduI/607qQW6iLV04QFjxheuva/3lyd0:0:3:42:14:7:18545:
[root@CentOS8 ~]#chage -l jacklee
Last password change : password must be changed
Password expires : password must be changed
Password inactive : password must be changed
Account expires : Oct 10, 2020
Minimum number of days between password change : 3
Maximum number of days between password change : 42
Number of days of warning before password expires : 14
3.8 用戶相關(guān)的其它命令
- chfn 指定個(gè)人信息
- chsh 指定shell( 等于命令usermod -s )
- finger 可看用戶個(gè)人信息
[root@CentOS8 ~]#chfn jacklee #手動(dòng)輸入相關(guān)信息
Changing finger information for jacklee.
Name [jacklee]: abb #將會(huì)在開(kāi)機(jī)界面顯示!P具帧Q雷健!>挫P安!
Office []: bba
Office Phone []: 110
Home Phone []: 120
Finger information changed.
[root@CentOS8 ~]#chsh -s /bin/sh jacklee
Changing shell for jacklee.
Shell changed.
[root@CentOS8 ~]#getent passwd jacklee
jacklee:x:1000:1000:abb,bba,110,120,:/home/jacklee:/bin/sh
注意:若修改普通用戶的shell類(lèi)型為nologin无拗,將導(dǎo)致用戶無(wú)法登錄
3.9 管理組
組沒(méi)有"管理員組"的說(shuō)法带到,root組就是一個(gè)名為root的普通組
3.9.1 創(chuàng)建組
groupadd實(shí)現(xiàn)創(chuàng)建組
groupadd [OPTION]... group_name
-g GID 指明GID號(hào);[GID_MIN, GID_MAX]
-r 創(chuàng)建系統(tǒng)組英染,CentOS 6之前: ID<500揽惹,CentOS 7以后: ID<1000
用法:
groupadd -g 48 -r apache
#表示創(chuàng)建組名為apache、GID為48的系統(tǒng)組
3.9.2 修改組
groupmod [OPTION]... group
-n group_name: 新名字
-g GID: 新的GID
3.9.3 刪除組
groupdel [options] GROUP #此操作只能刪除空組
-f, --force 強(qiáng)制刪除四康,即使是用戶的主組也強(qiáng)制刪除組
[root@CentOS8/~]# id jacky
uid=1001(jacky) gid=1001(jacky) groups=1001(jacky)
[root@CentOS8/~]# groupdel -f jacky
[root@CentOS8/~]# id jacky
uid=1001(jacky) gid=1001 groups=1001
3.9.4 管理組成員
-
gpasswd命令
-
可修改組密碼
gpasswd GROUP [root@CentOS8/~]# gpasswd jacklee Changing the password for group jacklee New Password: #手動(dòng)輸入密碼 Re-enter new password:
-
修改組的成員關(guān)系
gpasswd [OPTION] GROUP 常見(jiàn)選項(xiàng): -a user 將user添加至指定組中 -d user 從指定組中移除用戶user -A user1,user2,... 批量設(shè)置管理員 [root@CentOS8/~]# id jacky uid=1001(jacky) gid=1003(jacky) groups=1003(jacky) [root@CentOS8/~]# gpasswd -a jacky admin Adding user jacky to group admin [root@CentOS8/~]# id jacky uid=1001(jacky) gid=1003(jacky) groups=1003(jacky),1002(admin) [root@CentOS8/~]# groups jacky jacky : jacky admin [root@CentOS8/~]# getent group admin admin:x:1002:jacky [root@CentOS8/~]# gpasswd -d jacky admin Removing user jacky from group admin [root@CentOS8/~]# groups jacky jacky : jacky [root@CentOS8/~]# id jacky uid=1001(jacky) gid=1003(jacky) groups=1003(jacky) [root@CentOS8/~]# getent group admin admin:x:1002:
-
-
groupmems命令可以顯示搪搏、管理組成員關(guān)系(格式與gpasswd不同: -g group)
groupmems [options] [action] -g groupname 更改為指定組 (只有root可用) -a 指定用戶加入組 格式:groupmems -a user -g group -d 從組中刪除用戶 格式:groupmems -d user -g group -p 從組中清除所有成員 -l 顯示組成員列表
-
groups命令 可查看用戶的屬組
#查看用戶所屬組列表 groups [USERNAME]... [root@CentOS8/~]# groupmems -a jacky -g root [root@CentOS8/~]# groups jacky jacky : jacky root [root@CentOS8/~]# id jacky uid=1001(jacky) gid=1003(jacky) groups=1003(jacky),0(root)
3.9.5 臨時(shí)切換主組
newgrp命令可以臨時(shí)切換主組, 如果用戶本不屬于此組闪金,則需要組密碼
newgrp [-] [group]
如果使用 - 選項(xiàng)疯溺,可以初始化用戶環(huán)境
如果用戶不屬于此組,則需要組密碼
4 文件權(quán)限管理
4.0 重點(diǎn)
討論文件權(quán)限的前提哎垦,必須指明是對(duì)哪個(gè)或哪一類(lèi)用戶的權(quán)限
討論文件權(quán)限的前提囱嫩,必須指明是對(duì)哪個(gè)或哪一類(lèi)用戶的權(quán)限
討論文件權(quán)限的前提,必須指明是對(duì)哪個(gè)或哪一類(lèi)用戶的權(quán)限
4.1 所有者和所屬組
4.1.1 設(shè)置文件的所有者chown@@@
chown 命令可以修改文件的屬主漏设,也可以修改文件所屬組
chown [OPTION]... [OWNER][:[GROUP]] FILE... #冒號(hào)也可用 . 替換
chown [OPTION]... --reference=RFILE FILE...
用法說(shuō)明:
OWNER 只修改所有者
OWNER:GROUP 同時(shí)修改所有者和屬組
:GROUP 只修改屬組
-R: 遞歸
--reference=RFILE 參考指定的的屬性墨闲,來(lái)修改
[root@CentOS8 data]#cp /etc/fstab f1.txt
[root@CentOS8 data]#ll
total 4
-rw-r--r-- 1 root root 709 Jul 8 16:08 f1.txt
[root@CentOS8 data]#chown jacklee f1.txt
[root@CentOS8 data]#ll
total 4
-rw-r--r-- 1 jacklee root 709 Jul 8 16:08 f1.txt
[root@CentOS8 data]#chown :jacklee f1.txt
[root@CentOS8 data]#ll
total 4
-rw-r--r-- 1 jacklee jacklee 709 Jul 8 16:08 f1.txt
[root@CentOS8 data]#chown root:bin f1.txt
[root@CentOS8 data]#ll
total 4
-rw-r--r-- 1 root bin 709 Jul 8 16:08 f1.txt
[root@CentOS8 data]#chown jacklee.root f1.txt #用.代替:
[root@CentOS8 data]#ll
total 4
-rw-r--r-- 1 jacklee root 709 Jul 8 16:08 f1.txt
[root@CentOS8 data]#touch f2.txt
[root@CentOS8 data]#ll
total 4
-rw-r--r-- 1 jacklee bin 709 Jul 8 16:08 f1.txt
-rw-r--r-- 1 root root 0 Jul 8 16:12 f2.txt
[root@CentOS8 data]#chown --reference=f1.txt f2.txt
[root@CentOS8 data]#ll
total 4
-rw-r--r-- 1 jacklee bin 709 Jul 8 16:08 f1.txt
-rw-r--r-- 1 jacklee bin 0 Jul 8 16:12 f2.txt
4.1.2 設(shè)置文件的屬組信息 chgrp
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
-R 遞歸
此命令也可由 chown :GROUP完成
4.2 文件權(quán)限@@@
4.2.0 重要原則
討論文件權(quán)限的前提,必須指明是對(duì)哪個(gè)或哪一類(lèi)用戶的權(quán)限
討論文件權(quán)限的前提郑口,必須指明是對(duì)哪個(gè)或哪一類(lèi)用戶的權(quán)限
討論文件權(quán)限的前提鸳碧,必須指明是對(duì)哪個(gè)或哪一類(lèi)用戶的權(quán)限
并不是每個(gè)文件系統(tǒng)都支持設(shè)置權(quán)限
例如盾鳞,Linux也支持FAT文件系統(tǒng),但是此系統(tǒng)不能設(shè)置權(quán)限
4.2.1 文件權(quán)限說(shuō)明
- 文件的權(quán)限主要針對(duì)三類(lèi)對(duì)象進(jìn)行定義(ACL權(quán)限設(shè)置第四類(lèi))
owner 屬主, u
group 屬組, g
other 其他, o
用戶的最終權(quán)限杆兵,根據(jù)ugo的順序從左往右進(jìn)行匹配雁仲!一旦匹配到,權(quán)限立即生效 - 每個(gè)文件針對(duì)每類(lèi)訪問(wèn)者都定義了三種權(quán)限
r Readable
w Writable
x eXcutable
對(duì)root來(lái)說(shuō)琐脏,只有 x 權(quán)限可能會(huì)受到限制!8淄谩H杖埂!6杳邸0悍鳌!E撞8窈睢!2浦联四!
- 對(duì)文件的權(quán)限的意義(能否刪除文件是由文件夾權(quán)限決定的)
- 讀 r ——能訪問(wèn)文件
- 寫(xiě) w ——能修改文件內(nèi)容
- 執(zhí)行 x ——能運(yùn)行此程序
- 對(duì)目錄的權(quán)限的意義(一般情況下目錄同時(shí)給 r-x )
- 讀 r ——可以在外面使用ls查看此目錄中文件列表
- 寫(xiě) w——可在此目錄新建或刪除文件
與 被刪除的文件具有什么權(quán)限 無(wú)關(guān)!3沤獭朝墩! - 執(zhí)行 x——可cd進(jìn)入此目錄(最小權(quán)限)
- 特別 X——遞歸設(shè)置時(shí)只給目錄x權(quán)限,避開(kāi)文件
other對(duì)目錄的權(quán)限: | r - - | - - x | r - x |
---|---|---|---|
不在目錄中 ls | 可看到文件列表 | Permission denied | 可 |
不在目錄中 ll | 可看到文件列表 | Permission denied | 可 |
能否 cd 進(jìn)入目錄 | Permission denied | 能進(jìn)入 | 可 |
cd 進(jìn)入目錄中 ls | —— | Permission denied | 可 |
已知文件名能否查看文件 | Permission denied | 可查看文件屬性及內(nèi)容 | 可 |
[jacklee@centos8/~]$ ll -d /data/
drwxr-xr--. 3 root root 45 Aug 2 20:26 /data/ o=r的情況(ls成功伟姐,cd失斒账铡)
[jacklee@centos8/~]$ ls /data/
ls: cannot access '/data/f1.txt': Permission denied
ls: cannot access '/data/f2.txt': Permission denied
ls: cannot access '/data/dir': Permission denied
dir f1.txt f2.txt
[jacklee@centos8/~]$ cd /data/
-bash: cd: /data/: Permission denied
[jacklee@centos8/~]$ ll -d /data/
drwxr-x--x. 3 root root 45 Aug 2 20:26 /data/ o=x的情況(ls失敗,cd成功)
[jacklee@centos8/~]$ ls /data/
ls: cannot open directory '/data/': Permission denied
[jacklee@centos8/~]$ cd /data/
[jacklee@centos8/data]$ ls
ls: cannot open directory '.': Permission denied
權(quán)限還可用數(shù)字代替字母表示
因此總共存在8種不同的權(quán)限搭配方式:
--- | --x | -w- | -wx | r-- | r-x | rw- | rwx |
---|---|---|---|---|---|---|---|
000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
范例 :
- 640 rw- r-- ---
- 755 rwx r-x r-x
4.2.2 修改文件權(quán)限 chmod
格式:
chmod who opt mod file
who= u,g,o,a
opt= +,-,= '修改某個(gè)權(quán)限使用 +,- 修改全部權(quán)限使用 =
mod= r,w,x
-R 遞歸修改權(quán)限(用于多級(jí)目錄)
#參考RFILE文件的權(quán)限愤兵,將FILE的修改為與RFILE一致
chmod opt --reference=RFILE FILE...
#清空所有類(lèi)型用戶權(quán)限
chmod a= file或/dir
使用格式舉例:
chmod u+wx,g-r,o=rx file
chmod -R g+rwX /dir
chmod 644 file
實(shí)操范例:
[root@CentOS8 data]#ll
total 4
-rw-r--r-- 1 root root 709 Jul 8 16:08 f1.txt
-rw-r--r-- 1 root root 0 Jul 8 16:12 f2.txt
[root@CentOS8 data]#chmod u-w,g+w,o-r f1.txt
[root@CentOS8 data]#ll
total 4
-r--rw---- 1 root root 709 Jul 8 16:08 f1.txt #對(duì)應(yīng)權(quán)限已修改
-rw-r--r-- 1 root root 0 Jul 8 16:12 f2.txt
[root@CentOS8 data]#chmod u=rwx,g=rw f2.txt
[root@CentOS8 data]#ll
total 4
-r--rw---- 1 root root 709 Jul 8 16:08 f1.txt
-rwxrw-r-- 1 root root 0 Jul 8 16:12 f2.txt #對(duì)應(yīng)權(quán)限已修改(有x權(quán)限變綠)
[root@CentOS8 data]#chmod 666 f1.txt #直接輸入八進(jìn)制權(quán)限
[root@CentOS8 data]#ll
total 4
-rw-rw-rw- 1 root root 709 Jul 8 16:08 f1.txt #對(duì)應(yīng)權(quán)限已修改為666
-rwxrw-r-- 1 root root 0 Jul 8 16:12 f2.txt
子目錄權(quán)限遞歸范例:
[root@CentOS8 data]# ll
total 0
drwxr-xr-x 3 root root 16 Jul 8 19:40 a1 #原始屬性
[root@CentOS8 data]# ll a1
total 0
drwxr-xr-x 3 root root 16 Jul 8 19:40 a2 #a2的原始屬性
[root@CentOS8 data]# ll a1/a2
total 0
drwxr-xr-x 2 root root 6 Jul 8 19:40 a3 #a3的原始屬性
[root@CentOS8 data]# chmod a-x a1 #不使用遞歸
[root@CentOS8 data]# ll
total 0
drw-r--r-- 3 root root 16 Jul 8 19:40 a1 #a1屬性修改成功
[root@CentOS8 data]# ll a1
total 0
drwxr-xr-x 3 root root 16 Jul 8 19:40 a2 #a2無(wú)變化
[root@CentOS8 data]# ll a1/a2
total 0
drwxr-xr-x 2 root root 6 Jul 8 19:40 a3 #a3無(wú)變化
[root@CentOS8 data]# chmod -R a-x a1 #使用遞歸
[root@CentOS8 data]# ll a1
total 0
drw-r--r-- 3 root root 16 Jul 8 19:40 a2 #a2修改成功
[root@CentOS8 data]# ll a1/a2
total 0
drw-r--r-- 2 root root 6 Jul 8 19:40 a3 #a3修改成功
4.2.3 新建文件和目錄的默認(rèn)權(quán)限
umask的值可以用來(lái)設(shè)置創(chuàng)建新文件的權(quán)限
-
新建文件的默認(rèn)權(quán)限為 666-umask的計(jì)算結(jié)果
- root默認(rèn)umask=022鹿霸,新建文件權(quán)限為644=rw-r--r--
- 普通用戶默認(rèn)umask=002,新建文件權(quán)限為664=rw-rw-r--
- 當(dāng)umask被修改時(shí)秆乳,所得結(jié)果有可能出現(xiàn)奇數(shù)(表示文件有執(zhí)行權(quán)限)懦鼠,
此時(shí)應(yīng)將其權(quán)限+1(消除x權(quán)限),防止執(zhí)行病毒**矫夷;若為偶數(shù)則不變
-
新建目錄的默認(rèn)權(quán)限為 777-umask的計(jì)算結(jié)果(目錄的執(zhí)行權(quán)限不存在風(fēng)險(xiǎn))
- root新建目錄的權(quán)限為755
- 普通用戶新建目錄的權(quán)限為775
臨時(shí)修改 uamsk
umask # (#即為想要的設(shè)置)
持久保存umask葛闷,應(yīng)該修改配置文件
- 全局設(shè)置: /etc/bashrc
- 用戶設(shè)置:~/.bashrc
為了更直觀顯示出umask的數(shù)值表達(dá)的意思,可使用 -S 選項(xiàng)
[root@CentOS8 data]#umask
0022
[root@CentOS8 data]#umask -S
u=rwx,g=rx,o=rx
#此即為當(dāng)前的默認(rèn)設(shè)置
4.4 Linux文件系統(tǒng)上的特殊權(quán)限
- 三種常見(jiàn)的權(quán)限:r, w, x
- 三種特殊權(quán)限:SUID, SGID, Sticky
權(quán)限名稱(chēng) | SUID | SGID | Sticky |
---|---|---|---|
功能說(shuō)明 | 繼承所有者權(quán)限 | 繼承所屬組權(quán)限 | 防止外人刪除文件 |
適用范圍 | 只對(duì)bin文件設(shè)置 | 文件和目錄 | 只對(duì)目錄設(shè)置 |
添加權(quán)限的操作 | u+s 或 4xxx | g+s 或 2xxx | o+t 或 1xxx |
刪除權(quán)限的操作 | u-s | g-s | o-t |
添加權(quán)限之后的顯示 | rwS 或 rws | rwS 或 rws | r - T 或 r - t |
特別說(shuō)明 | 設(shè)置在目錄用于協(xié)作 |
關(guān)于添加權(quán)限之后的顯示:rwS表示沒(méi)有 x 權(quán)限 双藕,rws 表示 rwxs 權(quán)限全部都有
刪除權(quán)限的操作:也可以 chmod xxx file/dir 直接覆蓋
4.4.1 特殊權(quán)限SUID—繼承own
SUID只對(duì)二進(jìn)制可執(zhí)行程序有效淑趾,設(shè)置在目錄上無(wú)意義
設(shè)置此權(quán)限的前提:進(jìn)程有屬主和屬組;文件有屬主和屬組
chmod u+s FILE...
chmod 4xxx FILE
chmod u-s FILE...
SUID權(quán)限的功能(u+s): 任何用戶運(yùn)行此程序忧陪,都可繼承 ‘ 此程序的所有者 ’ 的權(quán)限
#若給nano設(shè)置 s 權(quán)限扣泊,則nano可修改任意文件近范,因?yàn)閚ano的所有者為root,任意用戶運(yùn)行都相當(dāng)于root
[root@CentOS8 ~]# ll /bin/nano
-rwxr-xr-x. 1 root root 260848 May 11 2019 /bin/nano(綠色延蟹,表示可執(zhí)行)
[root@CentOS8 ~]# chmod u+s /bin/nano
[root@CentOS8 ~]# ll /bin/nano
-rwsr-xr-x. 1 root root 260848 May 11 2019 /bin/nano(紅色评矩,表示危險(xiǎn)權(quán)限)
[root@CentOS8 ~]# chmod u-s /bin/nano # u-s取消
執(zhí)行程序的基本原則:
任何一個(gè)可執(zhí)行程序文件能不能啟動(dòng)為進(jìn)程,取決于 發(fā)起者對(duì)程序文件是否擁有執(zhí)行權(quán)限
即:程序能否執(zhí)行阱飘,與程序文件本身無(wú)關(guān)斥杜,與誰(shuí)來(lái)運(yùn)行相關(guān)
- 啟動(dòng)為進(jìn)程之后,其進(jìn)程的屬主為原程序文件的屬主沥匈,屬組為原程序文件的屬組
- 同時(shí)蔗喂,進(jìn)程訪問(wèn)文件時(shí)的權(quán)限,取決于進(jìn)程的發(fā)起者
#普通用戶不能訪問(wèn)/etc/shadow文件的原因
[root@CentOS8 data]# su jacklee
[jacklee@CentOS8 data]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
[jacklee@CentOS8 data]$ ll /etc/shadow
----------. 1 root root 1423 Jul 7 18:13 /etc/shadow #沒(méi)有給出任何權(quán)限
[root@CentOS8 ~]# ll /bin/cat
-rwxr-xr-x. 1 root root 51856 May 12 2019 /bin/cat #而cat程序本身權(quán)限無(wú)問(wèn)題
4.4.2 特殊權(quán)限SGID—繼承g(shù)rp
即可對(duì)文件設(shè)置高帖,也可對(duì)目錄設(shè)置
- 對(duì)二進(jìn)制文件:(g+s)表示任何人運(yùn)行此程序缰儿,都可繼承 ‘ 此程序的所屬組 ’ 的權(quán)限
chmod g+s FILE...
chmod 2xxx FILE
chmod g-s FILE...
-
與SUID不同,目錄上的SGID權(quán)限功能(使新建文件屬組繼承為dir的屬組):
默認(rèn)情況下散址,用戶創(chuàng)建文件時(shí)乖阵,其屬組為此用戶所屬的主組,一旦某目錄被設(shè)定了SGID预麸,則對(duì)此目錄有寫(xiě)權(quán)限的用戶 在此目錄中創(chuàng)建的文件 所屬的組 都為此目錄的屬組(而不是創(chuàng)建者的)瞪浸,通常用于創(chuàng)建一個(gè)協(xié)作目錄
chmod g+s DIR...
chmod 2xxx DIR
chmod g-s DIR...
4.4.3 特殊權(quán)限 Sticky —防止刪除
sticky 設(shè)置在文件上無(wú)意義,只針對(duì)目錄設(shè)置
在目錄設(shè)置Sticky 位(o+t)师崎,只有文件的所有者 或root可以刪除該文件
而一般情況下默终,具有寫(xiě)權(quán)限的目錄,普通用戶可以任意刪除文件
chmod o+t DIR...
chmod 1xxx DIR
chmod o-t DIR...
4.4.4 特殊權(quán)限數(shù)字法
根據(jù)三者對(duì)應(yīng)的作用位置犁罩,恰好也可分為4.2.1齐蔽,并獨(dú)立計(jì)算放在第一位
[root@CentOS8 data]# ll abc1.log
-rw-r--r-- 1 root root 0 Jul 8 19:33 abc1.log
[root@CentOS8 data]# chmod 4644 abc1.log #第一位4表示u+s
[root@CentOS8 data]# ll abc1.log
-rwSr--r-- 1 root root 0 Jul 8 19:33 abc1.log
[root@CentOS8 data]# chmod 2644 abc1.log #第一位2表示g+s
[root@CentOS8 data]# ll abc1.log
-rw-r-Sr-- 1 root root 0 Jul 8 19:33 abc1.log
[root@CentOS8 data]# chmod 1644 abc1.log #第一位1表示o+t
[root@CentOS8 data]# ll abc1.log
-rw-r--r-T 1 root root 0 Jul 8 19:33 abc1.log
[root@CentOS8 data]# chmod 7644 abc1.log #第一位7表示全部加上
[root@CentOS8 data]# ll abc1.log
-rwSr-Sr-T 1 root root 0 Jul 8 19:33 abc1.log
###此處全部是大寫(xiě)ST,因?yàn)樵次募旧頉](méi)有執(zhí)行權(quán)限x床估,若有則為小寫(xiě)
#取消特殊權(quán)限含滴,輸入三位數(shù)即可:
[root@CentOS8 data]# chmod 555 abc1.log
[root@CentOS8 data]# ll abc1.log
-r-xr-xr-x 1 root root 0 Jul 8 19:33 abc1.log
4.5 設(shè)定文件特殊屬性約束root
可以防止 root 用戶誤操作刪除或修改文件
若發(fā)現(xiàn)某文件或目錄 除了查看 無(wú)法進(jìn)行任何操作,使用lsattr查看是否設(shè)置了特殊屬性Xの住L缚觥!
也有可能是此目錄下存在某個(gè)文件被設(shè)置了attr屬性
-
設(shè)置為不能編輯內(nèi)容递胧、刪除碑韵、改名
若對(duì)目錄設(shè)置,目錄下的文件是可以被編輯的缎脾,但不能刪除chattr +i file或dir
-
設(shè)置為只能追加內(nèi)容祝闻,不能刪除、改名
chattr +a file或dir
-
顯示已經(jīng)設(shè)置的特定屬性
lsattr file或dir [root@centos8/data]# chattr +a f2.txt [root@centos8/data]# ll total 8 drw-r--r--. 2 root root 17 Aug 2 20:32 dir -rw-r--r--. 1 jack admins 709 Aug 2 19:52 f1.txt #普通權(quán)限界面看不到 -rwxr-xr-x. 1 jack root 23 Aug 2 19:53 f2.txt [root@centos8/data]# lsattr ------------------ ./f1.txt -----a------------ ./f2.txt #必須使用命令lasttr查看 ------------------ ./dir
4.6 訪問(wèn)控制列表
4.6.1 ACL權(quán)限功能
ACL:Access Control List遗菠,實(shí)現(xiàn)靈活的權(quán)限管理
作用:除了文件的所有者联喘,所屬組和其它人华蜒,可以對(duì)更多的用戶設(shè)置權(quán)限(第四類(lèi)用戶)
要點(diǎn):
- 文件一旦設(shè)置了ACL權(quán)限,中間3位表示mask權(quán)限豁遭,而不是group0认病!蓖谢!
- ACL權(quán)限的生效順序優(yōu)先于other
CentOS7 默認(rèn)創(chuàng)建的xfs和ext4文件系統(tǒng)具有ACL功能
CentOS7 之前版本捂蕴,默認(rèn)手工創(chuàng)建的ext4文件系統(tǒng)無(wú)ACL功能,需手動(dòng)增加
tune2fs –o acl /dev/sda2
#查看結(jié)果中的Default mount options ,若有acl表示ext4文件系統(tǒng)支持此功能
4.6.2 ACL相關(guān)命令
- setfacl 可以設(shè)置ACL權(quán)限(作用:指定某個(gè)特定的用戶對(duì)文件的權(quán)限)
設(shè)置成功之后闪幽,權(quán)限末尾有 + 號(hào)(表示第四種用戶) - getfacl 可查看設(shè)置的ACL權(quán)限
setfacl -m u:jacklee:MODE FILE #添加權(quán)限:設(shè)置用戶jacklee對(duì)文件FILE的權(quán)限為MODE
setfacl -m g:admins:MODE FILE #添加權(quán)限:設(shè)置admins組對(duì)文件FILE的權(quán)限為MODE
setfacl -x u:jacklee FILE #刪除權(quán)限:刪除用戶jacklee對(duì)文件FILE的特殊權(quán)限
setfacl -b FILE #清除 對(duì)文件FILE設(shè)置的所有ACL權(quán)限
setfacl --set 把原有的ACL權(quán)限全部刪除启绰,用新的覆蓋,'但是必須連同ugo的權(quán)限一起指定
如:setfacl --set u::rw,g::r,o::-,u:jacklee:rw file
getfacl FILE #查看文件對(duì) 所有用戶類(lèi)型 的權(quán)限
getfacl file1 | setfacl --set-file=- file2 #復(fù)制file1的acl權(quán)限給file2
[root@CentOS8 data]# setfacl -m u:jacklee:x abc2.log
[root@CentOS8 data]# ll abc2.log
-rw-r-xr--+ 1 root root 0 Jul 8 19:33 abc2.log #設(shè)置成功之后沟使,權(quán)限末尾有+號(hào)
[root@CentOS8 data]# setfacl -m u:jacklee:x abc2.log
[root@CentOS8 data]# getfacl abc2.log
# file: abc2.log
# owner: root
# group: root
user::rw-
user:jacklee:--x #權(quán)限添加成功
group::r--
mask::r-x #同時(shí)ll中間三位權(quán)限表示mask!渊跋!而不是group@拔恕!拾酝!
other::r--
[root@CentOS8 data]# setfacl -b abc2.log
[root@CentOS8 data]# ll abc2.log
-rw-r--r-- 1 root root 0 Jul 8 19:33 abc2.log #+號(hào)消失
[root@CentOS8 data]# getfacl abc2.log
# file: abc2.log
# owner: root
# group: root
user::rw-
group::r--
other::r-- #正常三種用戶的權(quán)限
mask 權(quán)限(限高桿)
- mask只影響除所有者和other之外的人和組的最大權(quán)限
- mask需要與用戶的權(quán)限進(jìn)行邏輯與運(yùn)算后燕少,才能變成有限的權(quán)限(Effective Permission)
- 用戶或組的設(shè)置必須在mask權(quán)限設(shè)定范圍內(nèi)才會(huì)生效(邏輯與運(yùn)算,取權(quán)限較小值)
setfacl -m mask::MODE file #設(shè)置mask權(quán)限
文件權(quán)限生效優(yōu)先級(jí)順序:
所有者 >> 自定義用戶 >> 所屬組 | 自定義組 >> other
mask權(quán)限 最多針對(duì)中間三者進(jìn)行限制]锒凇?兔恰!
4.6.3 備份和還原ACL
主要的文件操作命令cp和mv都支持ACL材诽,cp命令加上 -p 選項(xiàng)即可復(fù)制權(quán)限信息
但是tar等常見(jiàn)的備份工具是不會(huì)保留目錄和文件的ACL信息
為了防止權(quán)限丟失底挫,應(yīng)使用ACL備份功能
#備份ACL
getfacl -R /tmp/dir > acl.txt #保存設(shè)置過(guò)的ACL權(quán)限信息
#還原ACL
setfacl --restore acl.txt (正常還原)
#將每一個(gè)文件的ACL權(quán)限 遞歸還原到所有文件!A辰摹建邓!
setfacl -R --set-file=acl.txt /tem/dir