使用“ls -l”命令時,會用長格式顯示文件目錄的信息,其中第一列即為權限信息,
一般會包含10個位置,如下顯示:
![]()
權限列的詳細說明如下:

a、第1位:代表文件類型,一些常用的文件類型如下:

b、第2-第4位:表示所有者的權限。即擁有讀、寫、執行權限。
r:代表read,即讀取權限;w:write,即寫入權限;x:execute,即執行權限;
-:當所在字元位置為“-”時,代表該字元位沒有權限。
c、第5-第7位:表示所屬組的權限。即加入此群組的賬戶的權限。
d、第8-第10位:表示其他人的權限。即非本人且沒有加入本群組的其他賬戶的權限。
說明:rwx權限所在的位置是不會改變的,有該權限則相應位置顯示字母,
沒有該權限,就變成減號(-)。
讀、寫、執行權限對文件和目錄的作用是不同的。
A、權限對文件的作用(是針對文件的內容而言)

B、權限對目錄的作用
目錄主要的內容是記錄目錄下的文件名、子目錄名。

擴展:
一般目錄的常用權限:
·0(---):任何權限都不賦予。如:給其他人賦0權限。
·5(r-x):基本的目錄瀏覽和進入目錄權限,如:給所屬組賦5權限
·7(rwx):完全權限,即查看目錄、進入目錄、目錄下創建刪除文件和子目錄。如:文件的所有者的權限。
Linux系統中,新建一個文件或目錄時設置的默認權限與umask相關。
即新建文件或目錄的默認權限是通過linux系統給予文件或目錄的最大權限和系統設置的umask值進行AND或者NOT運算得到的。
a、linux系統中,對于文件而言,最大權限為666(即rw-rw-rw-);對于目錄而言,最大權限為777(即rwxwrwxrwx)
b、普通用戶的umask值默認為002(即-------w-);超級用戶(如root)的umask值為022(即----w--w-)
c、新建文件、目錄時,系統設置的默認權限:最大權限去除掉umask中的權限后,保留下來的權限即為文件或目錄的默認權限。

d、修改umask值
·臨時修改:在命令行中輸入: umask mode;如;umask 033
![]()
·永久性修改:修改系統環境配置文件(/etc/profile)中的umask設置
linux系統中文件除了普通rwx權限外,還有一種隱藏權限,如下:
![]()
其中,每個位置代表一種隱藏屬性,若含有該屬性則顯示相應字符,如i屬性,
若沒有該隱藏屬性則顯示“-”(減號)。


chattr命令用于設置文件的隱藏屬性,格式如下:


ACL(Access Control List)為訪問控制列表。ACL可以設置特定用戶或用戶組對于一個文件或文件夾的操作權限。
即ACL用于設定某個用戶針對文件的權限。
權限的優先級順序:所有者-->ACL自定義用戶-->ACL自定義組-->其他人
Linux中ACL權限針對的是分區,故給文件設置ACL權限時,首先要查看文件所在的分區是否開啟ACL權限。
一般系統(Ext4、xfs)默認開啟ACL權限。
方法一:
步驟一:查看要設置ACL權限的文件所在區分(以根分區為例):df -h

步驟二:查看指定分區是否開啟ACL權限:(dumpe2fs命令查看的是Ext4文件系統,xfs無效)
dumpe2fs -h /dev/sda5 | grep ‘Default mount options’

方法二:

以根分區(/)為例,開啟分區的ACL權限:
A、臨時開啟ACL權限:(注:若系統重啟,那根分區權限會恢復到原來狀態)
重新掛載根分區,并在掛載時加入ACL權限
![]()
B、永久開啟分區ACL權限:
修改配置文件“/etc/fstab”,在分區的“defaults”后加入“,acl”值,再重新掛載
步驟一:
(編輯配置文件)

步驟二:
(重新掛載或者重啟系統)
![]()
![]()

