本篇主要講述:
1 文件和目錄的基本權限
2 設置基本權限(chmod,chown,chgrp)
3 附加權限(特殊權限)
4 ACL策略權限
5 文件與目錄的默認權限與隱藏權限
1、基本權限
1.1 訪問方式(權限)
讀取:允許查看內容-read r
寫入:允許修改內容-write w
可執行:允許運行和切換-execute x
1.2 使用者與群組
權限適用對象(歸屬)
所有者:擁有此文件/目錄的用戶-user u
所屬組:擁有此文件/目錄的組-group g
其他用戶:除所有者、所屬組以外的用戶-other o
1.3 查看文件或者目錄自身的屬性
使用 ls -ld 命令
ls -ld 文件或目錄 #查看文件或者目錄自身的屬性
[root@localhost /]# ls -ld /root dr-xr-x---. 3 root root 4096 May 10 15:23 /root
內容分析:
(1)第一欄代表這個文件的類型與權限;
其中第一個字符
以 - 開頭:文本文件
以 d 開頭:目錄
以 l 開頭:快捷方式
接下來的字符中,以三個為一組
第一組為“文件擁有者可具備的權限”
第二組為“加入此群組之帳號的權限”
第三組為“非本人且沒有加入本群組之其他帳號的權限”
(2)剩下的字段含義
第二欄表示有多少文件名鏈接到此節點(i-node)
第三欄表示這個文件(或目錄) 的“擁有者帳號”
第四欄表示這個文件的所屬群組
第五欄為這個文件的容量大小,默認單位為Bytes
第六欄為這個文件的創建日期或者是最近的修改日期
第七欄為這個文件的文件名
2、設置基本權限
2.1 使用 chmod 命令
chmod [-R] 歸屬關系+-=權限類別 文檔...
更改權限的方法:
第一種:以數字的形式 r:4 w:2 x:1
案例:
[root@server0 ~]# mkdir /nsd01 [root@server0 ~]# ls -ld /nsd01/ drwxr-xr-x. 2 root root 6 11月 24 20:16 /nsd01/ [root@server0 ~]# chmod 777 /nsd01/ [root@server0 ~]# ls -ld /nsd01/ drwxrwxrwx. 2 root root 6 11月 24 20:16 /nsd01/
第二種:符號類型 user=u ; group=g; other=o ; all=a
案例:
[root@server0 ~]# chmod u=rwx,g=rw,o=--- /nsd01/ [root@server0 ~]# ls -ld /nsd01/ drwxrw----. 2 root root 6 11月 24 20:16 /nsd01 [root@server0 ~]# mkdir /nsd01 [root@server0 ~]# chmod g+w /nsd01 [root@server0 ~]# chmod u-w /nsd01 [root@server0 ~]# chmod o=rwx /nsd01 [root@server0 ~]# chmod u=rwx,g=rx,o=--- /nsd01
臨時切換用戶身份:
[root@server0 ~]# su - zhangsan
(不能將 - 去掉,代表所處的環境也切到另一個用戶上去了)
目錄的 r 權限:能夠 ls 瀏覽此目錄內容
目錄的 w 權限:能夠執行 rm/mv/cp/mkdir/touch/等更改目錄內容的操作
目錄的 x 權限:能夠 cd 切換到此目錄
總結:在Linux中新建目錄默認的權限rwxr-xr-x
在Linux中新建文件默認的權限rw-r--r--
為什么新建目錄或者文件是這樣的權限?
umask 命令了解一下
[root@localhost ~]# umask 0022
案例:以root用戶新建/nsddir/目錄,在此目錄下新建readme.txt文件,並進一步完成下列操作
1)使用戶zhangsan能夠在此目錄下創建子目錄 切換用戶 su - zhangsan
chmod o+w /nsddir/
2)使用戶zhangsan不能夠在此目錄下創建子目錄
chmod o-w /nsddir/
3)使用戶zhangsan能夠修改readme.txt文件
chmod o+w /nsddir/readme.txt
4)調整此目錄的權限,使所有用戶都不能進入此目錄
chmod u-x,g-x,o-x /nsddir/
5)為此目錄及其下所有文檔設置權限 rwxr-x---
chmod -R u=rwx,g=rx,o=--- /nsddir/
2.2 使用 chown 命令
設置文檔歸屬
– chown [-R] 屬主 文檔...
– chown [-R] :屬組 文檔...
– chown [-R] 屬主:屬組 文檔...
案例:
[root@server0 /]# mkdir /nsd03 [root@server0 /]# ls -ld /nsd03 [root@server0 /]# groupadd test [root@server0 /]# chown zhangsan:test /nsd03 [root@server0 /]# ls -ld /nsd03 [root@server0 /]# chown student /nsd03 [root@server0 /]# ls -ld /nsd03 [root@server0 /]# chown :root /nsd03 [root@server0 /]# ls -ld /nsd03
2.3 使用chgrp命令
change group
chgrp [-R] 組名 文件名/目錄名
組名信息存放在/etc/group下
3 、附加權限(特殊權限)
3.1 Set GID 在該父目錄上操作,屬組+s,新建的子目錄都會繼承父目錄的屬組
(1)特點:
附加在屬組的 x 位上;
屬組的權限標識會變為 s
適用於目錄,Set GID可以使目錄下新增的文檔自動設置與父目錄相同的屬組(繼承)
(2)對於屬組而言
如何判斷原來的權限是否有x:
大寫S 表示原來屬組的權限沒有x
小寫s表示原來的屬組的權限有x
(3)具有繼承作用
[root@server0 ~]# mkdir /nsd06 [root@server0 ~]# ls -ld /nsd06 drwxr-xr-x. 2 root root 6 11月 24 11:51 /nsd06 #nsd06剛開始的權限和屬組 [root@server0 ~]# chown :test /nsd06 [root@server0 ~]# ls -ld /nsd06 drwxr-xr-x. 2 root test 6 11月 24 11:51 /nsd06 #更改屬組之后的權限 [root@server0 ~]# mkdir /nsd06/abc01 #新建子目錄abc01 [root@server0 ~]# ls -ld /nsd06/abc01/ drwxr-xr-x. 2 root root 6 11月 24 11:53 /nsd06/abc01/ #屬組和父目錄沒有關系
[root@server0 ~]# chmod g+s /nsd06 #屬組權限+s [root@server0 ~]# ls -ld /nsd06 drwxr-sr-x. 3 root test 18 11月 24 11:53 /nsd06 [root@server0 ~]# mkdir /nsd06/abc02 #新建子目錄abc02 [root@server0 ~]# ls -ld /nsd06/abc02 drwxr-sr-x. 2 root test 6 11月 24 11:54 /nsd06/abc02 #繼承了父目錄nsd06的所有者,屬組
3.2 Set Uid(並沒有繼承)
[root@server0 ~]# ls -ld /nsd/ #nsd目錄的權限 drwxr-sr-x. 2 harry adminuser 20 11月 25 09:58 /nsd/ [root@server0 ~]# chmod u+s /nsd/ #對所有者加s,是否能夠繼承? [root@server0 ~]# ls -ld /nsd/ drwsr-sr-x. 2 harry adminuser 35 11月 25 10:09 /nsd/ [root@server0 ~]# touch /nsd/nsd2.txt #在目錄下新建子文件 [root@server0 ~]# ls -ld /nsd/nsd2.txt #查看新文件的權限 -rw-r--r--. 1 root adminuser 0 11月 25 10:10 /nsd/nsd2.txt
對Set uid一般情況下不使用s權限,這樣會造成 對系統的安全存在風險
– 屬主的權限標識會變為 s
– 適用於可執行文件,Set UID可以讓使用者具有文件屬主的身份及部分權限擁有root的權限
3.3 Sticky bit
附加在其他人的x位上
其他人的權限標識會變為t
適用於開放w權限的目錄,可以阻止用戶濫用w寫入權限(禁止操作別人的文檔)
4、ACL策略權限
使用場景:當用戶屬組具有寫(或者其他)的權限,其他人什么權限也沒有,來了一個想要查看文件的用戶,但不能使該用戶具有寫。
意義:能夠對個別用戶,個別組設置獨立的權限
4.1 acl策略的作用
文檔歸屬的局限性;
任何人只屬於三種角色:屬主、屬組、其他人;
無法實現更精細的控制。
4.2 acl訪問策略
能夠對個別用戶、個別組設置獨立的權限;
大多數掛載的EXT3/4、XFS文件系統默認已支持。
案例:
[root@server0 /]# mkdir /nsd10 #新建目錄 [root@server0 /]# chmod o=--- /nsd10 #使該目錄對其他人沒有任何權限 [root@server0 /]# su - zhangsan #驗證 [zhangsan@server0 ~]$ cd /nsd10 -bash: cd: /nsd10: Permission denied #不能進入 [zhangsan@server0 ~]$ exit #回到root logout [root@server0 /]# setfacl -m u:zhangsan:rx /nsd10 #設置ACL,使能夠具有讀和執行權限 [root@server0 /]# su - zhangsan #驗證 [zhangsan@server0 ~]$ cd /nsd10 #可以進入 [zhangsan@server0 nsd10]$ pwd [zhangsan@server0 nsd10]$ exit #回到root logout
4.3 使用 getfacl、setfacl 命令
– getfacl 文檔... #查看acl策略
– setfacl -m u:用戶名:權限類別 文檔...
– setfacl -m g:組名:權限類別 文檔...
– setfacl -b 文檔... #清除所有的ACL策略
– setfacl -x 文檔... #清除指定的ACL策略
案例:
[root@localhost home]# getfacl happyday/ #查看未設置ACL策略的命令 # file: happyday/ # owner: root # group: root user::rwx group::r-x other::r-x
[root@localhost home]# setfacl -m u:happy:rwx happyday/ #對文件夾設置ACL策略 [root@localhost home]# setfacl -m u:nice:rwx happyday/ [root@localhost home]# setfacl -m u:good:rx happyday/ [root@localhost home]# getfacl happyday/ #查看 # file: happyday/ # owner: root # group: root user::rwx user:happy:rwx user:nice:rwx user:good:r-x group::r-x mask::rwx other::r-x [root@localhost home]# setfacl -x u:happy happyday/ [root@localhost home]# getfacl happyday/ # file: happyday/ # owner: root # group: root user::rwx user:nice:rwx user:good:r-x group::r-x mask::rwx other::r-x [root@localhost home]# setfacl -b happyday/ [root@localhost home]# getfacl happyday/ # file: happyday/ # owner: root # group: root user::rwx group::r-x other::r-x
5 文件與目錄的默認權限與隱藏權限
5.1 文件的默認權限 umask
第一個數字特殊權限使用的
后三個數字為默認值需要減掉的權限(r:4 w:2 x:1)
因為 umask 為 022 ,所以 user 並沒有被拿掉任何權限,不過 group 與 others 的權限被拿掉了 2 (也就是 w 這個權限)
該默認值得設置參考/etc/bashrc文件,建議不要修改此文件
5.2 文件的隱藏屬性
(1)使用chattr設置文件隱藏屬性
chattr 選項 參數 目錄或文件
選項:
+ :增加某一個特殊參數,其他原本存在參數則不動。
- :移除某一個特殊參數,其他原本存在參數則不動。
= :設置一定,且僅有后面接的參數
參數:
A :當設置了 A 這個屬性時,若你有存取此文件(或目錄) 時,他的存取時間 atime 將不會被修改,可避免 I/O 較慢的機器過度的存取磁盤。(目前建議使用文件系統掛載參數處理這個項目)
S :一般文件是非同步寫入磁盤的(原理請參考[前一章sync](../Text/index.html#sync)的說明) ,如果加上 S 這個屬性時,當你進行任何文件的修改,該更動會“同步”寫入磁盤中。
a :當設置 a 之后,這個文件將只能增加數據,而不能刪除也不能修改數據,只有root 才能設置這屬性
c :這個屬性設置之后,將會自動的將此文件“壓縮”,在讀取的時候將會自動解壓縮,但是在儲存的時候,將會先進行壓縮后再儲存(看來對於大文件似乎蠻有用的!)
d :當 dump 程序被執行的時候,設置 d 屬性將可使該文件(或目錄) 不會被 dump 備份
i :這個 i 可就很厲害了!他可以讓一個文件“不能被刪除、改名、設置鏈接也無法寫入或新增數據!”對於系統安全性有相當大的助益!只有 root 能設置此屬性
s :當文件設置了 s 屬性時,如果這個文件被刪除,他將會被完全的移除出這個硬盤空間,所以如果誤刪了,完全無法救回來了喔!
u :與 s 相反的,當使用 u 來設置文件時,如果該文件被刪除了,則數據內容其實還存在磁盤中,可以使用來救援該文件喔!
注意1:屬性設置常見的是 a 與 i 的設置值,而且很多設置值必須要身為 root 才能設置
注意2:xfs 文件系統僅支持 AadiS 而已
(2)使用lsattr 顯示文件的隱藏屬性
-a :將隱藏文件的屬性也顯示出來;
-d :如果接的是目錄,僅列出目錄本身的屬性而非目錄內的文件名;
-R :連同子目錄的數據也一並列出來!
(3) 觀察文件的類型
文件是ASCII或者是data文件或者是binary(二進制文件)?
使用file命令