本篇主要講述:node
文件和目錄的基本權限;
安全
設置基本權限(chmod,chown,chgrp);bash
附加權限;ide
(1)訪問方式(權限)ui
讀取:容許查看內容-read rspa
寫入:容許修改內容-write worm
可執行:容許運行和切換-execute xserver
(2)使用者與羣組對象
權限適用對象(歸屬)blog
全部者:擁有此文件/目錄的用戶-user u
所屬組:擁有此文件/目錄的組-group g
其餘用戶:除全部者、所屬組之外的用戶-other o
(3)使用 ls -ld 命令
ls -ld 文件或目錄 #查看文件或者目錄自身的屬性
第一欄表明這個文件的類型與權限;
其中第一個字符
以 - 開頭:文本文件
以 d 開頭:目錄
以 l 開頭:快捷方式
接下來的字符中,以三個爲一組
第一組爲「文件擁有者可具有的權限」
第二組爲「加入此羣組之賬號的權限」
第三組爲「非本人且沒有加入本羣組之其餘賬號的權限」
第二欄表示有多少文件名連接到此節點(i-node)
第三欄表示這個文件(或目錄) 的「擁有者賬號」
第四欄表示這個文件的所屬羣組
第五欄爲這個文件的容量大小,默認單位爲Bytes
第六欄爲這個文件的建立日期或者是最近的修改日期
第七欄爲這個文件的文件名
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用戶新建/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下
2.4附加權限(特殊權限)
Set GID
在該父目錄上操做,屬組+s,新建的子目錄都會繼承父目錄的屬組
• 附加在屬組的 x 位上
– 屬組的權限標識會變爲 s
– 適用於目錄,Set GID可使目錄下新增的文檔自動設置與父目錄相同的屬組(繼承)
對於屬組而言:
如何判斷原來的權限是否有x:
大寫S 表示原來屬組的權限沒有x
小寫s表示原來的屬組的權限有x
具備繼承做用:
[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的全部者,屬組
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的權限
Sticky bit
附加在其餘人的x位上
其餘人的權限標識會變爲t
適用於開放w權限的目錄,能夠阻止用戶濫用w寫入權限(禁止操道別人的文檔)
三、ACL策略權限
使用場景:當用戶屬組具備寫(或者其餘)的權限,其餘人什麼權限也沒有,
來了一個想要查看文件的用戶,但不能使該用戶具備寫。
意義:可以對個別用戶,個別組設置獨立的權限
acl策略的做用
• 文檔歸屬的侷限性
– 任何人只屬於三種角色:屬主、屬組、其餘人
– 沒法實現更精細的控制
acl訪問策略
– 可以對個別用戶、個別組設置獨立的權限
– 大多數掛載的EXT3/四、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
• 使用 getfacl、setfacl 命令
– getfacl 文檔... #查看acl策略
– setfacl -m u:用戶名:權限類別 文檔...
– setfacl -m g:組名:權限類別 文檔...
– setfacl -b 文檔... #清除全部的ACL策略
– setfacl -x 文檔... #清除指定的ACL策略
[root@server0 /]# getfacl /nsd10 #查看ACL策略的命令
[root@server0 /]# setfacl -m u:natasha:rwx /nsd10
[root@server0 /]# setfacl -m u:lisi:rwx /nsd10
[root@server0 /]# setfacl -m u:kenji:rx /nsd10
[root@server0 /]# getfacl /nsd10
[root@server0 /]# setfacl -x u:kenji /nsd10
[root@server0 /]# getfacl /nsd10
[root@server0 /]# setfacl -b /nsd10
[root@server0 /]# getfacl /nsd10