前言
接着上篇文章基本權限,這篇文章帶你瞭解特殊權限。合理分配權限,真的很重要。學會修改文件權限,再也不用擔心自己的小電影被發現了,啊呸。呵呵,套你猴子的,你這個悶騷男,我是來學習知識的,不是來get
番號的。嘴上說不要,身體很誠實。八連殺,好強大,我要我要我還要,編不下去了,噁心到自己了…
正文
通過目錄你可以get
到哪些知識。
目錄
- 文件ACL權限
- 文件特殊權限
- 文件不可改變位權限
- 文件sudo權限
一、文件ACL權限
首先查看分區ACL
權限是否開啓
ACL
權限
注意:在centos7
中,如果你的系統分區格式是xfs,請用xfs_growfs
命令,不確定系統分區格式,如下圖查看:
df
查看系統分區
dumpe2fs -h /dev/sda1
,查詢指定分區詳細文件系統信息的命令- -h,僅顯示超級塊中信息,而不顯示磁盤塊組的詳細信息
mount -o remount,acl /dev/sda5
,重新掛在根分區,並掛載acl
權限- 修改fstab文件永久生效,
vim /etc/fstab
,修改時請注意這個文件會影響系統的啓動
設置ACL
權限,setfacl
【選項】文件
- -m,設置ACL權限
- -x,刪除指定的ACL權限
- -b,刪除所有的ACL權限
- -d,設置默認的ACL權限
- -k,刪除默認的ACL權限
- -R,遞歸設置ACL權限
遞歸權限針對目錄,不對文件有效
設置ACL
權限,setfacl
-m 文件:
- u:用戶名:權限 文件名,爲用戶分配ACL權限
- g:組名:權限 文件名,爲組分配ACL權限
- 例如:
setfacl -m u:sky:rx /home/av
,賦予sky這個用戶讀和執行的權限,av代表目錄
查詢ACL
權限,getfacl
【選項】文件
- 有設置,當然也有查詢。通過getacl av,查看av目錄的ACL權限
mask
, 用來指定最大有效權限。如果給用戶賦予ACL權限,是需要與mask的權限做“相與”邏輯運算才能得到用戶的真正權限。
刪除指定用戶ACL
權限。例如,bols波老師代表文件名
- 刪除指定用戶的,
setfacl -x u:sky bols
- 刪除指定組的,
setfacl -x g:sky bols
刪除所有ACL
權限,例如
- setfacl -b 文件名,刪除這個文件所有ACL權限
設置默認ACL
權限
- 例如:
setfacl -m d:u:sky:rx -R /home/av
,如果給av這個父目錄下所有子文件賦予了讀和執行默認的ACL權限,之前新建的是不會生效的,針對賦予權限之後新建的文件
刪除默認ACL
權限
- 例如:
setfacl -m d:u:sky:rx -R /home/av
,刪除av
這個目錄下所有文件和子目錄的默認ACL權限
遞歸ACL
權限,遞歸是父目錄在設定ACL權限時,所有的子文件和子目錄也會擁有相同的ACL權限,這時設定的是針對已經存在的文件。
- u:用戶名:權限 文件名,爲用戶分配ACL權限
- 例如:
setfacl -m u:sky:rx -R /home/av
,賦予sky這個用戶讀和執行的權限,av目錄下所有文件都賦予了讀和執行的權限。儘量少用遞歸ACL權限,會造成權限溢出。
二、文件不可改變位權限
chattr
命令 [+ - =]【選項】文件或目錄名
- +:增加權限
- -:刪除權限
- =:等於某權限
最常用的是-i
和-a
-
-i
:文件不可刪,不可修改。如果對文件設置i屬性,那麼不允許對文件進行刪除、改名,也不能添加和修改數據;如果對目錄設置i屬性,那麼只能修改目錄下文件的數據,但不允許建立或刪除文件。例如:此時對
bols
文件進行了賦予chattr +i bols
屬性命令。使用lsattr
命令查看你會發現多了i屬性,而且不能對其進行刪除如下圖:
設置了+i屬性,不讓刪除
-
-a
:文件不可刪,可修改。如果對文件設置a屬性,那麼只能在文件中增加數據,但不能刪除和修改數據;如果對目錄設置a屬性,那麼只允許在目錄中建立和修改文件,但不允許刪除文件。例如:此時對
bols
文件進行了賦予chattr +a bols
屬性命令,也可以用lsattr命令查看發現多了a屬性如下圖:
設置+a屬性了,也是不讓刪除的
注意:使用vi
進行修改是行不通的,系統不好判斷是修改還是新增。但使用echo >> av /home/user1/bols
重定向輸出是可行的。
三、文件特殊權限
通過觀看學習視頻,總結了下,大致的把文件特殊權限分爲這三個:suid(SetUID
),sgid(SetGID
),sbit(Sticky BIT
)。
首選來了解下suid
,下面我就採用簡寫了。
- 只有可執行的二進制程序才能設定suid權限。
- 命令執行者要對該程序擁有X(執行)權限。
- 命令執行者在執行該程序時獲得該程序文件屬組的身份(在執行程序的過程中靈魂附體爲文件是屬組)。
- suid權限只在該程序執行過程中有效,身份改變只在程序執行過程中生效。
passwd
命令擁有suid
權限,所以普通用戶可以修改自己的密碼
cat
命令沒有suid
權限,普通用戶不能查看/etc/shadow
文件中的類容
設定suid
的方法,4代表suid
- chmod 4755 文件名
- chmod u+s 文件名
有設定當然也有對應的取消suid
的方法
- chmod 0755 文件名
- chmod u-s 文件名
使用suid權限時得慎重,這傢伙也是很危險的。
- 關鍵目錄應該嚴格控制寫權限。例如:"/","usr"等等
- 用戶密碼設置嚴格遵守密碼三原則
- 對系統中默認應該具有suid權限的文件作一列表,定時檢查有沒有以外的文件被設置的suid權限
瞭解了suid權限後,再來了解下sgid
(SetUID
)權限,針對文件的作用。
- 只有可執行的二進制程序才能設定sgid權限。
- 命令執行者要對該程序擁有X(執行)權限。
- 在執行程序的時候,組身份升級爲該程序文件的屬組
- sgid權限一樣也只在該程序執行過程中有效,組身份改變只在程序執行過程中生效。
sgid
針對目錄的作用
- 普通用戶必須對此目錄擁有r(讀)和x(寫)權限,才能進入此目錄
- 普通用戶在此目錄中的有效組會變成此目錄的屬組
- 普通用戶對此目錄擁有w(寫)權限時,新建文件的默認屬組是這個目錄的屬組
例如:
/usr/bin/locate
是可執行二進制程序,可以賦予sgid
特使權限- 執行用戶lamp對
/usr/bin/locate
命令擁有執行權限 - 執行
/usr/bin/locate
命令時,組身份會升級爲slocate組,而slocate組對/var/lib/mlocate/mlocate.db
數據庫擁有r(讀)權限,普通用戶可以使用locate命令查詢mlocate.db數據庫 - 命令結束時,用戶lamp的組身份返回lamp組
設定sgid
,2代表sgid
- chmod 2755 文件名
- chmod g+s 文件名
取消sgid
- chmod 0755 文件名
- chmod g-s 文件名
瞭解完sgid,就剩下最後的sbit
特殊權限了,粘着位作用。
- 粘着位目前只對目錄有效
- 普通用戶對該目錄擁有
w
(寫)和x
(執行)權限,普通用戶在此目錄擁有寫入權限 - 如果沒有粘着位,普通用戶擁有
w
(寫)權限,所以可以刪除此目錄下所有文件,包括其他用戶建立的文件。一旦賦予了粘着位,只有root
可以刪除所有文件,普通用戶就算擁有w
(寫)權限,也只能刪除自己建立的文件,但不能刪除其他用戶建立的文件。
四、sudo權限
sudo
權限,把原本只能超級用使用的命令對普通用戶賦予權限,操作對象是系統命令。
sudo
使用
visudo
,實際修改的是/etc/sudoers
文件root
用戶名ALL
被管理主機的地址 = (ALL
)可使用的身份ALL
授權命令(絕對路徑)#%wheel
#%組名ALL
被管理主機的地址 = (ALL
)可使用的身份ALL
授權命令(絕對路徑)
例如:授權普通用戶可以重啓服務器
visudo,user1 ALL = /sbin/shutdown -r now
- 注意:命令寫的越簡單,相對而言賦予的權限越大。
例如:普通用戶執行sudo
賦予的命令
- 切換到普通用戶,
su - user1
sudo -l
,查看可用的sudo命令- 普通用戶執行sudo賦予的命令,
sudo /sbin/shutdown -r now
例如:授權普通用戶可以添加其他用戶
visudo,usr1 ALL = /usr/sbin/useradd
,添加用戶usr1 ALL = /usr/bin/passwd
,授予用戶設定密碼的權限- 設置不能設定root用戶密碼,
usr1 ALL = /usr/bin/passwd[A-Za-z]*
,!/usr/bin/passwd""
,!/usr/bin/passwd root
尾聲
好了,到此爲止就是此篇文章的全部內容了,能看到這的都是帥哥靚妹啊!!!善於總結,其樂不窮。好記性不如爛筆頭,多收集自己第一次嘗試的成果,收穫也頗豐。你會發現,自己的知識寶庫越來越豐富。