歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

Linux檔案權限介紹以及相關指令

一. owner,group,others

介紹權限之前我們要先認識3個linux下的身份,也即 owner(擁有者),group(群組),others(其他人)

舉個例子:

公司開發部有2個開發組,group1(a,b,c),group2(x,y,z),group1是開發1組,做c++開發。group2時開發2組,做數據庫開發。a,b,c屬於開發一組的3個開發人員,x,y,z屬於開發2組的3個開發人員;由於a,b,c開發同一個產品,x,y,z開發同一個產品,所以,要求a,b,c可以互相查閱對方的文件並修改,但是group1和group2之間卻不可以。此時如果文檔M屬於開發者a創建的,則a為M的“owner ",b,c和a屬於同一個group,也即a支持group "group1",而,x,y,z對應group1來講則是others。

(小知識:默認情況下,在Linux中,系統的賬號和一般身份使用者,以及root賬戶的相關信息,都是放在/etc/passwd這個檔案下的;個人密碼則是記錄在/etc/shadow這個目錄下的;所有的組名則記錄在/etc/group 這個檔案中。)

二. 檔案的屬性的解釋

如果你剛剛裝完linux,那麼你會發現在/root目錄下有一個install.log的文件。我們用ls 查看一下。

(備注:ls指令可以用man ls自己看看。常用的如下:

ls -l  ----以清單樣式列出詳細信息 如: ls -l /root

ls -a ----列出所有的文檔,包括以“.”開頭的,也即包含隱藏檔  ls -a  /root

ls -d ----列出後邊指定檔案的屬性(不限制個數)  如: ls -ld   /root/install.log  /root    ---以清單樣式列出所有指定檔案的屬性)

ls -l /root/install.log    會得到如下信息:

-rwxr-xr-x   1    root   root    30921    Aug  14   21:96   /root/install.log

1                 2      3       4           5                     6                      7

可以將這些屬性劃分為7個部分。

1. 檔案的類型和權限。第一個字符“-”代表  “/root/install.log”這個檔案是一個檔案文件。

常見的檔案類型標志請見下邊:

d 文件夾
- 檔案
l 鏈接檔,類似windows的快捷方式
b 隨即存取設備,如cd_rom,u盤等等
c 一次性存取設備,如鍵盤,鼠標等等
s socket,資料接口文件,常用於網絡數據承接
p pipe(FIFO),即先進先出,數據傳輸文件。常用於解決多程序存取同一個檔案造成的錯誤問題。


緊跟在“-”後邊的9個字符是固定的,無論什麼檔案都是9個,這九個字符按照順序分別代表了owner,group,others對於這個檔案的“讀,寫,執行”權限。

r read:讀權限
w write:寫權限
x executable:執行權限


2是表示有多少檔名連接到此節點(i-node),3是檔案的歸屬者,4是檔案的所屬群組,5代表檔案的大小,6代表檔案的建立時間或者最新修改時間  7代表檔名

如上文所示: /root/install.log這個檔案的屬性所代表的意義即:

1. 這是一個檔案,owner對他具有讀、寫、執行三種權限,owner所屬的group對此檔案具有讀、執行權限,沒有寫權限,others對此檔案也具有讀、執行權,無寫權限。

2. 鏈接到此i-node的檔名有一個

3. 該檔案的歸屬用戶為root

4. 該檔案的歸屬群組為root

5. 該檔案的大小為30921bytes

6. 該檔案的最後修改時間(建立時間)為 Aug  14   21:96    如果想要顯示完整的時間格式,可以用以下命令: ls -l --full-time /root/install.log    

7. 該檔案的檔名為“/root/install.log”

三. 修改檔案的屬性和權限指令。

1. chgrp  改變檔案所屬群組

比如 ls -l  /home/uncle_cat/install_1.log  得到:

-rwxrwxrwx  1  uncle_cat   uncle_cat    30921  Aug 19 14:21   /home/uncle_cat/install_1.log 

則執行一下命令:

chgrp users /home/uncle_cat/install_1.log

ls -l  /home/uncle_cat/install_1.log  

修改後為這個樣子:

-rwxrwxrwx  1  uncle_cat   users 30921  Aug 19 14:21   /home/uncle_cat/install_1.log 

2. chown  改變檔案擁有者,需要時也可以連同擁有者和所屬群組一並改動。

chown  bin  /home/uncle_cat/install_1.log 

ls -l  /home/uncle_cat/install_1.log  

修改後為這個樣子:

-rwxrwxrwx  1  bin   users 30921  Aug 19 14:21   /home/uncle_cat/install_1.log 

 

chown  root:root  /home/uncle_cat/install_1.log 

ls -l  /home/uncle_cat/install_1.log  

修改後為這個樣子:

-rwxrwxrwx  1  root  root  30921  Aug 19 14:21   /home/uncle_cat/install_1.log 

3. chmod  改變檔案的權限。

改變檔案的權限有2個類型,一個是數字型,一個是字符型。

(1)數字型,數字型的權限對照表如下:

r: 4

w: 2

x: 1

每種身份(owner,group,others)對應的權限時累加的,如:

-rwxrwxrwx  1  root  root  30921  Aug 19 14:21   /home/uncle_cat/install_1.log 

權限為 777,如果要修改others對於此文檔的權限為不可寫,執行,只可讀,即為: -rwxrwxr--   則語句為:

chmod  774    /home/uncle_cat/install_1.log 

如果需要變更權限的是一個文件夾,而且你希望此文件夾下所有的檔案權限都跟著文件夾做相應的改變,可以使用選項 -r (recursive),如:

chmod  -r  770  /home/uncle/test   ----持續遞歸設定/home/uncle/test 以及其下的所有檔案的權限為770

(2)字符型,字符型的對照表為如下所示:

chmod u(owner:也可看做users) “+”加入

“-”減去 “=”等於
 r      

w     

 x
 檔案或目錄
g(group)
o(others)
a(all:等於u+g+o)


例如:

chmod  u=rwx,g=rx,o=r  /home/uncle_cat/install_1.log   

ls -l /home/uncle_cat/install_1.log 

-rwxr-xr--    ..........

chmod  u=rwx,go=rx  /home/uncle_cat/install_1.log   

ls -l /home/uncle_cat/install_1.log 

-rwxr-xr-x    ..........

如果我們不知道檔案/home/uncle_cat/install_1.log    的權限為什麼,但是我們想為每個身份都加入寫的權限,則用如下語句:

chmod  a+w  /home/uncle_cat/install_1.log   

ls -l /home/uncle_cat/install_1.log 

-rwxrwxrwx    ..........

Copyright © Linux教程網 All Rights Reserved