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

來進行權限的變更。

 

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

Linux 檔案的基本權限就有九個,分別是「ownergroupothers」三種身分各自有自己的「ReadWriteExecute

權限,先複習一下剛剛上面提到的資料:檔案的權限字元為:「-rwxrwxrwx」,這九個權限是三個三個一組!其中,可以

使用數字來代表各個權限,各權限的分數對照表如下:

字元 權限分數
r 4
w 2

 

每種身分(OwnerGroupOthers)各自的三個權限(rwx)分數是需要累加的,例如當權限為:[-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 三種身

份,那麼就可以藉由 ugo 來代表三種身份的權限!此外, a 則代表 all 亦即全部的身份!那麼讀寫的權限就可以寫成

rwx,也就是可以使用底下的方式來看:

chmod

u

g

o

a

+(加入)

-(除去)

=(設定)

r

w

x

檔案或目錄

 

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

user(u):具有可讀、可寫、可執行的權限。

groupothers(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 中設定檔案權限視窗,現在有沒有更了解它實際運作的流程了呢?

1513087386-2556165647  

 

 

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!

arrow
arrow
    文章標籤
    [chmod]
    全站熱搜

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