歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux檔案權限介紹以及相關指令

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

日期:2017/2/28 16:05:39   编辑: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