A、默認ACL權限:(default)
指的是針對父目錄而言,新建的文件和子目錄會繼承父目錄的ACL權限。
命令格式:setfacl -m d:u:用戶名:權限 -R 文件名
注意:默認權限,只能賦予目錄,即命令中的文件名為目錄的名稱
B、遞歸ACL權限:
指的是針對父目錄中已存在的所有子文件和子目錄繼承父目錄的ACL權限。
命令格式:setfacl -m u:用戶名:權限 -R 文件名
C、最大有效權限:mask
·給用戶或用戶組設定的ACL權限并不是真正的設定權限,而是通過
設定的ACL權限與mask權限進行“與”運算后,獲得用戶的真正權限。
系統默認的mask權限是rwx(一般不需要更改),此時,任何權限與
mask權限進行與運算,結果仍是權限本身。
·mask是用來指定最大有效權限。可以理解為:用戶和用戶組所設定的權限
必須在mask權限設定的范圍內才能生效。
·注意:一般不會去修改系統默認的mask權限,但是能夠修改,命令格式如下:
setfacl -m m:權限 文件名
D、刪除ACL權限:
·刪除指定的ACL權限:
命令格式:setfacl -x u:用戶名 文件名 # 刪除指定用戶的ACL權限
setfacl -x g:組名 文件名 # 刪除指定組的ACL權限
·刪除所有的ACL權限:
命令格式:setfacl -b 文件名
特殊權限是用來設定系統中特定指令的,一般用戶不建議設定特殊權限,因會有安全隱患的
SUID權限:在文件(可執行的二進制文件)的所有者屬性的x權限位上標志為s時,表示該文件具有SUID權限。
SUID權限的作用是:
擁有可執行文件的執行權限的普通用戶,在運行該執行文件的過程時,
暫時獲得該執行文件的所有者的權限,執行結束后,釋放權限。
SUID權限是在執行的過程中生效。
總結SUID的限制與功能,如下:
·SUID權限僅對二進制程序(binary program)有效
·執行者對該程序需要具有x的可執行權限
·SUID權限僅在執行該程序的過程中有效(run-time)
·執行過程中執行者將具有該程序擁有者(owner)的權限
警告:SUID僅可用在可執行程序(binary program)上,不建議用在shell script上;
不能用在目錄上。
舉例說明:
普通用戶能夠使用passwd命令修改密碼:passwd指令設置了SUID權限

說明:在指令上中添加SUID權限,即該指令就具有root身份。
這對系統而言非常危險,所以,只用系統默認設置的SUID即可,切記勿手動添加。
設置SUID權限的方法:(基本權限的數字表示法前加的4代表SUID權限)
方法一:chmod u+s 文件名 (權限的字符模式,在user處添加s)
方法二:chmod 4755 文件名 (權限的數字模式,在基本權限的數字前加4)
注意:當文件SUID的標志s不是小寫而是大寫S時,說明無執行權限x,即為空,無效。
取消SUID權限的方法:chmod u-s 文件名
SGID權限:在文件的所屬組的x權限位上標志位s值時,表示該文件具有SGID權限。
SGID權限可以作用于可執行的二進制文件,也可以作用于目錄。
A、SGID對于“文件”的含義:(類似于SUID的作用)
·只有可執行的二進制程序才能設置SGID權限
·執行者對該程序(設置了SGID權限)需要具有x的可執行權限
·在執行該程序的時候,執行者的所屬組會臨時變成該程序文件的所屬組
·SGID權限只在該程序執行過程中有效,即所屬組身份的改變只在執行過程有效
例說明:普通用戶執行locate命令(locate命令設置了SGID權限)

