linux基礎知識-11
一、用戶所有者,組所有者,權限
linux中每個文件都有三個屬性,允許用戶控制文件的訪問方式。
當建立一個文件時,當前用戶就是這個文件的用戶所有者(也就是說這個文件是哪個用戶建立的),組所有者就是這個用戶的主要組,一般和用戶同名。普通用戶不能更改文件用戶所有者,但可以更改組所有者(比如之前學習的newgrp可以定義主要組)。
文件的權限定義了三個不同極別的用戶如何使用這個文件:
二、三種權限
通過上圖我們知道用戶所有者,組所有者,其它人都對文件有著不同的權限設置,其中每組權限分為rwx,被標記 “-” 的表示這組權限中沒有這個權限。比如 rw- 表示沒有x權限。
標記 | 權限 | 說明 |
---|---|---|
r | 讀 | 對於文件表示可以讀取文件的內容,對於文件夾表示可以瀏覽目錄中的文件列表 |
w | 寫 | 對於文件表示可以修改文件的內容,對於文件夾表示可以創建和刪除文件 |
x | 執行 | 對於文件表示可以執行(類似於windows的exe文件),對於文件夾表示可以進入此文件夾中。 |
三、三種訪問級別
每個文件都有三組不同的讀,寫,執行權限,分別用於文件所有者(u),組所有者(g)和其它人(o)。
當有人訪問一個文件時,系統會按如下順序訪問:
- 當前用戶是文件所有者嗎? 如果是啟用用戶權限。
- 當前用戶是組所有者的成員嗎? 如果是啟用組權限。
- 如果前面兩者都不是啟用其它權限。
(一)其它人的權限測試
cclove@home:~$ echo "hello" > /tmp/abc.txt cclove@home:~$ su - linux 密碼: $ echo "hello" >> /tmp/abc.txt -su: 1: cannot create /tmp/abc.txt: Permission denied $ ls -l /tmp/abc.txt -rw-r--r-- 1 cclove cclove 6 7月 14 18:57 /tmp/abc.txt
我們先用cclove用戶創建文件/tmp/abc.txt,之後切換到linux用戶,追加字符串到/tmp/abc.txt文件中,但發現沒有權限。 之後我們用ls -l查看一下,發現其它人只能讀,不能寫,所以不能修改人家的文件。
(二)共同組成員的權限測試
首先我們查看一下abc.txt文件的組所有者權限是讀和寫,這說明只要是cclove組的成員就可以修改abc.txt。 之後我們切換到linux通過id查看一下,發現linux用戶的次要組有cclove,這說明linux在cclove這個組中,對這個文件有修改權限。
這裏要註意一下,老陌通過修改/etc/group文件:
cclove : x : 1000 : linux
把linux放到cclove最後一個字段,表示這個用戶屬於cclove組,如果有多個用戶,用逗號分隔。
(三)符號鏈接文件的權限
鏈接文件就是創建的快捷方式,這裏link_abc.txt是abc.txt的快捷方式。我們發現權限是rwxrwxrwx,但實際上它鏈接到abc.txt,所以權限同abc.txt。
四、修改文件權限
chmod ugoa +-= rwx filename
縮寫 | 說明 |
---|---|
u | 用戶所有者 |
g | 組所有者 |
o | 其它人 |
a | 以上三組(所有) |
+ | 增加權限 |
- | 減去權限 |
= | 設置權限 |
r | 讀 |
w | 寫 |
x | 執行 |
例:
給文件abc.txt 用戶所有者添加x權限,組所有者添加w權限,其它人去掉r權限。
五、修改文件的組所有者
之前老陌通過newgrp臨時修改用戶的主要組,之後創建文件則以修改後的組為準,但是如果已經創建文件了就無能為力了。
我們需要用chgrp來修改(change group):
chgrp GROUP file……
此命令的作用是將文件的組所有者改成GROUP,可以一次性修改多個文件。
只有文件的所有者才能更改文件的所屬組,而且這個用戶必須是新組的成員。
通過上圖我們來分析一下:
先創建文件file,查看他的組所有者是laomo, 之後查看文件所有者用戶的次要組都有誰,查看之後用chgrp修改file的組所有者為netdev,之後再查看成功。
最後修改file的組所有者為music失敗,因為laomo用戶不是music組成員,所以修改不了。如果非要改可以用管理員賬號改。
六、修改文件的用戶所有者
這個需要管理來操作,普通用戶沒有權限修改。
chown USER file……
將文件的用戶所有者改成USER。
通過上圖我們來分析一下:
首先查看文件的用戶所有者是laomo,之後我們用chown修改成me用戶(me是老陌新創建的用戶),註意要以管理員權限修改, 再次查看文件的所有者已經變成了me。
linux基礎知識-11