在 Linux 下用電腦經常會用到 chmod 命令。 這裡詳細的介紹一下。 省的每次設定檔案屬性無效的時候又要在網上找手冊去看。
chmod 只有管理員才能執行。 普通使用者可以通過 sudo chmod 執行。
Linux 的檔案許可權可以分成三段, 通常 ls -l 出來的第一列就是檔案許可權資訊。每個檔案(任意類型的檔案或者檔案夾)的屬性都用10個字元表示。舉個簡單的例子, 看下面這行許可權資訊:
drwxr-xr-x
可以知道, 第一字元是 d , 說明它是一個檔案夾. 檔案許可權資訊第一字元通常都是連結符 "-".
從第二到第四位 (rwx) 是檔案所有者的許可權.上面的字元具體意思也很簡單:
r: 可讀, w: 可寫, x: 可執行.
所有上面的資訊表示該檔案夾的擁有者有可讀,可寫, 可執行給檔案夾的許可權. 用就是全部許可權.
再看第五位到第七位 (r-x) 是檔案夾使用者擁有者所在組的許可權. 根據上面的說法就是這個組對該檔案夾有可讀可執行檔許可權. 連結號表示沒有許可權空缺, 沒有寫入權限.
同樣第八位到第十位 (r-x) 是其他人對這個檔案夾操作的許可權. 這裡看來就是可讀, 可執行許可權.
其實我們更多的看到的是數字組成的許可權. 檔案的許可權組成是由 使用者的許可權, 使用者所在組的許可權, 其他人的許可權 這三個許可權組成的. 每個許可權都可以是 r,w,x 的任意組合. 所以用字元表示太麻煩, 簡單的用數字表示比較方便. 我們只要記住3個數字就行了.
其中: r = 4, w = 2, x = 1. 沒有見過 linux 許可權有超過7的數位. ^o^
所以如果是可讀可寫可執行檔話那就是: rwx = 4 + 2 + 1 = 7 上面的三個許可權都可以這樣算出來.
比如我們看一個檔案的許可權如下: -rw-r--r--
說明這個檔案是個普通檔案, 因為第一個字母是串連符 "-", 看接下來的三個字母是: rw- , 表示該檔案的所有者對該檔案可讀可寫. 那麼用數字表示也就是 4 + 2 + 0 = 6,
再看第5-7個字元: r--, 表示該檔案所有者所在的組對該檔案只有可讀許可權. 那麼用數字表示為: 4 + 0 + 0 = 4,
看最後三個字元: r--, 表示其他人對該檔案的許可權. 同樣是知讀. 用數字表示也是 4.
所有該檔案的許可權用數字看起來就是: 644
瞭解了許可權的組成. 現在用 chmod 命令就方便了. 最簡單的用法.
sudo chmod 644 readme.txt
這樣就給目前的目錄下的 readme.txt 檔案重新賦予了許可權. 只有擁有者可以修改, 其他人只能看檔案內容.
另外還有一種比較方便的針對某一類的使用者的操作. 先介紹2個操作符. "+" 表示增加許可權. "-" 表示消減許可權.
檔案所有者可以用字母 u 表示. 使用者所在的組可以用字母 g 來表示. 其他人可以用字母 o 來表示. 所有人可以用字母 a 了表示.
其實就是單詞 user, group, other, all 的第一個字母.
比如對一個檔案 readme.txt 執行修改其他人對這個檔案的許可權. 修改位其他人可以寫. 可以這樣
sudo chmod o+w readme.txt
相對的, 修改使用者所在組的成員對該檔案也有可修改的許可權:
sudo chmod g+w readme.txt
現在如果想去掉 其他人對該檔案的可修改的許可權的話:
sudo chmod o-w readme.txt
最後, 我們讓所有人對該檔案都有全部許可權的話, 這樣做是很危險的.只是測試舉例才用而已. 可以這樣
sudo chmod a+rwx readme.txt
OK, 到這裡就簡單的介紹完了. 如果想對一個目錄及其下面的檔案都修改成統一的許可權資訊的話可以加參數 -R , 比如對目前的目錄 test 及其下面的檔案都該成 檔案擁有者可讀可寫, 其他人都只能看的話:
sudo chmod -R 644 test
數字代表的意思自己去算算看, 是不是很簡單呢?