一、基本權限和歸屬shell
用戶在訪問一個文件或目錄時,由文件或者目錄設置的訪問權限和歸屬關係來決定最終權限vim
1>訪問權限工具
文件的訪問權限:spa
r--->讀 w--->寫 x--->執行對象
目錄的訪問權限:繼承
r--->能夠查看該目錄的內容:ls遞歸
w--->能夠建立、刪除、移動文件或者子目錄:mkdir/mv/cp/rm/touch/vim文檔
x--->能夠進入到該目錄中:cdget
2>歸屬關係it
u 全部者:擁有此文件/目錄的用戶
g 所屬組:擁有此文件/目錄的組
o 其餘人:除全部者和所屬組之外的用戶
a 全部用戶:以上三者歸屬的名稱
3>ls -l 輸出結果分析
dr-xr-xr-x. 2 root root 4096 Aug 27 09:38 bin
權限位(類型+屬主+屬組+其餘人) 硬連接個數 全部者 所屬組 大小 最後修改時間 文件/目錄名
二、權限的數值表示
r--->4 w--->2 x--->1
常見的目錄權限:rwxr_xr_x--->755
常見的文件權限:rw_r__r__--->644
三、設置訪問權限-chmod
格式1:chmod [-R] [ugoa] [+-=] [rwx] 文件或者目錄
-R遞歸修改目錄權限
對文件或者目錄的歸屬關係中的權限進行添加(+)、減小(-)和設置(=)權限
格式2:chmod [-R] [權限的數值表示值] 文件或者目錄
四、改變文件或者目錄的歸屬關係-chown
chown [全部者] 文件或目錄 只改變文件或者目錄的全部者
chown :[所屬組] 文件或目錄 只改變文件或者目錄的所屬組
chown [全部者]:[所屬組]文件或者目錄 改變文件或者目錄的全部者和所屬組
-R 遞歸修改文件或者目錄的歸屬關係
五、默認權限
1>建立目錄時賦予權限:mkdir -r [權限的數字表示] 目錄
2>權限掩碼
查看權限掩碼:umask
查看權限值(默認):umask -S
目錄最大權限是777,文本的最大權限是666(均無可執行權限)
配置文件:/etc/login.defs
權限的判斷順序:全部者>所屬組>其餘人
六、特殊權限
1>SUID,SGID
SUID用來傳遞用戶的身份,只對二進制文件的x位有效。當一個文件的全部者擁有x權限,則設置完SUID後,可執行權限位變爲s,若該文件的全部者先前沒有x權限,則則設置完SetUID後,可執行權限位變爲S,標識SetUID設置未起效。擁有SUID的文件當其餘用戶使用執行時該用戶擁有了全部者的權限。
SGID主要做用於目錄,當一個目錄被賦予SGID權限後,若其餘人對這個目錄擁有rwx權限,則其餘人在這個目錄下所建立的全部文件和目錄的所屬組都是這個目錄的所屬組,即繼承了該目錄的所屬組。
「舉個栗子」
passwd命令是向/etc/passwd 文件寫入用戶信息,而該文件只有root用戶纔有寫權限。所以當其餘用戶修改密碼使用passwd命令時,該用戶擁有了root權限,則能夠向/etc/passwd文件寫入用戶信息的。
2>Sticky Bit (粘滯位)
Sticky Bit用來限制目錄的寫入權限,禁止操做非本人的文檔。改變的是目錄的其餘人中的x位
「舉個栗子」
/tmp目錄做爲系統的共享目錄,全部用戶都對其有rwx權限。用戶tom在該目錄下建立了一個文件並寫入了很是重要的信息。而jerry也可看到這個文件,可是若是jerry能夠刪除或者改動這個文件,則對tom來講是不公平的。因此/tmp擁有了Sticky Bit使得jerry沒法去修改tom所建立的全部文件或者目錄。
3>設置特殊權限
特殊權限 | 符號 | 數字表示 | 影響的權限 | 影響的對象 |
SUID | s | 4 | user的x位 | 可執行程序 |
SGID | s | 2 | group的x位 | 可執行程序/目錄 |
Sticky Bit | t | 1 | other的x位 | 目錄 |
添加SUID:chmod 4755 文件
添加SGID:chmod 2755 文件/目錄
添加Sticky Bit:chmod 1755 目錄
七、ACL權限
ACL即Access Control List,ACL能夠設置特定的用戶或者用戶組對文件/目錄擁有rwx的操做權限。ACL權限須要內核和文件系統的支持,如今2.6內核配合EXT2/EXT3, JFS, XFS, ReiserFS等文件系統都是能夠支持ACL的。
1>查看文件系統是否支持ACL權限
[root@localhost ~]# dumpe2fs /dev/sda1 | grep acl
dumpe2fs 1.41.12 (17-May-2010)
Default mount options: user_xattr acl //支持ACL權限
2>查看文件/目錄的ACL策略
getfacl 文件或者目錄
3>設置ACL策略工具:setfacl
設置ACL策略:
setfacl -m u/g:用戶名/組名:權限 文件或者目錄
-R 能夠遞歸修改目標文件夾及其下屬全部文件的ACL權限
設置可繼承的ACL權限(只對新建的子文檔有效)
setfacl -d -m u/g:用戶名/組名:權限 目錄
清除全部ACL策略
setfacl -b 文件或目錄
清楚指定用戶的ACL策略
setfacl -x u/g:用戶名/組名 文件或者目錄
八、關於目錄權限的繼承
1>強制繼承:
chmod -R ... /partent/
chown -R ... /partent/
2>自動繼承
方法1:調整umask值,適用於當前用戶的整個shell環境
方法2:針對文件的歸屬關係設置SUID和SGID
方法3:setfacl -d -m...
九、練習
1>建立文件夾/data/test,設置目錄的訪問權限使全部者和所屬組具有讀寫執行的權限;其餘人無任何權限。
mkdir -pm 770 /data/test
2>遞歸修改文件夾/data/test的歸屬使全部者爲zhangsan,所屬組爲lisi。
chown zhangsan:lisi /data/test
3>請實如今test目錄下,新建的全部子文件或目錄的所屬組都會是lisi。
chmod g+s /data/test
4>爲lisi建立ACL訪問權限,是lisi能夠查看/etc/shadow文件。
setfacl -m u:lisi:r /etc/shadow