ACL權限
查看分區ACL權限是否開啟
# 查詢指定分區詳細文件系統信息
dump2fs -h /dev/sda5
選項:
-h 僅顯示超級塊中信息,而不顯示磁盤快組的詳細信息
結果中的Default mount options中有acl表示開啟了ACL
注意dumpe2fs只能查看ext的文件系統
臨時開啟分區ACL權限
mount -o remount,acl /dev/sda5
永久開啟分區ACL權限
# 修改配置文件
vi /etc/fstab
在文件中的defaults后面加入",acl"如下(一般默認開啟,無需添加):
UUID=11471313-e029-4391-b991-1df1d461cc81 / xfs defaultsm,acl 0 0
# 重新掛在文件系統或重啟系統,使修改生效
mount -o remount /
查看ACL權限
# 查看ACL權限
getfacl 文件名
設定ACL權限
# 設定ACL權限
setfacl 選項 文件名
選項:
-m 設定ACL權限
-x 刪除指定的ACL權限
-b 刪除所有的ACL權限
-d 設置默認ACL權限
-k 刪除默認ACL權限
-R 遞歸設定ACL權限
遞歸權限
setfacl -m u:用戶名:權限 -R 目錄(賦予文件會報錯)
遞歸是父目錄在設定ACL權限時,所有的子文件和子目錄也會擁有相同的ACL權限。
遞歸權限只能賦予目錄,不能賦予文件
容易帶來權限溢出,比如對目錄賦予權限rx,文件則會擁有執行權限,所以慎用
默認ACL權限
setfacl -m d:u:用戶名:權限 目錄文件(賦予文件不會報錯,但是沒意義)
默認ACL權限的作用是如果給父目錄設定了默認的ACL權限,那么父目錄中所有新建的子文件都會繼承父目錄的ACL權限。
設定權限
# 給用戶賦予權限
setfacl -m u:用戶名:權限 目錄文件
例如:setfacl -m u:zdy:rw /zdy
# 給組賦予權限
setfacl -m g:組名:權限 目錄文件
刪除權限
# 刪除指定用戶的ACL權限
setfacl -x u:用戶名 目錄文件
# 刪除指定用戶組的ACL權限
setfacl -x g:組名 目錄文件
# 刪除所有ACL權限
setfacl -b 文件名
最大有效權限mask
mask是用來指定最大有效權限的。如果給用戶賦予了ACL權限,和mask的權限“相與”才能得到真正的用戶權限。
# 設定mask權限為rx,使用m:權限 格式
setfacl -m m:rx 文件名
sudo權限
root把本來只能超級用戶執行的命令賦予普通用戶執行
sudo的操作對象是系統命令
sudo使用
visudo # 實際修改的是 /etc/sudoers文件
在文件中添加行
root ALL=(ALL) ALL
# 用戶名 被管理主機的地址=(可以使用的身份) 授權命令(絕對路徑)
例如:zdy ALL=(ALL) /sbin/shutdown -r now
# 只賦予現在重啟的權限
# 切換成某個用戶
su - 用戶名
# 查看可用的sudo命令
sudo -l
# 普通用戶執行sudo 賦予的命令(最好寫絕對路徑,centos6之后可以不寫)
sudo /sbin/shutdown -r now
查看命令位置whereis vi
# 給用戶添加新建用戶與修改密碼的權限,但是不能修改root本身的密碼
zdy ALL=/usr/sbin/useradd
zdy ALL=/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd "",!/usr/bin/passwd root
# 不要賦予下面的權利,這樣的話用戶得到的是root下的vi
zdy ALL=/bin/vi
文件特殊權限
盡量少修改!
SetUID
SetUID針對文件的作用
只有可執行的二進制程序才能設定SUID權限
命令執行者對該程序擁有執行權限
命令執行者在執行該程序時獲得改程序文件屬主的身份(在執行程序的過程中靈魂附體為文件的屬主)
SetUID權限只在該程序執行過程中有效,也就是說身份改變只能在程序執行過程中有效。
設定SetUID
# 設定SetUID的方法
chmod 4755 文件名 #4代表SUID
chmod u+s 文件名
# 取消
chmod 0755 文件名
chmod u-s 文件名
危險的SetUID
關鍵目錄應嚴格控制寫權限。比如"/","/usr"等
用戶的密碼設置要嚴格遵守密碼三原則(復雜性,易記憶性,時效性)
對系統中默認應該具有SetUID權限的文件作一列表,定時檢查有沒有這之外的文件被設置了SetUID權限
定期檢查是否有新的程序獲得了SUID或者SGID,腳本以及使用方法查看http://www.imooc.com/video/9664
SetGID
SetGID針對文件的作用
只有可執行的二進制程序才能設定SGID權限
命令執行者對該程序擁有執行權限
命令執行在執行該程序時,組身份升級為該程序文件的屬組
SetGID權限只在該程序執行過程中有效,也就是說組身份改變只能在程序執行過程中有效。
SetGID針對目錄的作用
普通用戶必須對此目錄擁有r和x權限,才能進入此目錄
普通用戶在此目錄中的有效組會變成此目錄的屬組
若普通用戶對此目錄擁有w權限時,新建的文件的默認屬組是這個目錄的屬組
設定SetGID
# 設定SetUID的方法
chmod 2755 文件名 #2代表SGID
chmod g+s 文件名
# 取消
chmod 0755 文件名
chmod g-s 文件名
Sticky BIT
SBIT粘著位作用
粘著位只對目錄有效
普通用戶對該目錄擁有wx權限,即普通用戶可以對此目錄擁有寫入權限
如果沒有粘著位,因為普通用戶擁有w權限,所以可以刪除此目錄下所有文件,包括其他用戶建立的文件。一旦賦予了粘著位,除了root可以刪除所有文件,普通用戶就算擁有w權限,也只能刪除自己建立的文件,但是不能刪除其他用戶建立的文件。
設定粘著位
# 設置粘著位
chmod 1777 目錄名
chmod o+t 目錄名
# 取消粘著位
chmod 0777 目錄名
chmod o-t 目錄名
不可改變位權限chattr權限
chattr
chattr [+-=] [選項] 文件或目錄名
+增加權限 -刪除權限 =等于某權限
選項:
i(insert):如果對文件設置i屬性,那么不允許對文件進行刪除、改名,也不能添加和修改數據;
如果對目錄設置i屬性,那么只能修改目錄下文件的數據,但不允許建立和刪除文件。
a(append):如果對文件設置a屬性,那么只能在文件中增加數據,但是不能刪除也不能修改數據;(禁用vi,但是可以用 echo 內容>>文件名)
如果對目錄設置a屬性,那么只允許在目錄中建立和修改文件,但是不允許刪除。
lsattr查看文件系統屬性
lsattr 選項 文件名
選項:
-a 顯示所有文件和目錄
-d 如目標是目錄,僅列出目錄本身的屬性,而不是子文件的