B、SGID對于“目錄”的含義:(常用的用途)
·普通用戶必須對該目錄(有SGID權限的目錄)具有r與x權限,才能進入該目錄
·普通用戶在此目錄下的有效群組將會變成該目錄的群組
·用途:若使用者擁有該目錄的w權限(寫),則使用者在該目錄下新建文件后,
新建文件的所屬組與該目錄的所屬組相同。
(即擁有SGID權限的目錄下,新建的文件的所屬組與該目錄的所屬組是一樣的。)
C、設置SGID權限的方法:(基本權限的數字表示法前加的2代表SGID權限)
方法一:chmod g+s 目錄名(權限的字符模式,在group處添加s)
方法二:chmod 2755 目錄名(權限的數字模式,在基本權限的數字前加2)
注意:當文件SGID的標志s不是小寫而是大寫S時,說明無執行權限x,即為空,無效。
D、取消SGID權限的方法:chmod g-s 目錄名
SBIT權限:即粘著位,在目錄的其他人的x權限位上標志成t值,則該目錄具有SBIT權限。
SBIT權限只針對目錄有效。
SBIT權限對于“目錄”的含義:
·使用者對于該目錄(有SBIT權限的目錄)具有w、x權限,即具有寫、入權限,
·使用者在該目錄下建立文件或子目錄時,只有自己或root能夠刪除文件或子目錄。
通俗的理解是:具有SBIT權限的目錄下,只能夠對自己建立的文件進行刪除、更名、移動
等操作,而無法刪除他人建立的文件。如系統中的“/tmp/”目錄:
![]()
設置SBIT權限的方法:(基本權限的數字表示法前加的1代表SBIT權限)
方法一:chmod -R o+t 目錄名(權限的字符模式,在other處添加t)
方法二:chmod -R 1755 目錄名 (權限的數字模式,在基本權限的數字前加1)
取消SBIT權限的方法:chmod -R o-t 目錄名
sudo是linux中的一種權限管理機制,管理員可以授權普通用戶去執行一些root的操作。
1、sudo授權的一般原則
(1) 賦予的權限越詳細,普通用戶得到的權限越小,越安全
(2) 賦予的權限越簡單,普通用戶得到的權限越大,不安全
2、sudo執行過程:
(1)、普通用戶運行sudo時,會檢查“/var/db/sudo/”目錄下是否有時間戳文件
(sudo執行成功后創建的,默認免密5分鐘),并檢查是否已經過期;
(2)、若過期,就需要輸入當前用戶的密碼,再檢查 “/etc/sudoers”文件,驗證用戶是
否有運行sudo的權限:若有權限,則執行命令并返回結果,然后退出;若沒有權限,則直接退出;
(3)、若沒有過期,則不需要輸入密碼,直接檢查“/etc/sudoers”文件,驗證用戶的sudo權限,并執行命令。
3、與sudo相關的文件:
(1) 配置普通用戶權限的文件:/etc/sudoers
(2) sudo的日志相關文件:/var/log/secure /var/log/auth.log
(3) sudo執行時產生的時間戳文件保存的位置:/var/db/sudo/目錄
4、sudo設置權限文件的字段信息說明:
·sudo配置普通用戶的權限,實際上都是配置“/etc/sudoers”文件來完成的
·“/etc/sudoers”文件內中相關字段信息說明,如下:


·“/etc/sudoers”文件中其他字段的信息,即“別名”類型如下:
User_Alias:用戶別名,別名的成員可以是普通用戶、群組(加%號)
Host_Alias:主機別名,即被管理的主機地址
Runas_Alias:runas別名,即sudo允許轉換至的用戶,可使用的身份別名
Cmnd_Alias:命令別名,即能夠執行的命令別名
5、sudo授權設置
用 “visudo”命令編輯 /etc/sudoers文件。visudo實質上是使用vi編輯器打開/etc/sudoers文件進行編輯,
保存退出后,會檢查編輯后的語法是否出錯,比直接使用vi編輯更安全。
6、sudo設置權限舉例:
(1) 為普通用戶授予root訪問權限
方法一:開啟sudoers文件中的wheel群組,并將普通用戶test加到wheel群組中
A、開啟sudoers文件中的wheel群組:將“%wheel”群組的注釋去掉
B、添加普通用戶test到wheel群組中:

說明:將普通用戶添加到wheel附加群組中的方式,可以使用命令
“usermod -aG wheel 用戶名”,或者手動vi編輯“/etc/group”文件

方法二:visudo編輯sudoers文件,為普通用戶設置權限

(2) 普通用戶被賦予更改密碼權限,取消對root的密碼修改:visudo

說明:其中的“!”號表示禁止使用該命令。
7、查詢系統中已設置的sudo權限:
![]()