相信很多Linux的系統維運人員與開發人員,日常都會處理到有關於檔案的權限問題,如開發網站程式的時候,開發人員上傳本機的程式檔案至Web Server後,發現程式無法執行,這時候很有可能是因為該檔案的擁有者從www-data變成你的帳號,導致無法執行,這時候就需要做chown來變更使用者,如果變更後還是無法執行,這時候權限部分,也要一併調整,這時候可以透過chmod來做調整,本篇筆記我會記錄關於chmod與chown,我所知道的知識分享給大家參考,我也順便紀錄下來當作備忘錄,也希望藉由此次分享讓初學者能更快掌握相關語法。
測試資料
1.可以先在/var/www/建立一個 test資料夾
2.檔案名稱可以用testdata.txt,使用vim testdata.txt建立並將以下資料貼入即可開始測試
chmod & chown測試
測試資料權限
查詢一下這個檔案的權限
root@ip-192-168-0-99:/var/www/test# ls -l testdata.txt
-rw-r--r-- 1 ubuntu ubuntu 13 Oct 5 20:47 testdata.txt
#很明顯地這個檔案權限是644,後面會詳細介紹該權限的意思
chmod基本用法:
1.數字模式
chmod指令
修改檔案及目錄權限:sudo chmod ××× [檔案或目錄]
root@ip-192-168-0-99:/var/www/test# sudo chmod 755 testdata.txt
root@ip-192-168-0-99:/var/www/test# ls -l testdata.txt
-rwxr-xr-x 1 ubuntu ubuntu 13 Oct 5 20:52 testdata.txt
#可以參考上面的圖片解釋
常用的chmod數字指令
sudo chmod 600 [檔案或目錄] (只有User有讀和寫的權限)
sudo chmod 644 [檔案或目錄] (User有讀和寫的權限,Group,Other只有讀的權限)
sudo chmod 700 [檔案或目錄] (只有User有讀和寫以及執行的權限)
sudo chmod 666 [檔案或目錄] (每個人都有讀和寫的權限)
sudo chmod 755 [檔案或目錄] (User有讀、寫、執行的權限,Group,Other有讀和執行的權限)
sudo chmod 777 [檔案或目錄] (每個人都有讀和寫以及執行的權限)
指令解析
chmod [參數] [模式] [檔案或目錄]
選項:
-f, –silent, –quiet:隱藏任何錯誤訊息。
-v, –verbose:列出每個檔案處理之詳細過程。
-c, –changes:與-v類似,但是只列出有更改之過程。
-R, –recursive:以遞迴的方式對目前目錄下的所有檔案及子目錄進行更改。
–help:列出幫助資訊。
–version:列出版本資訊。
模式:
模式代表著要開啟什麼樣的權限,可以用字串模式或數字模式表達。
※如果還是覺得複雜也可以用這種線上工具勾一勾即可幫你算出權限數字=>Chmod Calculator
2.字串模式
使用者縮寫
u = User(擁有者)
g = Group(群組)
o = Others(公開)
a = all(所有使用者)
功能縮寫
+ = 增加權限
- = 去除權限
= = 重新設定指定使用者類型的權限
模式縮寫
r = 可讀權限
w = 可寫權限
x = 可執行權限
#ug+rwx意思是User與Group增加讀、寫、執行權限
root@ip-192-168-0-99:/var/www/test# sudo chmod ug+rwx testdata.txt
#ug=rwx意思是User與Group重新設定權限,增加讀、寫、執行權限
root@ip-192-168-0-99:/var/www/test# sudo chmod ug=rwx testdata.txt
#ug-rwx意思是User與Group移除讀、寫、執行權限
root@ip-192-168-0-99:/var/www/test# sudo chmod ug-rwx testdata.txt
#a-x意思是移除所有人的執行權限
root@ip-192-168-0-99:/var/www/test# sudo chmod a-x testdata.txt
#-x意思是移除所有人的執行權限(未指定Scope則會對所有人執行)
root@ip-192-168-0-99:/var/www/test# sudo chmod -x testdata.txt
#ug+rw,a-x意思是新增讀與寫權限給user及group,然後移除所有人的執行權限
root@ip-192-168-0-99:/var/www/test# sudo chmod ug+rw,a-x testdata.txt
綜合練習
sudo chmod 777 testdata.txt
sudo chmod ugo=rwx testdata.txt
sudo chmod a=rwx testdata.txt
sudo chmod =rwx testdata.txt
※如果還是覺得複雜也可以用這種線上工具勾一勾即可幫你算出權限字串模式=>Chmod Calculator
chown基本用法:
變更檔案和目錄的擁有者和所屬群組
# 將 testdata.txt 的擁有者改為 username
root@ip-192-168-0-99:/var/www/test# sudo chown username testdata.txt
# 將 testdata.txt 的群組改為 groupname
root@ip-192-168-0-99:/var/www/test# sudo chown :groupname testdata.txt
# 將 testdata.txt 的使用者:群組改為 username:groupname
root@ip-192-168-0-99:/var/www/test# sudo chown username:groupname testdata.txt
# 將 testdata.txt 的使用者:群組改為 username:groupname,加上-v印出輸出執行結果
root@ip-192-168-0-99:/var/www/test# sudo chown -v username:groupname testdata.txt
changed ownership of 'testdata.txt' from ubuntu:ubuntu to username:groupname
# 一次修改某個目錄下所有檔案與子目錄的使用者與群組,將 myfolder 的使用者:群組改為 username:groupname
root@ip-192-168-0-99:/var/www/test# sudo chown -R username:groupname myfolder
# 確認舊的使用者與群組為 ubuntu:ubuntu才進行變更權限
sudo chown --from=ubuntu:ubuntu username:groupname testdata.txt
Reference
你好,我是RD爸,希望透過我的紀錄,可以帶給你一些新的想法~ 專注於各式3C產品的開箱評測、程式相關技術及理財筆記。
email ►[email protected]