檔案權限的改變使用的是 chmod 這個指令,但是,權限的設定方法有兩種,分別可以使用「數字」或者是「符號」

來進行權限的變更。

 

1. 數字類型改變檔案權限

Linux 檔案的基本權限就有九個,分別是 owner、group、others 三種身分各自有自己的 Read、Write、Execute 權限,先複習一下剛剛上面提到的資料 :

檔案的權限字元為 : -rwxrwxrwx,這九個權限是三個三個一組!其中,可以使用數字來代表各個權限,各權限的分數對照表如下 :

字元 權限分數
r 4
w 2

 

每種身分 (Owner、Group、Others) 各自的三個權限 (r、w、x) 分數是需要累加的,例如當權限為 : -rwxrwx--- 分數則是 :

身分 權限 分數
Owner rwx 4 + 2 + 1 = 7
Group rwx 4 + 2 + 1 = 7
Others --- 0 + 0 + 0 = 0

 

所以設定權限變更時,該檔案的權限數字就是 770,變更權限的指令 chmod 的語法 :

[root@study ~]# chmod [-R] xyz 檔案或目錄

選項與參數 :

xyz : 就是剛剛提到的數字類型的權限屬性,為 rwx 屬性數值的相加。

-R : 進行遞迴(recursive)的持續變更,亦即連同次目錄下的所有檔案都會變更。

 

舉例來說,如果要將 .bashrc 這個檔案所有的權限都設定啟用,那麼就下達 :

[root@study ~]# ls -al .bashrc

-rw-r--r--. 1 root root 176 Dec 29  2013 .bashrc

[root@study ~]# chmod 777 .bashrc

[root@study ~]# ls -al .bashrc

-rwxrwxrwx. 1 root root 176 Dec 29  2013 .bashrc

 

如果要將權限變成 -rwxr-xr– 呢?那麼權限的分數就成為 [4+2+1][4+0+1][4+0+0]=754,所以需要下達 chmod 754 filename。

另外,在實際的系統運作中最常發生的一個問題就是,常以 vim 編輯一個 shell 的文字批次檔後,他的權限通常是 -rw-rw-r– 也就是 664,如果要將該檔案變成可執行檔,並且不要讓其他人修改此一檔案的話, 那麼就需要 -rwxr-xr-x 這樣的權限,此時就得要下達 : chmod 755 test.sh 的指令囉!

 

另外,如果有些檔案你不希望被其他人看到,那麼應該將檔案的權限設定為例如 : -rwxr—–,那就下達 chmod 740 filename。

 

例如:將剛的 .bashrc 這個檔案的權限修改回 -rw-r–r– 的情況。

答 : -rw-r–r– 的分數是 644,所以指令為 : chmod 644 .bashrc

 

2. 符號類型改變檔案權限

還有一種改變權限的方法,從之前的介紹中可以發現,基本上就九種權限分別是 (1) user (2) group (3) others 三種身份,那麼就可以藉由 u、g、o 來代表三種身份的權限!此外, a 則代表 all 亦即全部的身份!那麼讀寫的權限就可以寫成 r、w、x,也就是可以使用底下的方式來看 :

chmod

u

g

o

a

+ (加入)

- (除去)

= (設定)

r

w

x

檔案或目錄

 

來實作一下!假如要「設定」一個檔案的權限成為 -rwxr-xr-x 時,基本上就是 :

  • user (u) : 具有可讀、可寫、可執行的權限。
  • group 與 others (g、o) : 具有可讀與執行的權限。

 

所以就是 :

[root@study ~]# chmod  u=rwx,go=rx  .bashrc

 

注意喔!那個 u=rwx,go=rx 是連在一起的,中間並沒有任何空白字元!

[root@study ~]# ls -al .bashrc

-rwxr-xr-x. 1 root root 176 Dec 29  2013 .bashrc

 

那麼假如是 -rwxr-xr– 這樣的權限呢?可以使用 chmod u=rwx,g=rx,o=r filename 來設定。

此外,如果不知道原先的檔案屬性,而只想要增加 .bashrc 這個檔案的每個人均可寫入的權限,那麼就可以使用 :

[root@study ~]# ls -al .bashrc

-rwxr-xr-x. 1 root root 176 Dec 29  2013 .bashrc

[root@study ~]# chmod  a+w  .bashrc

[root@study ~]# ls -al .bashrc

-rwxrwxrwx. 1 root root 176 Dec 29  2013 .bashrc

 

而如果是要將權限去掉而不更動其他已存在的權限呢?例如要拿掉全部人的可執行權限 :

[root@study ~]# chmod  a-x  .bashrc

[root@study ~]# ls -al .bashrc

-rw-rw-rw-. 1 root root 176 Dec 29  2013 .bashrc

[root@study ~]# chmod 644 .bashrc  # 測試完畢得要改回來喔!

 

知道 +、-、= 的不同點了嗎? + 與 – 的狀態下,只要是沒有指定到的項目,則該權限「不會被變動」,例如上面的例子中,由於僅以 – 拿掉 x 則其他兩個保持當時的值不變;如果想讓程式可以擁有執行的權限,但又不知道該檔案原本的權限為何,此時,利用 chmod a+x filename,就可以讓該程式擁有執行的權限了。

 

如果想計算一下每個身分的權限數值,也可以嘗試下面的 chmod 計算機,透過實際的操作會讓人更印象深刻!

 

CHMOD 計算機

下方的圖片是在 FileZilla 中設定檔案權限視窗,現在有沒有更了解它實際運作的流程了呢?

 

 

 

Reference:http://shian420.pixnet.net/blog/post/344938711-%5Blinux%5D-chmod-%E6%AA%94%E6%A1%88%E6%AC%8A%E9%99%90%E5%A4%A7%E7%B5%B1%E6%95%B4!

文章標籤
全站熱搜
創作者介紹
創作者 mitblog 的頭像
mitblog

香腸炒章魚

mitblog 發表在 痞客邦 留言(0) 人氣(331)