【Linux】Linux下文件的權限管理和所屬用戶所屬組


摘要:一個文件和用戶之間的關系有三種,這個用戶是文件的所有者、這個用戶是文件所屬組中的一員,這個用戶對文件來說是其他人。
同樣,用戶對文件的權限分為了讀、寫、執行三種,其中文件和文件夾對於這三種理解不同,重點的是所謂權限,其實是對內容操作的權限,而不是文件自身。
文件夾嵌套的情況下,權限如何發揮作用?

1. 用戶和文件有什么關系

1.1 用戶和文件之間的關系

張三創建了某個文件,如 touch 111.txt,那么張三就是這個文件的所有者,對這個文件來說,馬雲就是其他人。

用ll命令列出某目錄下的文件如下

-rw-r--r-- 1 root root    0 Aug 17 10:19 111.txt
-rw-r--r-- 1 root root    0 Aug 17 10:19 222.txt
drwxr-xr-x 2 root root 4096 Aug 17 10:19 test

 可見,root是文件111.txt和222.txt的所有者,對它的權限rw-就是讀寫權限。如果是馬雲,那就是r--,就是只讀,不能寫和執行。

 

1.2.讀、寫、執行對文件和文件夾分別意味着什么?

初學的時候,望文生義,很容易搞不清楚讀、寫、執行是對什么起作用。

比如,文件夾test里面有文件111.txt,在文件夾test上權限給滿,111.txt設置為只讀,那普通用戶還能刪掉這個文件嗎?

一實驗,發現可以刪掉,怎么111.txt設置為只讀文件,普通用戶也可以刪掉它?一頭霧水。

首先要清楚的是,用戶root是超級管理員,不受這些限制。

其次要理解,這些權限是對其內容而言的設置。

用戶馬雲,在111.txt身上算是其他人,如果沒有讀權限,則打不開111.txt,就是cat 111.txt會出現權限拒絕。如果沒有寫權限,則不能編輯111.txt(但是用vi有點問題,系統bug,111.txt有內容,馬雲沒權限寫,結果一樣可以打開,但是打開的是無內容的顯示,然后馬雲可以鍵入新的文本,強制保存,原來111.txt內容會被覆蓋了),如果沒有執行權限,則不能執行。

用戶馬雲,在文件夾test上算是其他人,如果沒有讀權限,則用ls列出目錄中有哪些文件時會被禁止,沒有寫權限,則不能在文件夾中創建和刪除文件,只能改一改現有的文件,沒有執行權限,則不能進入該目錄。

111.txt算是文件夾test的內容,可以刪掉是因為文件夾test的權限給滿了,而不看111.txt自身的權限。111.txt自身的權限設置,管理的是它里面的內容的權限。

 

      文件 文件夾
r 4 查看文件內容
cat/more/head/tail/less
列出目錄中的內容
ls/
w 2 修改文件內容
vim
在目錄中創建、刪除文件
touch/mkdir/rmdir/rm
x 1 執行 執行文件
(腳本或命令)
可以進入目錄
cd

 

父目錄權限和子目錄權限的影響是怎么樣的?

假設某文件夾路徑是這樣的:

/ study / english / 111.txt

 用戶馬雲對於這些文件都是其他人的身份。

問,當文件夾 study 對馬雲的權限只讀,文件夾 english 對馬雲的權限是讀寫執行,文件 111.txt 對馬雲的權限是讀寫執行,那么馬雲可以查看111.txt的內容嗎?

答:不可以,權限要從最外層的文件夾開始進入,因為study不具備執行權限,進入不了,雖然english和111.txt有權限,也查看不了。

 

 如果把study改為只有執行權限,沒有讀權限呢?

可以看到,進入study可以,列出study下內容就不行

但是查看文件夾english和文件111.txt都是正常的。

 

 在文件夾study下新建文件不行,但是在english下新建文件可以。

 

 也就是說,文件夾的權限並不具有繼承性,當我在文件夾english下新建文件時,沒有因為父級文件夾沒有權限而不能操作。

父級文件夾只要有x權限,那么子級文件夾就不受父級文件夾的影響了。父級文件夾沒有x權限,其下的文件和文件夾在操作時會受到影響。

有點類似大院子嵌套小院子,大院子沒有x權限(沒有鑰匙),就進入不了大院子,那你們的小院子,你有鑰匙也沒有用。

 這時study沒有了執行權限,進不了study目錄,則執行新建文件如下:

 

 可以看出,沒有執行權限的文件夾,其下的文件夾和文件在操作時受到了影響。

 

 

 

 

1.3.怎么更改文件和文件夾的權限

1.首先要問哪些用戶能更改文件權限?

