第一節 ACL權限的簡介與開啟
1.ACL權限簡介
解決用戶身份不足的情況下,文件對用戶的權限無法分配的問題
2.查看分區ACL權限是否開啟
dumpe2fs -h /dev/sda3
#dumpe2fs命令是查詢指定分區詳細文件系統信息的命令,查看Default_mount_options選項后是否指定開啟ACL權限
選項:
-h? ? ? 僅顯示超級塊中信息,而不顯示磁盤塊組的詳細信息
注意:是否支持ACL權限取決于文件所在的分區
3.臨時開啟分區ACL權限
mount -o remount,acl /
#重新掛載根分區,并掛載加入acl權限
4.永久開啟分區ACL權限
vi /etc/fstab
UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2 ?? /??? ext4? ? defaults,acl ? ?? 1 1
#加入acl
mount -o remount /
#重新掛載文件系統或重啟系統,使修改生效
第二節 查看與設定ACL權限
1.查看ACL權限的命令
getfacl 文件名? ? ? ? #查看acl權限
2.設定ACL權限的命令
setfacl 選項 文件名
選項:
-m? ? ? 設定ACL權限
-x? ? ? 刪除指定的ACL權限
-b? ? ? 刪除所有的ACL權限
-d? ? ? 設定默認的ACL權限
-k? ? ? 刪除默認的ACL權限
-R? ? ? 遞歸設定ACL權限
3.給用戶設定ACL權限
實例命令 給用戶st賦予r-x權限使用"u:用戶名:權限"格式
useradd zhangsan
useradd lisi
useradd st
groupadd tgroup
mkdir /project
chown root:tgroup /project/
chmod 770 /project
setfacl -m u:st:rx /project
4.給用戶組設定ACL權限
groupadd tgroup2
setfacl -m g:tgroup2:rwx project/
為組tgroup2分配ACL權限,使用"g:組名:權限"格式
第三節 最大有效權限和刪除ACL權限
1.最大有效權限mask
mask是用來指定最大有效權限的。如果我給用戶賦予了ACL權限,是需要和mask的權限"相與"才能得到用戶的真正權限
修改最大有效權限
setfacl -m m:rx 文件名
#設定mask權限為r-x,使用"m:權限"格式
2.刪除ACL權限
setfacl -x u:用戶名 文件名? ? 刪除指定用戶的ACL權限
setfacl -x g:組名 文件名? ? ? 刪除指定用戶組的ACL權限
setfacl -b 文件名? ? ? ? ? ? 會刪除文件的所有ACL權限
第四節 默認的ACL權限和遞歸ACL權限
1.遞歸ACL權限
遞歸是父目錄在設定ACL權限時,所有的子文件和子目錄也會擁有相同的ACL權限
setfacl -m u:用戶名:權限 -R 文件名
2.默認ACL權限
默認ACL權限的作用是如果給父目錄設定了默認的ACL權限,那么父目錄中所有的新建的子文件都會繼承父目錄的ACL權限
setfacl -m d:u:用戶名:權限 文件名
注意:遞歸的ACL權限和默認的ACL權限只能針對目錄進行設定
第五節 文件特殊權限
1.SetUID的功能與條件
1)只有可以執行的二進制程序才能設定SUID權限
2)命令執行者要對該程序擁有x(執行)權限
3)命令執行者在執行改程序時獲得改程序文件屬主的身份(在執行程序的過程中靈魂附體為文件屬主)
4)SetUID權限只在該程序執行過程中有效,也就是說身份改變只在程序執行過程中有效
實例應用
passwd命令擁有SetUID權限,所以普通用戶可以修改自己的密碼
ll /usr/bin/passwd
-rwsr-xr-x 1 root root 258980 2月 22 2012 /usr/bin/passwd
cat命令沒有SetUID權限,所以普通用戶不能查看/etc/shadow文件內容
ll /bin/cat
-rwxr-xr-x 1 root root 47976 6月 22 2012 /bin/cat
2.設定SetUID的方法
4代表SUID
chmod 4755 文件名
chmod u+s 文件名
3.取消SetUID的方法
chmod 755 文件名
chmod u-s 文件名
4.危險的SetUID
關鍵目錄應嚴格控制寫權限,比如"/" "/usr"等
用戶的密碼設置要嚴格遵守密碼三原則
減水劑
對系統中默認應該具有SetUID權限的文件作一列表,定時檢查有沒有這之外的文件被設置了SetUID權限
5.SetGID針對文件的作用
只有可執行的二進制文件程序才能設置SGID權限
命令執行者要對改程序擁有x(執行)權限
命令在執行程序的時候,組身份升級為該程序文件的屬組
SetGID權限同樣只在該程序執行過程中有效,也就是說組身份改變只在程序執行過程中有效
ll /usr/bin/locate
-rwx--s--x 1 root slocate 35612 8月 24 2010 /usr/bin/locate
ll /var/lib/mlocate/locate.db
-rwx-r---- 1 root slocate 1838850 1月 20 0429 /var/lib/locate/locate.db
#/usr/bin/locate是可執行二進制程序,可以賦予SGID
#執行用戶lamp對/usr/bin/lamp命令擁有執行權限
#執行/usr/bin/locate命令時,組身份會升級為slocate組,而slocate組對/var/lib/locate/locate.db數據庫擁有r權限,所以普通用戶可以使用locate命令查詢mlocate.db數據庫
#命令結束,lamp用戶的組身份返回為lamp組
6.SetGID針對目錄的作用
普通用戶必須對此目錄擁有r和x權限,才能進入此目錄
普通用戶在此目錄中的有效組會變成此目錄的屬組
若普通用戶對此目錄擁有w權限時,新建的文件的默認屬組是這個目錄的屬組
7.設定SetGID
2代表SGID
chmod 2755 文件名
chmod g+s 文件名
命令實例
cd /tmp/
mkdir dtest
chmod g+s dtest
ll -d dtest/
chmod 777 dtest
su - lamp
cd /tmp/dtest
touch abc
ll
8.取消SetGID
chmod 755 文件名
chmod g-s 文件名
9.SBIT粘著位作用
粘著位目前只針對目錄有效
普通用戶對該目錄擁有w和x權限,即普通用戶可以在此目錄擁有寫入權限
如果沒有粘著位,因為普通用戶擁有w權限,所以可以刪除此目錄下所有文件,包括其他用戶創建的文件。一旦賦予了粘著位,除了root可以刪除所有文件,普通用戶就算擁有w權限也只能刪除自己建立的文檔,但是不能刪除其他用戶建立的文件
注意:一般不會將三個權限同時賦予一個文件或目錄,因為這樣將有權限分配未被實現。
命令實例
ll /tmp/
drwxrwxrwt 3 root root 4096 12月 13 11:22 /tmp/
/tmp目錄擁有SBIT權限,因此一個普通用戶在該目錄下的文件不能被其他普通用戶刪除
10.設置與取消粘著位
設置粘著位
chmod 1755 目錄名
chmod o+t 目錄名
取消粘著位
chmod 777 目錄名
chmod o-t 目錄名
第六節 文件系統屬性權限chattr權限
1.chattr命令格式
chattr [+-=] [選項] 文件或目錄名
+:增加權限
-:刪除權限
=:等于某權限
選項:
i:如果對文件設置i屬性,那么不允許對文件進行刪除,改名,也不能添加和修改數據,如果對目錄設置i屬性,那么只能修改目錄下文件的數據,但是不允許建立和刪除文件(相當于鎖定了文件,而且對root用戶也生效)
a:如果對文件設置a屬性,那么只能在文件中增加數據,但是不能刪除也不能修改數據,如果對目錄設置a屬性,那么只允許在目錄中建立和修改文件,但是不允許刪除(相當于鎖定了原有數據,允許新添加數據)
i屬性和a屬性可以避免誤操作,i屬性相對于a屬性更加嚴格。
2.查看文件系統屬性
lsattr 選項 文件名
選項:
-a 顯示所有文件和目錄
-d 若目標是目錄,僅列出目錄本身的屬性,而不是子文件的
第七節 系統命令sudo權限
1.sudo權限
root把本來只能超級用戶執行的命令賦予普通用戶執行
sudo的操作對象是系統命令
2.sudo使用
visudo
實際修改的是/etc/sudoers文件
root? ALL=(ALL)? ALL
用戶名 被管理主機的地址= (可使用的身份) 授權命令 (絕對路徑)
%wheel ALL=(ALL) ALL
%組名 被管理主機的地址= (可使用的身份) 授權命令 (絕對路徑)
注意:這里的第二個字段是被管理的主機的ip地址,寫ALL代表本機
3.授權sc用戶可以重啟服務器
visudo
sc ALL= /sbin/shutdown -r now
被授予的命令寫的越詳細被賦予的權限就越小,這樣做越安全
4.普通用戶執行sudo賦予的命令
su - sc
sudo -l? ? 查看可用的sudo命令
sudo /sbin/shutdown -r now? ? ? 普通用戶執行sudo賦予的命令
注意:不要將類似于vim的命令通過sudo賦予普通用戶,這樣普通用戶將可以修改任何文件,這樣做是及其危險的