筆記整理開始2018年4月3日17:27:07
介紹安全3A
Authentication:認證
Authorization:??? 授權
Accouting|Audition:審計
本章主要介紹的內容為認證和授權方面的內容
用戶user
令牌token,identiry
用戶通過賬號和口令登錄(認證)之后,系統會根據認證的賬號類型
發放不同的類型令牌(授權)。
用戶持令牌通過程序訪問文件,文件會審核令牌類型判斷是否具有訪問
權限。
若在登錄過程中做了權限變更,需重新登錄之后才能領取新的令牌。
Linux用戶:Username/UID
管理員:root,0
普通用戶:xx,1-65535
系統用戶:1-499,1-999(CentOS7)
對守護進程獲取資源進行權限分配
登錄用戶:500+,1000+(CentOS7)
交互式登錄
組group
Linux組:Groupname/GID
管理員組:root,0
普通組:
系統組:1-499,1-999(CentOS7)
普通組:500+,1000+(CentOS7)
安全上下文
Linux安全上下文
運行中的程序:進程(process)
以進程發起者的身份運行:
root:/bin/cat
hello:/bin/cat
進程能夠訪問資源的權限取決于進程的運行者的身份
組的類別:
用戶的主要組(primary group)
用戶必須屬于一個且只有一個主組
組名同用戶名,且僅包含一個用戶,私有組(創建用戶時自動創建)
用戶的附加組(supplementary group)
一個用戶可以屬于零個或多個附加組
用戶和組的配置文件
linux用戶和組的主要配置文件:
/etc/passwd:用戶及其屬性信息(名稱、UID、主組ID等)
/etc/group:組及其屬性信息
/etc/shadow:用戶密碼及其相關屬性
/etc/gshadow:組密碼及其相關屬性
passwd文件格式:
例:
root:x:0:0:root:/root:/bin/bash
hello:x:1000:1000:hello:/home/hello:/bin/bash
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
login name: 登錄名(hello)
passwd:???????????? 密碼(已移動到shadow文件,此地為x)
UID:?????????????????? 用戶身份編號(1000,192…)
GID:?????????????????? 登錄默認所在組編號,主組
GECOS:???????????????????? 用戶全名或者注釋
home directory:用戶主目錄(/home/hello)
shell:????????????????? 用戶默認使用shell
gshadow文件格式:
root:$6$vOrgaA175RBG06bP$A/WYhuPC6pFNEUBKm0xp5/0W8jwQZIGJJUQI5o
1aAQJtLRRW9J9h07ga5mcub4Tl7fL1MLdEH7ayTJsWCwMwN/::0:99999:7:::
systemd-network:!!:17617::::::
hello:$6$9t4/ZZJe$CKCzXlZJct4ryh9eAmr.ztf9SlnuuoQfFCtmEdKdbycAge
Wrv2xhAh0HF6KmRbKLSkcF70icUfysiycoOsbsB/:17623:0:99999:7:::
1.login name:???????????????????????????? 登錄名
2.encrypted password:?????????????????? 加密的密碼,類型、salt、密文
現在一般使用sha512加密
3.date of last password change:上一次修改密碼的時間,已1970-1-1之后
的天數表示
計算方法:echo `date +%s`/3600/24 |bc
4.minimum password age:????????????? 密碼的最小使用周期,即密碼修改之后
最少多少天之后可以再次修改
0 表示隨時可以更改
5.maximum password age:???????????? 密碼的最長使用周期,修改密碼之后多少
天之后必須再次修改密碼(過期)
99999,永不過期
6.password warning period:??????????? 密過過期之前幾天發出提示信息
7.password inactivity period:??? 過期之后多少天之內還可以登錄
8.account expiration date:??????? 從1970-1-1算起,多少天后賬號失效
9.空?????????????????????????????????????????? 預留位置
密碼加密
加密機制:
加密:明文–>密文
解密:密文–>明文
單向加密:哈希算法,原文不同,密文必不同
相同算法定長輸出,獲得密文不可逆推出原始數據
雪崩效應:初始條件的微小改變,引起結果的巨大改變
md5:message digest,128bits,聽說已被破解
sha1:secure hash algorithm,160bits
sha224:224bits
sha256:
sha384:
sha512:
密碼的復雜性策略
使用數字、大寫字母、小寫字母及特殊字符中至少3種
足夠長
使用隨機密碼
定期更換,不要使用最近曾經使用過的密碼
group文件格式:
root:x:0:
hello:x:1000:hello
kvm:x:36:qemu
group_name:???? 群組名稱
password:????????? 密碼,不顯示
GID:?????????????????? 群組ID
user_list:??????? 以當前組為附加組的用戶列表(分隔符為逗號)
gshadow文件格式:
root:::
hello:!!::hello
systemd-network:!::
group name:???????????? 群組名稱
encrypted password:加密的密碼
administrators:?? 組管理員列表,更改組密碼和成員
members:???????????????? 成員,以當前組為附加組的用戶列表(分隔符為逗號)
文件操作命令:
vipw:??? vi+passwd
vigr: vi+passgr
pwck:
grpck:
用戶管理命令:
useradd
usermod
usedel
組賬號維護命令:
groupadd
groupmod
userdel
useradd:用戶創建
useradd [options] login.name
-u ?????????????????????? 指定UID,如不指定,正常情況id按最大的id上遞增
超過范圍則按最小的數遞增
-o??????????????????????? 配合-u選項,不檢查UID的唯一性
-g GID:???????????????? 指明用戶所屬的基本組,可為組名,也可以為GID
-c ”COMMMENT”:???? 用戶的注釋信息
-d home_dir???????? 以指定的路徑(不存在)為家目錄
-s shell:????????????? 指明用戶的默認shell程序
可用列表在/etc/shells中
-G group1..?????????? 為用戶指明附加組,須存在
-N ????????????????????? 不創建私有組做主組,使用users組做主組100
-r ?????????????????????? 創建系統用戶
-m ????????????????????? 創建家目錄,用于系統用戶
-M?????????????????????? 不創建家目錄,用戶非系統用戶
家目錄不存在則登錄會進入”/”
默認值設定:/etc/default/useradd文件中
顯示或更改默認設置:
useradd -D ???????? 顯示基本設置
[root@sentos7 ~]#useradd -D
GROUP=100??????????????? -N選項,如果不創建同名主組,則屬于這個組
HOME=/home??????????????????? 家目錄位置
INACTIVE=-1?????????????? 過期之后還可以登錄的天數,-1表示不會鎖死
EXPIRE=?????????????????????? 賬號有效期,默認99999
SHELL=/bin/bash???????? 默認使用的shell類型
SKEL=/etc/skel???????????? 創建家目錄的源文件地址
CREATE_MAIL_SPOOL=yes 是否創建mail
useradd -D -s /bin/csh 修改默認shell類型
useradd -D -b /dir ??????????? 修改默認家目錄
usreadd -D -g group????????? -N選項之后默認的主組
練習:
1.創建用戶gentoo,附加組為bin和root,默認shell為/bin/csh,注視信息
“Gentoo Distribution”
useradd -G bin,root -s /bin/csh -c “Gentoo Distrition” gentoo
2.創建下面的用戶、組和組成員關系
名字為webs的組
用戶名nginx使用webs作為附屬組
用戶varnish,也是用webs作為附加組
用戶mysql,不可交互式登錄系統,也不是webs的成員,nginx,
varnish,mysql密碼都是magedu
grpadd webs
useradd -G webs nginx
useradd -G webs varnish
useradd -r???? mysql
echo magedu |passwd –stdin nginx
echo magedu |passwd –stdin varnish
echo magedu |passwd –stdin mysql
新建用戶的相關文件和命令
/etc/default/useradd???? 新建用戶默認信息
/etc/skel/??????????????????????????? 家目錄復制地址
/etc/login.defs???????????????????? 添加用戶配置信息
/var/spool/mail?????????????????? 郵箱路徑
newusers passwd格式文件:???? 批量創建用戶
chpasswd????????????????????????????????? 批量修改用戶口令
如:??? [root@sentos7 ~]#cat f2
newmike:maduge
[root@sentos7 ~]#cat f2 |chpasswd
usermod:用戶屬性修改
usermod [options] login
-u UID???????????????????????? 新UID
-g GID或者group????????????? 新主組
-G Group1[,Group]..???? 新附加組,原來的附加組將會被覆蓋
-aG???????????????????????????? 若保留原有,則要同時使用-a 選項
-s shell???????????????? 新的默認使用shell
-c ’comment‘:???????????? 新的注釋信息
-d home ??????????????????? 修改家目錄,新的家目錄不會自動創建
-dm home?????????????????? 創建新家目錄并移動原家數據
-l login.name??????? 新的名字,改名之后家目錄,郵箱不變
-L:???????????????????? lock指定用戶,在/etc/shadow密碼欄增加!
-U:??????????????????????????? unlock指定用戶,將/etc/shadow密碼欄的!拿掉
-e??????????????????????????????? yyyy-MM-DD:指明用戶賬號過期時間
-f INACTIVE:????????????? 設定非活動期限,寬限期
-p, –password PASSWORD
use encrypted password for the new password
用加密之后的明文設置密碼
例:
usermod -u 7888 hello
修改hello的uid為7888
usermod -g root hello
修改hello的主組為root
usermod -aG lily hello
將hello添加到附加組lily
userdel:刪除用戶:
userdel [option]… login.name
-r:????????? 刪除用戶家目錄
id:查看用戶的ID信息:
id [option]…[USER]
-u:????????? 顯示UID
-g:????????? 顯示GID
-G:????? 顯示用戶所屬附加組的ID
-n:????????? 顯示名稱,需配合ugG使用
su:switch user切換用戶或以其他用戶身份執行命令
su [option]..[-] [user[args..]]
切換用戶的方式:
su username???????? 非登錄式切換,不會讀取目標用戶的配置文件,不改變當前
工作目錄
su – username????? 登錄式切換,會不去目標用戶的配置文件,切換至家目錄,
完全切換
root su至其他用戶無需密碼,非root用戶切換時需要密碼
退出用exit,ctrl+d,不要嵌套su
su [-] username -c ‘cmd’???? 換個身份執行命令,執行完之后退回
su – hello -c “cat /etc/shadow”
su -l –login? 相當于su – username
passwd:設置密碼:
passwd [options] username: 修改指定用戶的密碼
常用選項:
-d????????? 刪除指定用戶的密碼
-l??????????? lock鎖定指定用戶,加!
-u????????? unlock,解鎖指定用戶,去掉!
-e ???????? 強制用戶下次登錄修改密碼
-f??? 強制操作
-n mindays:????????? 指定最短使用期限
-x maxdays: 最大使用期限
-w warndays:???? 提前多少天開始警告
-i inactivedays:過期還可以使用的天數
–stdin:從標準輸入接收用戶密碼
例:
echo helloyou |passwd –stdin -n 3 -i 5 hello
修改hello的密碼 最小使用天數3天,過期之后鎖定時間5天
echo redhat |passwd –stdin hello &> /dev/null
修改hello的密碼為redhat 影藏標準輸出和標準錯誤
chage:修改用戶密碼策略
chage [option]…login.name
-d lastdays ???????????????? 還可以繼續使用的天數
-E –expire.date days?? 指定失效時間
-I –inactive days???????????? 過期之后鎖定的時間
-m –mindays days??????????? 最小使用期限
-M –maxdays days??????????? 最長使用時間
-W –warndays days????????? 提醒時間
例:
chage -d 0 tom???? ???? passwd -e tom
設置tom賬號下一次登錄修改密碼
chage -m 0 -M 9999 -W 5 -I 7 tom
設置tom賬號的密碼最小使用時間0,最大9999,提醒5 凍結7
chage -E 2200-09-16?? hello
usermod -e
設置tom賬號失效時間2200-9-16
其他相關命令:
chfn:修改用戶注釋信息,
usermod -c類似
[root@sentos7 ~]#chfn hello
Changing finger information for hello.
-f??? Name [hello]:
-o?? Office [hahah]: 原office為hahah,冒號后輸入新的
-p?? Office Phone [12345]: 不修改可以直接回車
-h?? Home Phone [54321]:
Finger information not changed.
例:
chfn -f hello -h 76521 hello
修改hello的名為hello,homephone為76521
chsh:(-s)修改指定shell
chsh -l 列出當前所有shell, cat /etc/shells
chsh -s /bin/bash hello
修改hello默認shell為csh
finger:查看當前系統登錄的用戶信息,類似who
finger hello
查看用戶hello信息(name,bin,lastlogin ip)
groupadd:創建組
groupadd [option]…group.name
-g GID?????????? 指明GID號,[DID_MIN,GID-max]
-r:???????????????? 創建系統組
CentOS6:<500
CentOS7:<1000
具體規則查看/etc/login.defs
groupmod:組屬性修改
groupadd [option]…group
-n group.name??????????? 修改組名
-g GID:????????????? 新的GID
groupdel:組刪除
groupdel GROUP
gpasswd:更改組密碼
gpasswd [option] group
gpasswd notbook??????? 修改密碼
不支持標準輸入
-a user????????? 將user添加至指定組中
-d user????????? 從指定組中移除用戶user
-A user1,user2,..??? 設置有管理權限的用戶列表
newgrp:臨時切換主組
newgrp hello
臨時切換主組為hello
exit或者ctrl+d退出
如果用戶本不屬于此組,則需要組密碼
groupmems :更改組成員
groupmems [options] [action]
-g,–group groupname????? root only
-a,–add username??????????????????? 指定用戶加入組
-d,–delete username???????? 指定用戶從組中刪除
-p,–purge??????????????????????????????? 刪除組所有成員
-l,–list???????????????????????????? 顯示組成員列表
例:
groupmems -g hello -a lily
usermod -aG hello lily
gpasswd -a hello lily
將lily添加到組hello的三種寫法
groupmems -g hello -d mady
將lily從hello中刪除
groupmems -g hello -p
清除hello附加組所有成員
groups:
groups hello
查看hello的所有組,主組+附加組
其他命令:
pwunconv???? passwd里面顯示密碼,shadow就不存在了
pwconv???????? 將passwd中密碼放入shadow
getent passwd ?????????????????? 查看passwd
getent passwd hello??????????? 只看hello的passwd
getent passwd |shadow | group |gshadow
文件權限:
文件的權限主要針對三類對象進行定義:
owner:屬主,u
group:屬組,g
othe:其他,o
每個文件針對每類訪問者都定義了三種權限
r:???? Readable 讀,查看權限,可使用文件查看類工具獲取其內容
w:??? Writealbe?????? 寫,修改權限,可修改其內容
x:???? eXcutable?????? 執行權限,可以把此文件提請內核啟動為一個進程
ps:
普通用戶不能改文件所有者
所有者修改文件所屬組,要求自己必須在相同組才能改
對于root賬號,rw權限不受控制,x權限受影響
ugo只要有一個x,root就可以執行此文件 ,x全為-,則無法執行
對于普通用戶,沒有r只有w,不能打開,但是能有>,>>寫入
可執行文件,無需r只需x即可執行,r全是有時會需要,比如file
刪除文件需要目錄的w權限
目錄:
r:可以使用ls查看此目錄中文件列表
w:可在此目錄中創建文件,也可刪除此目錄中的文件
x:可以使用ls -l 查看此目錄中的文件列表,可以cd進入此目錄
X:只給目錄x權限,不給文件x權限
ps:
沒有r權限,有x權限,可以進入目錄,無法查看文件列表,可以查看
文件內容
有r權限,沒有x權限,不能進入目錄,不能目錄里面的詳細屬性,也
不能查看文件內容
有w權限,沒有x權限,無法刪除里面文件
有w權限,沒有r權限,可以刪除里面文件
要執行目錄下的文件,必須對目錄具有x權限
用戶獲取文件(目錄)權限:
所有者—所屬組–other,一旦匹配,不看其他
如果是所有者,只看—-,不看后面
如是是所屬組,直接所屬組權限生效,不看other權限
chown:修改文件的屬主
chown [option]..[owner][:[group]] file
chown hello f1??????????????????? 修改文件f1的屬主為hello
chown hello:hello f1? 修改文件f1的屬主和組為root,hello
(:group)只修改屬組,不建議使用
-R?? 遞歸,針對目錄
chown –reference=f1 f2 修改f2的owner:group和f1相同
chgrp:修改文件所屬組
chgrp [option] group file
chgrp lily f1??? 修改文件f1所屬主為lily
chgrp -R ???????????? 遞歸,針對目錄
chgrp –reference=f1 f2 修改f2的group和f1相同
文件權限操作:
drwxr-xr-x. 2 root ? root???? 6 Mar 28 03:47 Desktop
drwxr-xr-x. 2 root ? root???? 6 Mar 28 03:47 Documents
r:4
w:2
x:1
2-4位,owner權限
5-7位,group權限
8-10位,other權限
八進制數表示:??? Octal-mode
— 000 0
–x? 001? 1
-w- 010 2
-wx 011 3
r– 100 4
r-x 101 5
rw- 110 6
rwx 111 7
如:
rwxr-xr-x?????? 755
rw——-???? 600
修改文件權限:
chmod [option]..octal-mode file
-R?? 遞歸
chmod 644 f1?????? 修改文件f1權限為644
chmod -R 777 dr1 遞歸修改dr1下所有文件權限為777
chmod [option]..mode,[mode]…file
chmod u=rw,g=rw,o=r f3
修改文件f3的權限為:rw-rw-r–
修改一類用戶的所有權限:
u= g= o= ug= a=
u=,g=,o= 清空
修改一類用戶某位或某些權限
u+r,g-rw,o+r,o-w…a+r,a-x….
chmod [option] –reference=f1 f2 f3
參考f1設置f2,f3的所有權限
例:
chmod u+wx,g-r,o=rx file
修改文件file權限,u+wx g-r o=rx
chmod -R g+rwX /testdir
遞歸修改目錄testdir權限,g+rwX
新建文件和目錄的默認權限:
umask指:可以用來保留新創建文件權限
新建file權限:666-umask指
如果所得結果某位存在執行(奇數)權限,則其權限+1
新建dir權限:777-umask
非特權用戶umask是002
root賬號的umask是022
umask?????????? 查看umask值
umask -S?????? 模式方式顯示
umask 2222?? 設置umask值為222
umask u=rwx,g=r,o=??? 模式方式修改umask
umask -p?????? 輸出可別調用,多了個名字。。
如:
umask -p >>.bashrc
umask文件地址:
/etc/bashrc?????????? 全局
~/.bashrc????????????? 用戶設置
練習:
1.當用戶docker對/testdir目錄無執行權限是,意味著無法做哪些操作
無法進入目錄
可以用ls查看列表,但是無法查看文件屬性類型
就算對目錄中的文件有rw權限,也無法查看和寫入>>也不行
2.當用戶mongodb對/testdir目錄無讀權限時,意味著無法做哪些操作
可以進入目錄,無法查看文件列表,可以查看ll file詳細信息
可以執行目錄內程序,cat file可以查看文件內容
如果對文件有w權限,還可以通過>>寫入文件
3.當用戶redis對/testdir目錄無寫權限時,該目錄下的只讀文件file1是否
可以修改和刪除
不能
4.當用戶zabbix對/testdir具有寫執行權限時,該目錄下的制度文件file1是否
可修改和刪除?
可以刪除,不能修改
5.復制/etc/fstab文件到/var/tmp下,設置文件所有者為tomcat讀寫權限,所屬
組為apps組有讀寫權限,其他人無權限
cp /etc/fstab /var/emp/
chmod 650 /var/tem/fstab
6.誤刪除了用戶git的家目錄,請重建并回復該用戶家目錄及相應的權限屬性
cp -r /etc/skel/ /home/git
chown -R git:git /home/git
linux文件系統上的特殊權限:
SUID,SGID,Sticky
三種常用權限:r,w,x?????????? user,group,other
安全上下文
前提:進程有屬主和屬組:文件有屬主和屬組
1.任何一個可執行程序文件能不能啟動為進程,取決于發起者對程序文件是否
擁有執行權限
2.啟動為進程之后,起進程的屬主為發起者,進程的屬組為發起者所屬的組
3.進程訪問文件的權限,取決于進程的發起者
a.進程的發起者,同文件的屬主:則應用文件屬主權限
b.進程的發起者,屬于文件屬組,則應用文件文件屬組權限
c.應用文件“其他”權限
可執行文件上SUID權限:
任何一個可執行程序文件能不能啟動為進程:取決于發起者對程序文件是否
擁有執行權限
啟動為進程之后,其進程的屬主為原程序文件的屬主
SUID只對二進制可執行程序有效
SUID設置在目錄上無意義
權限設定:
chmod u+s file
chmod u-s file
可執行文件上SGID
任何一個可執行程序文件能不能啟動為進程:取決于發起者對程序文件是否
擁有執行權限
啟動為進程之后,其進程的屬組為原程序文件的屬組
權限設定:
chmod g+s file
chmod g-s file
目錄上的SGID權限:
默認情況下,用戶創建文件時,其屬組為此用戶所屬的主組
一旦某目錄被設定了SGID,則對此目錄有寫權限的用戶在此目錄中創建的文件
所屬的組為此目錄的屬組
通常用于創建一個協作目錄
權限設定:
chmod g+s DIR
chmod g-s DIR
Sticky 位
具有寫權限的目錄通常用戶可以刪除該目錄中的任何文件,無論該文件的權限
或擁有權
在目錄設置Sticky位,只有文件的所有者或root可以刪除該文件
sticky設置在文件上無意義
權限設定:
chmod o+t DIR…
chmod o-t DIR…
特殊權限數字法:
SUID:????? 4—
GUID:???? 2—
sticky????? 1—
權限位映射:
SUID:????? user,占據屬主的執行權限位:
s:屬主擁有x權限
S:屬主沒有x權限
SGID:????? group,占據屬組的執行權限位
s:???? group擁有執行權限位
S: group沒有x權限
Sticky:other,占據other的執行權限位
t:???? other擁有x權限
T:? other沒有x權限
設定文件特定屬性:
chattr +i 不能刪除,改名,更改
-i ????????? 取消
chatr +a? 只能追加內容
-a?????????? 取消
chattr +A ???? 鎖定atime
lsattr????????????? 顯示特定屬性
-R????????? 可以遞歸
例
chattr +i /data/11???????? 給/data/11增加鎖定,不能刪除更改改名
chattr +a /data/11??????? 給/data/11增加鎖定,只能追加內容
i存在的情況,a存在,也無法追加數據
chattr -i -a /data/11???? 取消data/11的特定權限
訪問控制列表
ACL:Access Control List,實現靈活的權限管理
除了文件的所有者,所屬組和其他人,可以對更多的用戶設置權限
CentOS7 默認創建的xfs和ext4文件系統具有ACL功能
CentOS7 之前的版本,默認手工創建的ext4文件系統無ACL功能,需手動增加
(安裝系統的時候創建的分區默認安裝了acl,后續分區默認不帶)
tune2fs -o acl /dev/sdb1
mount -o acl /dev/sdb1 /mnt/test
如添加了ACL權限,權限后面的.就會變成+
-rw-r–r–. 1 root root 8127 Apr 6 21:59 f16
未添加ACL
drwxrwxrwx+ 2 root root?? 49 Apr 7 01:55 23
已添加ACL
ACL生效順序:
所有者,自定義用戶,自定義組,其他人
PS:
用戶所具有的組權限,為所有的組權限疊加取最大權限
[root@sentos7 /data]#getfacl 234
# file: 234
# owner: root
# group: root
# flags: -s-?????????? 顯示特殊權限
user::r-x??????????????? 所有者owner,
user:hello:rwx??????? 自定義用戶user
group::r-x
group:hello:rwx
group:lily:rwx??????? 自定義組
mask::rwx??????????????????? 組最高權限
other::-wx??????????????????? others
為多用戶或者組的文件和目錄賦予訪問權限rwx
getfacl??? f1 dr1
查看f1,目錄dr1的acl權限
setfacl [-bkndRLP] { -m|-M|-x|-X … } file …
setfacl -m, –modify=acl u:hello:rwx 35 23
修改文件35,目錄23的acl權限,使user用戶hello具有rwx權限
setfacl???? -Rm g:lily:rwX 23
遞歸修改目錄23的acl權限,使lily組用戶具有rwX權限
setfacl -M file.acl f5 234
按照文件file.acl中的權限設置文件f5 目錄234的權限
[root@sentos7 /data]#cat file.acl
u:hello:rwx
g:lily:rwx
g:hello:rwx
setfacl -m d:u:wang:rx dir
-d, –default?? operations apply to the default ACL
setfacl -d -m u:hello:rwx dir1
不能寫成-m -d
設置目錄dir的默認acl權限,給用戶wang 附件rx權限,
默認對于目錄下新建的文件或者目錄默認附加相同權限,
對于現有文件,權限無變化
setfacl -x u:hello file|dir
清空hello用戶對于file|dir的acl權限
setfacl -X file1.acl file dir
按照文件文件file1.acl刪除文件file 目錄dir的權限
setfacl -RX file3 dir1 如需遞歸,-R應在X的前面
setfacl -k dir
刪除默認(default)ACL權限
setfacl -b file1
清除所有acl權限
getfacl file1 |setfacl –set-file=- file2
復制file1的acl權限給file2
–set選項會把原有的ACL項都刪除,用新的替代,需要注意的是一定要
包含UGO的設置,不能像-m一樣只是添加ACL就可以
示例:
setfacl –set u::rw,u:wang:rw,g::r,o::- file1
cp -p/-a f1 f2
復制文件用-p選項可以保留源acl權限
mask值:
ACL文件上的group權限是mask值(自定義用戶,自定義組,用戶組的最大權限)
而非傳統的組權限,相當于限高
getfacl可以看到特殊權限:flags
通過ACL賦予目錄默認x權限,目錄內文件也不會繼承x權限
base ACL不能刪除
mask只影響除所有者和other之外的人和組的最大權限
mask需要與用戶的權限進行與運算后,才能變成有限的權限
用戶或組的設置必須存在于mask的權限設定范圍內才會生效
setfacl -m mask::rx file1
設置文件file1的mask值為rx
備份和恢復acl
主要的的文件操作命令cp和mv都支持acl,只是cp命令需要加上-p選項
但是tar等常見的備份工具是不會保留目錄和文件的acl信息
示例:
getfacl -R /tmp/dir1 >acl.txt
setfacl -R -b /tmp/dir1
setfacl -R –set-file=acl.txt /tmp/dir1
setfacl –restore acl.txt
getfacl -R /tmp/dir1
練習:
1.在/testdir/dir里創建的新文件自動屬于webs組,組apps的成員如:
tomcat能對這些新文件有讀寫權限,組dbs的成員如:mysql只能對新文件有讀
權限,其他用戶(不屬于webs,apps,dbs)不能訪問這個文件夾
chgrp webs /testdir/dir
chmod g+s /testdir/dir
chmod o= /testdir/dir
setfacl -m d:g:apps:rw,d:g:dbs:r /tsetdir/dir
2.備份/testdir/dir里面所有文件的acl權限到/root/acl.txt中,清除
/testdir/dir中所有acl權限,最后還原acl權限:
getfacl -R /testdir/dir >/root/acl.txt
setfacl -R -b /testdir/dir
setfacl -R –set-file=/root/acl.txt
getfacl -R /testdir/dir
筆記整理完成時間:2018年4月7日11:42:24
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95200