三、Linux文件權限和目錄權限

本篇主要講述: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 文件或目錄   #查看文件或者目錄自身的屬性

image.png

第一欄表明這個文件的類型與權限;

其中第一個字符

以  - 開頭:文本文件

以  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 命令瞭解一下

image.png

案例:以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

相關文章
相關標籤/搜索