ACL權(quán)限
ACL權(quán)限簡介與開啟
對于一個文件和目錄的權(quán)限只有三種權(quán)限:所屬主砰碴、所屬組躏筏、其他人。當(dāng)權(quán)限關(guān)系比較復(fù)雜是呈枉,三種角色往往是不夠的趁尼,ACL就是解決了權(quán)限不夠的問題。類似于windows的用戶權(quán)限猖辫。
dump2fs -h /dev/sda3
#dumpe2fs命令是查詢指定分區(qū)詳細(xì)文件系統(tǒng)信息的命令
選項(xiàng):
-h 僅顯示超級塊中信息酥泞,而不顯示磁盤塊組的詳細(xì)信息。
df -h #先看系統(tǒng)有哪些分區(qū)
dump2fs -h 根目錄分區(qū)
在列出的信息中找到 Default mount options(默認(rèn)掛載選項(xiàng))啃憎,其值帶有acl 說明分區(qū)支持ACL權(quán)限
如果沒有芝囤,需要手動臨時開啟或永久開啟
臨時開啟分區(qū)ACL權(quán)限
mount -o renmount,acl /
# 重新掛載根分區(qū),并掛載加入acl權(quán)限
永久開啟分區(qū)ACL權(quán)限
vi /etc/fstab #打開【系統(tǒng)開機(jī)自動掛載文件】
在需要重新掛載的分區(qū)下荧飞,default后面加入凡人,acl
保存,重啟即可
查看與設(shè)定ACL權(quán)限
getfacl 文件名
#查看acl權(quán)限
setfacl [選項(xiàng)] 文件名 #設(shè)定ACL權(quán)限
選項(xiàng) | 功能 |
---|---|
-m | 設(shè)定ACL權(quán)限 |
-x | 刪除指定的ACL權(quán)限 |
-b | 刪除所有的ACL權(quán)限 |
-d | 設(shè)定默認(rèn)ACL權(quán)限 |
-k | 刪除默認(rèn)ACL權(quán)限 |
-R | 遞歸設(shè)定ACL權(quán)限 |
setfacl -m u:st:rx /project/ # 給st用戶對project目錄設(shè)置rx權(quán)限
這是查看文件權(quán)限發(fā)現(xiàn)后面多了一個 "+" 說明具有ACL權(quán)限
用查看ACL權(quán)限命令發(fā)現(xiàn)多了一個user:st:r-x
setfacl -m g:tgroup2:rwx /project/ #給tgroup2組對project目錄設(shè)置rwx權(quán)限
用查看ACL權(quán)限命令發(fā)現(xiàn)多了一個group:tgroup2:rwx
最大有效權(quán)限與刪除ACL權(quán)限
最大有效權(quán)限mask
mask是用來指定最大有效權(quán)限的叹阔。如果我給用戶賦予了ACL權(quán)限挠轴,是需要和mask的權(quán)限“相與”才能得到用戶的真正權(quán)限,它只影響ACL權(quán)限和所屬組的權(quán)限耳幢。
setfacl -m m:rx 文件名 #設(shè)定mask權(quán)限為r-x岸晦,使用”m:權(quán)限“格式
刪除ACL權(quán)限
setfacl -x u:用戶名 文件名 #刪除指定用戶的ACL權(quán)限
setfacl -x g:組名 文件名 #刪除指定用戶組的ACL權(quán)限
setfacl -b 文件名 #會刪除文件的所有的ACL權(quán)限
默認(rèn)ACL權(quán)限和遞歸ACL權(quán)限(只針對目錄)
遞歸是父目錄在設(shè)定ACL權(quán)限時,所有的子文件和子目錄也會擁有相同的ACL權(quán)限
setfacl -m u:用戶名:權(quán)限 -R 目錄名 (-R不能放在-m的位置)
但此時加入新的用戶睛藻,該用戶的對文件夾的遞歸權(quán)限并沒有生效启上,所以需要默認(rèn)ACL權(quán)限
默認(rèn)ACL權(quán)限的作用時如果給父目錄設(shè)定了默認(rèn)ACL權(quán)限,那么父目錄中所有新建的子文件都會繼承父目錄的ACL權(quán)限店印。
setfacl -m d:u:用戶名:權(quán)限 目錄名 (d)
默認(rèn)ACL權(quán)限對現(xiàn)有用戶是不生效的冈在,只對新加入的用戶生效
文件特殊權(quán)限
SetUID
SetUID的功能
只有可以執(zhí)行的二進(jìn)制程序才能設(shè)定SUID權(quán)限
命令執(zhí)行者要對該程序擁有x(執(zhí)行)權(quán)限
命令執(zhí)行者在執(zhí)行該程序時獲得該程序文件屬主的身份(在執(zhí)行程序的過程中靈魂附體為文件的屬主)
SetUID權(quán)限只在該程序執(zhí)行過程中有效,也就是說身份改變只在程序執(zhí)行過程中有效
passwd命令擁有SetUID權(quán)限按摘,所以普通用戶可以修改自己的密碼
cat命令沒有SetUID權(quán)限包券,所以普通用戶不能查看/etc/shadow文件內(nèi)容
設(shè)定SetUID的方法
4代表SUID
chmod 4755 文件名 (如果要去掉則重新賦予755權(quán)限)
chmod u+s 文件名 (如果要去掉則重新賦予u-s權(quán)限)
當(dāng)執(zhí)行命令后查看文件權(quán)限纫谅,如果不是小寫s而是大寫的S,說明設(shè)定SUID權(quán)限失敗溅固。不滿足上述的4個條件
取消SetUID的方法
chmod 755 文件名
chmod u-s 文件名
危險(xiǎn)的SetUID
關(guān)鍵目錄應(yīng)嚴(yán)格控制寫權(quán)限付秕。比如“/”、“/usr”等
用戶的密碼設(shè)置要嚴(yán)格遵循密碼三原則
對系統(tǒng)中默認(rèn)應(yīng)該具有SetUID權(quán)限的文件作一列表侍郭,定時檢查有沒有這之外的文件被設(shè)置了SetUID權(quán)限
SetGID
針對文件
只有可以執(zhí)行的二進(jìn)制程序才能設(shè)定SGID權(quán)限
命令執(zhí)行者要對該程序擁有x(執(zhí)行)權(quán)限
命令執(zhí)行者在執(zhí)行該程序時询吴,組身份升級為該程序文件的屬組
SetUID權(quán)限同樣只在該程序執(zhí)行過程中有效熊镣,也就是說組身份改變只在程序執(zhí)行過程中有效
ll /usr/bin/locate
ll /var/lib/mlocate/mlocate.db
/usr/bin/locate是可執(zhí)行二進(jìn)制程序博助,可以賦予SGID
執(zhí)行用戶lamp對/usr/bin/locate命令擁有執(zhí)行權(quán)限
執(zhí)行/usr/bin/locate命令時盯孙,組身份會升級為slocate組线罕,而slocate組對/var/lib/mlocate/mlocate.db數(shù)據(jù)庫擁有r權(quán)限琉挖,所以普通用戶可以使用locate命令查詢mlocate.db數(shù)據(jù)庫
命令結(jié)束飞盆,lamp用戶的組身份返回為lamp組
針對目錄
普通用戶必須對此目錄擁有r和x權(quán)限逆害,才能進(jìn)入此目錄
普通用戶在此目錄中的有效組會變成此目錄的屬組
若普通用戶對此目錄擁有w權(quán)限時壹士,新建的文件的默認(rèn)屬組是這個目錄的屬組
設(shè)定SetGID
2代表SGID
chmod 2755 文件名
chmod g+s 文件名
取消SetGID
chmod 755 文件名
chmod g-s 文件名
Sticky BIT
粘著位目前只對目錄有效
普通用戶對該目錄擁有w和x權(quán)限嵌削,即普通用戶可以在此擁有寫入權(quán)限
如果沒有粘著位毛好,因?yàn)槠胀ㄓ脩魮碛衱權(quán)限,所以可以刪除此目錄下所有文件苛秕,包括其他用戶建立的文件肌访。一旦賦予了粘著位,除了root可以刪除所有文件艇劫,普通用戶就算擁有w權(quán)限吼驶,也只能刪除自己建立的文件,但是不能刪除其他用戶建立的文件
ll -d /tmp/
設(shè)置粘著位
chmod 1755 目錄名
chmod o+t 目錄名
取消粘著位
chmod 777 目錄名
chmod o-t 目錄名
文件系統(tǒng)屬性chattr權(quán)限
chattr命令格式
chattr 【+-=】【選項(xiàng)】文件或目錄名 (對root用戶同樣起作用)
+:增加權(quán)限
-:刪除權(quán)限
=:等于某權(quán)限
選項(xiàng):
i:如果對文件設(shè)置i屬性店煞,那么不允許對文件進(jìn)行刪除蟹演、改名,也不能添加和修改數(shù)據(jù)顷蟀;如果對目錄設(shè)置i屬性酒请,那么只能修改目錄下文件的數(shù)據(jù),但不允許建立和刪除文件
a:如果對文件設(shè)置a屬性鸣个,那么只能在文件中增加數(shù)據(jù)羞反,但是不能刪除也不能修改數(shù)據(jù);如果對目錄設(shè)置a屬性囤萤,那么只允許在目錄中建立和修改文件昼窗,但是不允許刪除
lsattr 【選項(xiàng)】文件名
選項(xiàng):
-a:顯示所有文件和目錄
-d:若目標(biāo)是目錄,僅列出目錄本身的屬性涛舍,而不是子文件的
系統(tǒng)命令sudo權(quán)限
sudo權(quán)限
root把本來只能超級用戶執(zhí)行的命令賦予普通用戶執(zhí)行澄惊。
sudo的操作對象是系統(tǒng)命令。
sudo使用
visudo #實(shí)際修改的是/etc/sudoers 文件
root ALL=(ALL:ALL) ALL
#用戶名 被管理主機(jī)的地址=(可使用的身份) 授權(quán)命令(絕對路徑)
%wheel ALL=(ALL:ALL) ALL
#%組名 被管理主機(jī)的地址=(可使用的身份) 授權(quán)命令(絕對路徑)
授權(quán)sc用戶可以重啟服務(wù)器
visudo
wangwei ALL=/sbin/shutdown -r now
普通用戶執(zhí)行sudo賦予的命令
su - wangwei
sudo -l #查看可用的sudo命令
sudo /sbin/shutdown -r now #普通用戶執(zhí)行sudo賦予的命令