Linux教學:chmod指令

chmod – 更改存取權限

語法:
chmod [選項] [模式] [檔案]
選項:
-f, --silent, --quiet:隱藏任何錯誤訊息。
-v, --verbose:列出每個檔案處理之詳細過程。
-c, --changes:與-v類似,但是只列出有更改之過程。
-R, --recursive:以遞迴的方式對目前目錄下的所有檔案及子目錄進行更改。
--help:列出幫助資訊。
--version:列出版本資訊。

模式代表著要更改至什麼權限,可以用字串或數字表達,通常字串對初學者是比較好理解的。

權限字串:當你在terminal使用ls -l指令後,可以發現每個檔案都有一串類似-rwxrwxrwx的字串,第一個字元可能是-d,前者代表是檔案,後者代表的是資料夾,剩下的九個字元則為三個一組分別代表User(檔案擁有者)、Group(檔案所屬群組之使用者)、Other(其他使用者)對此檔案之權限。

r(read):讀取的權限
w(write):修改的權限
x(execute):執行的權限
圖一

圖一權限字串分析:

名稱:manage.py
-:檔案
rwx:檔案擁有者可以讀、寫、執行
r-x:檔案所屬群組之使用者可以讀、執行
r-x:其他使用者可以讀、執行

字串模式:

語法:[ugoa...][[+-=][rwxXugo...]][,...]
使用者 解釋
u 檔案擁有者
g 檔案所屬群組之使用者
o 其他使用者
a 所有使用者
運算子 解釋
+ 將所選之屬性加到所選之使用者上
將所選之屬性從所選之使用者上移除
= 將所選之屬性assign給所選之使用者
屬性 解釋
r 讀取權限
w 編輯權限
x 執行權限
X 若對象為資料夾,或所有使用者裡已有人有執行權限,則給予執行權限
u 檔案擁有者目前所持有之權限
g 檔案所屬群組之使用者目前所持有之權限
o 其他使用者目前所持有之權限
指令範例:
chmod a+w filename... //讓所有使用者都有編輯filename檔案的權限。
chmod u=rwx,g+x filename... //給予檔案擁有者所有權限,檔案所屬群組之使用者則新增執行權限。
chmod =r filename... //若無指定使用者則視為所有使用者。將所有使用者權限變更為只能讀取。
chmod go=u filename... //將檔案所屬群組之使用者及其他使用者之權限變更為與檔案擁有者一致。
chmod =rwx * //將當前目錄裡所有檔案之任何權限開放給所有人。
chmod u+rwx,go-rwx * //檔案擁有者擁有對當前目錄裡所有檔案之所有權限,而除了檔案擁有者以外,其餘使用者什麼都不能做。

數字模式:

語法:[abc]
a, b, c各為一個數字,分別代表User, Group, Other的許可權限。

r屬性值:4, w屬性值:2, x屬性值:1
若希望User擁有rwx屬性,則a值為4+2+1=7
若希望Group擁有rw-屬性,則b值為4+2=6
若希望Other擁有r--屬性,則c值為4

指令範例:chmod 764 filename...

常用指令範例:

chmod =rwx filename... 等於 chmod 777 filename...
chmod u=rwx,g=rw,o=r filename... 等於 chmod 764 filename...
chmod ugo=r filename... 等於 chmod 444 filename...
chmod 777 * 將當前目錄裡所有檔案之任何權限開放給所有人
chmod -x * 將所有使用者在當前目錄裡所有檔案之執行權限移除

留言討論區