Linux Laravel資料夾權限控管

今天要談一些基本觀念,前幾天跟學長討論時聊到permission問題,相信很多初學者,包含我都習慣用root 與777去帶入所有PHP框架資料夾,但開啟777權限其實是開放任何人都可以讀取/寫入並執行你的程式碼,也就是你把權限全部都開給人家了 (迷之音: 媽媽有沒有跟你說過就算在談戀愛也不要把心都放在男/女朋友身上? 不然你失戀就死定了!)

(這個例子舉的不是很好,因為在場的各位可能都沒有交過男/女朋友 :P (拜託別打臉~ 我靠臉吃飯)

P.S. 以下內容源自於此篇文章How to set up file permissions for Laravel?,我只是幫忙翻譯,順便學習紀錄而已

那我們該怎麼處理資料權限的問題? 又要給用戶看到網站,又要保持程式碼與資料的安全性

1. 設定資料夾授權給你網站伺服器的用戶

假設你的用戶叫做www-data,設定資料夾權限給www-data用戶

1
sudo chown -R www-data:www-data /path/to/your/laravel/root/directory

但如果這麼做,網站伺服器的用戶將會擁有你的所有這個路徑底下檔案的所有權限,同時利用FTP連動文件的進行開發者也會在上傳文件時遇到問題,因為FTP登入的身分可能與網路伺服器用戶不同,所以請先把你用來FTP登入的帳號添加到網路伺服器用戶組中。

1
sudo usermod -a -G www-data 你的用戶

然後將所有目錄設置為755,將文件設置為644

1
sudo find /path/to/your/laravel/root/directory -type f -exec chmod 644 {} \;
1
sudo find /path/to/your/laravel/root/directory -type d -exec chmod 755 {} \;

以上這兩句只差在find的type 一個是f(普通文件) 一個是d(目錄)

2. 將你的用戶設定為資料夾的擁有者

1
sudo chown -R 我的用戶:www-data /path/to/your/laravel/root/directory

此指令當中將擁有者設定為: 我的用戶
而擁有的群組設定為: www-data
並且加上-R表示遞迴的把所有底下資料夾都設為此權限設定

之後再更仔細的設定檔案及資料夾的權限代號

find命令: 用來在指定目錄下查找文件。
-exec<執行指令>:假設find指令的回傳為True,就執行該指令。

1
2
sudo find /path/to/your/laravel/root/directory -type f -exec chmod 664 {} \;
sudo find /path/to/your/laravel/root/directory -type d -exec chmod 775 {} \;

設定完程式碼的控制權之後,最後設定網頁使用者的觀看權 (Laravel中的storage, cache)

1
2
sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache

接下來你的網站伺服器就既擁有基本的資安能力,又能開發的順暢囉!

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
...
  • Copyrights © 2020 Dante Wu
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信