答:超級管理員和文件所有者可以修改,其他人修改不了。

2.怎么修改?

答:

命令名稱:chmod

命令英文原意:change the permissions mode of a file

命令所在路徑:/bin/chmod

執行權限:所有用戶

選項:-R遞歸修改

功能描述:改變文件或目錄權限

方法1 方法2
chmod [{ugoa}{+-=}{rwx}][文件或目錄]  chmod [mode=421][文件或目錄]

 這種方法是直接修改文件的某些用戶的權限位,不用管其他用戶的情況。

u代表所有者、g代表所屬組,o代表其他人,a代表全部。
+r代表加上讀權限,-r代表去掉讀權限,=r代表不管以前是什么權限,現在設置為讀權限

讀權限是4

寫權限是2

執行權限是1

其實就是二進制位置不同。

rwx,r是二進制100,w是二進制10,x是二進制1。

 chmod u+x English.zip

把文件English.zip的所有者權限中加上執行權限。

 

chmod g+r,o-r English.zip
把文件的所屬組加上讀權限,把其他人的去掉讀權限,g+r和o-r用逗號分隔。

 

chmod g=rx English.zip

不管文件所屬組以前是什么權限,現在就是設置為rx

chmod 755  English.zip

7就是111,就是rwx都有了,同樣,5就是讀和執行的權限,這句話就是設置文件English.zip所有者是讀寫執行權限,所屬組和其他人是讀和執行的權限。

 

選項:-R遞歸修改

新建文件夾時,-p是遞歸依次創建,而修改文件或文件夾權限時,如果要修改目錄下的子目錄和文件權限同時修改,要用-R

chmod -R 777 /tmp/a/

把/tmp/a/及其所有子目錄和文件的權限都改為777

 

 

 

 

1.4.怎么更改文件的所有者和所屬組,chown和chgrp

命令名稱:chown
命令英文原意:change file ownership
命令所在路徑:/bin/chown
執行權限:root
語法:chown 【選項】【新主人的用戶名】【文件或目錄】
功能描述:改變文件或目錄的所有者,選項 -R 可以遞歸修改文件夾下所有子目錄和文件
范例:$ chown mayun 111.txt  (把文件111.txt的所有者改為mayun)

 首先,改變文件的讀寫執行權限的時候,root和文件所有者都可以操作。但是改變文件所有者的時候,只有root可以操作,如下圖。

 

 當然,把文件換新主人,那新主人的用戶名不能輸入錯。

 

 改變文件所有者后,所屬組還是root哦!

那怎么改變所屬組呢?和改變文件所有者類似,只是把chown換成chgrp

命令名稱:chgrp

命令英文原意:change file group ownership

命令所在路徑:/bin/chgrp

執行權限:所有用戶

語法:chgrp【新的用戶組】【文件或目錄】

功能描述:改變文件或目錄的所屬組

范例:$ chgrp  mayun 111.txt  改變文件111.txt的所屬組為mayun

 

 

現在又有個問題,沒設置之前文件的所有者和所屬組是誰?

答:文件的所有者很簡單,誰創建了這個文件,文件的所有者就是誰!

那文件的所屬組是誰?就是文件所有者的主要組。

 

 

 

 

1.5.新建的文件夾和文件默認什么權限?(不常用)

我們新建一個文件222.txt,新建一個文件夾dir2,看看系統給他們的默認權限是什么?

 

從哪里知道新建文件夾的權限是rwxr-xr-x呢?

答曰:umask命令就是干這事的,它就是查看新建文件夾和新建文件的默認權限。

 

  看到了文件夾默認權限情況,文件的默認權限比文件夾少個x ,防止被攻擊。

 

 

命令名稱:umask

命令英文原意:the user file-creation mask

命令所在路徑:Shell內置命令

執行權限:所有用戶

語法:umask  [-S]

-S 以rwx形式顯示新建文件默認權限

功能描述:顯示、設置文件的默認權限

范例:$ umask  -S

 

 

 如上圖,root和普通用戶得到的默認權限還不一樣。

 用root用戶,新建文件夾時默認權限為755,文件權限默認644,能否更改為默認新建文件夾為700,默認新建文件權限600呢?

答曰:可以,與rwxrwxrwx異或算法得出權限碼,然后umask 權限碼即可。

rwx rwx rwx 為777

與什么異或能得到700 (rwx------)?

得到結果---rwxrwx,也就是077

因此,只要umask 077即可得到想要的結果。

umask 077后,新建的文件夾dir3權限就是rwx------,新建的文件就是去掉可執行權限后的效果。

 

 也就是說,umask的參數和得到的結果都是補碼,不是直接的權限碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM