用于解決身份不夠用的問題
ACL(access control list) 訪問控制表
ACL是存在于計算機中的一張表,它使操作系統(tǒng)明白每個用戶對特定系統(tǒng)對象,例如文件目錄或單個文件的存取權(quán)限。
這張表對于每個系統(tǒng)用戶有擁有一個訪問權(quán)限。
最一般的訪問權(quán)限包括讀文件(包括所有目錄中的文件),寫一個或多個文件和執(zhí)行一個文件(如果它是一個可執(zhí)行文件或者是程序的時候)。
ACL權(quán)限是對分區(qū)而言的。
查看分區(qū)ACL權(quán)限是否開啟
1、查看分區(qū)情況 report file system disk space usage
df -h
2、查看分區(qū)是否開啟ACL權(quán)限
dumpe2fs -h /dev/sda3 dump ext2/ext3/ext4 filesystem information
#dumpe2fs命令是查詢指定分區(qū)詳細文件系統(tǒng)的命令
-h 僅顯示超級塊中信息,而不顯示磁盤塊組的詳細信息
3、Default mount options: user_xattr acl
分區(qū)默認開啟ACL權(quán)限
臨時開啟分區(qū)ACL權(quán)限
mount -o remount,acl /
#重新掛載根分區(qū),并掛載加入acl權(quán)限
永久開啟分區(qū)ACL權(quán)限 分兩步
1、vi /etc/fstab #系統(tǒng)的開機自動掛載文件
UUID=ec77....af / ext4 defaults,acl 1 1 #加入acl。defaults默認開啟acl權(quán)限。
2、mount -o remount /
#重新掛載文件系統(tǒng)或重啟動系統(tǒng),使修改生效
getfacl 文件名
#查看acl權(quán)限 get file access control lists
setfacl 選項 文件名
-m 設(shè)定ACL權(quán)限modify
-x 刪除指定的ACL權(quán)限r(nóng)emove
-b 刪除所有的ACL權(quán)限r(nóng)emove all
-d 設(shè)定默認ACL權(quán)限default
-k 刪除默認ACL權(quán)限r(nóng)emove default
-R 遞歸設(shè)定ACL權(quán)限r(nóng)ecursive
實驗步驟:
mkdir /PRoject
useradd user1
useradd user2
useradd st
groupadd tgroup
gpasswd -a user1 tgroup
gpasswd -a user2 tgroup
chown root:tgroup /project
chmod 770 /project
setfacl -m u:st:rx /project/
#給用戶st賦予rx權(quán)限,使用“u:用戶名:權(quán)限”格式
給用戶組設(shè)定ACL權(quán)限
groupadd tgroup2
setfacl -m g:tgroup2:rwx /project/
#為組tgroup2分配ACL權(quán)限。使用“g:組名:權(quán)限”格式
最大有效權(quán)限mask:
mask是用來指定最大有效權(quán)限的。
如果給用戶賦予了ACL權(quán)限,是需要和mask的權(quán)限“相與”才能得到用戶的真正權(quán)限
影響ACL權(quán)限和所屬組的權(quán)限,所有者權(quán)限不受影響。
如
user::rwx
user:st:rwx #真正權(quán)限是r-x
group::rwx #真正權(quán)限是r-x
mask::r-x
setfacl -m m:rx /project/ #設(shè)定mask權(quán)限為rx。使用“m:權(quán)限”格式
刪除ACL權(quán)限:
setfacl -x u:用戶名 文件名
#刪除指定用戶的ACL權(quán)限
setfacl -x g:組名 文件名
#刪除指定用戶組的ACL權(quán)限
setfacl -b 文件名
#刪除文件的所有ACl權(quán)限
遞歸ACL權(quán)限:
遞歸是父目錄在設(shè)定ACL權(quán)限時,所有的子文件和子目錄也會擁有相同的ACL權(quán)限
setfacl -m u:用戶名:權(quán)限-R 目錄名
默認ACL權(quán)限:
默認ACL權(quán)限的作用是
如果給父目錄設(shè)定了默認ACL權(quán)限,那么父目錄中所有新建的子文件都會繼承父目錄的ACL權(quán)限
setfacl -m d:u:用戶名:權(quán)限 目錄名
SetUID #普通用戶在執(zhí)行此程序時獲得文件所有者身份
只有可執(zhí)行的二進制程序才能設(shè)定SUID權(quán)限
命令執(zhí)行者要對該程序擁有x(執(zhí)行)權(quán)限
命令執(zhí)行者在執(zhí)行該程序時獲得該程序文件屬主的身份(在執(zhí)行程序的過程中靈魂附體的文件的屬主)
SetUID權(quán)限只在該程序執(zhí)行過程中有效,也就是說身份改變只在程序執(zhí)行過程中有效
passwd命令擁有SetUID權(quán)限,普通用戶執(zhí)行時,變成root,所以普通用戶可以修改自己的密碼
cat命令沒有SetUID權(quán)限,所以普通用戶不能查看/etc/shadow文件內(nèi)容
設(shè)定SetUID的方法:
chmod 4755 文件名 #4代表SUID
chmod u+s
取消SetUID的方法:
chmod 755 文件名
chmod u-s 文件名
危險的SetUID
紅色代表權(quán)限不合理的危險文件
不建議用戶自己設(shè)定SUID權(quán)限
關(guān)鍵目錄應(yīng)嚴格控制寫權(quán)限。比如“/”、“/usr”等
用戶的密碼設(shè)置要嚴格遵守密碼三原則
應(yīng)該對系統(tǒng)中默認應(yīng)該具有SetUID權(quán)限的文件作一列表,用shell腳本定時檢查有沒有這之外的文件被設(shè)置了SetUID權(quán)限
針對文件的作用:
只有可執(zhí)行的二進制程序才能設(shè)置SGID權(quán)限
命令執(zhí)行者要對該程序擁有x(執(zhí)行)權(quán)限
命令執(zhí)行在執(zhí)行程序的時候,組身份升級為該程序文件的屬組
SetGID權(quán)限同樣只在該程序執(zhí)行過程中有效,也就是說組身份改變只在程序執(zhí)行過程中有效
例子
/usr/bin/locate
-rwx--s--x root slocate ...
/var/lib/mlocate/mlocate.db
-rw-r----- root slocate ...
/usr/bin/locate是可執(zhí)行二進制程序,可以賦予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)限,才能進入此目錄
普通用戶在此目錄中的有效組會變成此目錄的屬組
若普通用戶對此目錄擁有w權(quán)限時,新建的文件的默認屬組是這個目錄的屬組
設(shè)定SetGID
2代表SGID
chmod 2755 文件名
chmod g+s 文件名
取消SetGID
chmod 755 文件名
chmod g-s 文件名
SBIT粘著位作用:
粘著位目前只對目錄有效
普通用戶對該目錄擁有w和x權(quán)限,即普通用戶可以在此目錄擁有寫入權(quán)限
如果沒有粘著位,因為普通用戶擁有w權(quán)限,所以可以刪除此目錄下所有文件,包括其他用戶建立的文件。
一旦賦予了粘著位,除了root可以刪除所有文件,普通用戶就算擁有w權(quán)限,也只能刪除自己建立的文件,但是不能刪除其他用戶建立的文件。
例子
/tmp
drwxrwxrwt root root
設(shè)置粘著位:
chmod 1755 目錄名
chmod o+t 目錄名
取消粘著位:
chmod 777 目錄名
chmod o-t 目錄名
change file attributes on a linux file system
修改文件系統(tǒng)屬性:
chattr +-= 選項 文件或目錄名
+ 增加權(quán)限
- 刪除權(quán)限
= 等于某權(quán)限
選項
i:(防止誤操作)鎖定命令
如果對文件設(shè)置i屬性,那么不允許對文件進行刪除、改名,也不能添加和修改數(shù)據(jù),針對root生效
如果對目錄設(shè)置i屬性,那么只能修改目錄下文件的數(shù)據(jù),但不允許建立和刪除文件
a:
如果對文件設(shè)置a屬性,那么只能在文件中增加數(shù)據(jù),但是不能刪除也不能修改數(shù)據(jù)
如果對目錄設(shè)置a屬性,那么只允許在目錄中建立和修改文件,但是不允許刪除
查看文件系統(tǒng)屬性:
lsattr 選項 文件名
-a 顯示所有文件和目錄
-d 若目標是目錄,僅列出目錄本身的屬性,而不是子文件
sudo權(quán)限:
root把本來只能超級用戶執(zhí)行的命令賦予普通用戶執(zhí)行
sudo的操作對象是系統(tǒng)命令
sudo使用:
visudo #實際修改的是/etc/sudoers文件,即命令vi /etc/sudoers
root ALL=(ALL) ALL
#用戶名 被管理主機的地址=(可使用的身份) 授權(quán)命令(絕對路徑)
#(ALL)可以省略
%wheel ALL=(ALL) ALL
#%wheel組名 被管理主機的地址=(可使用的身份) 授權(quán)命令(絕對路徑)
例子:
賦予user1用戶重啟服務(wù)器權(quán)限
user1 ALL= /sbin/shutdown -r now
普通用戶執(zhí)行sudo賦予的命令
sudo -l #查看可用的sudo命令
sudo /sbin/shutdown -r now #普通用戶執(zhí)行sudo賦予的命令
新聞熱點
疑難解答