PHP/Linux 檔案權限

PHP/Linux 檔案權限

我可以問一個關於檔案權限的問題嗎?我設定了執行 Apache 的 Ubuntu 伺服器。我有簡單的 php 上傳表單,並且能夠將檔案上傳到 /var/www/site/uploads ,如下所示。

sandbox@sandbox-virtual-machine:/var/www/site/uploads$ ll
total 1736
drwxrwxrwx 2 www-data www-data    4096 Oct 18 02:53 ./
drwxrwxrwx 3 sandbox  sandbox     4096 Oct 18 00:42 ../
-rw-r--r-- 1 www-data www-data  145998 Oct 18 02:53 3d wallpaper pic.jpg
-rw-r--r-- 1 www-data www-data  166947 Oct 18 02:53 3D Wallpapers 9.jpg
-rw-r--r-- 1 www-data www-data 1451489 Oct 18 02:53  
 6453_3d_landscape_hd_wallpapers_green.jpg

是否有上傳文件並且它們顯示為

-rw-r--r-- 1 sandbox sandbox  145998 Oct 18 02:53 3d wallpaper pic.jpg
-rw-r--r-- 1 sandbox sandbox  166947 Oct 18 02:53 3D Wallpapers 9.jpg
-rw-r--r-- 1 sandbox sandbox 1451489 Oct 18 02:53     
 6453_3d_landscape_hd_wallpapers_green.jpg

這樣我就可以立即將它們提供給等待/運行的 shell 腳本。現在等待腳本(移動、校驗和、重新命名、調整大小等)無法對具有 www-data 屬性的上傳檔案執行任何操作。如果我只是作為本機帳戶,例如

sandbox@sandbox-virtual-machine:/var/www/site/uploads$touch testfile

然後腳本就可以按照我的意願運行。任何建議將不勝感激,也提前致謝。

感謝大家對我的幫助,讓我能夠進步。

現在我即將解決並附加輸出

sandbox@sandbox-virtual-machine:/var/www/site/uploads$ ll
total 388
drwxrwxrwx 2 www-data www-data   4096 Oct 18 04:22 ./
drwxrwxrwx 3 sandbox  sandbox    4096 Oct 18 04:17 ../
-rw-r--r-- 1 sandbox  sandbox  166947 Oct 18 04:21 3D Wallpapers 9.jpg
-rw-r--r-- 1 sandbox  sandbox  219808 Oct 18 04:20 adafruit_pi.png
-rw-rw-r-- 1 sandbox  sandbox       0 Oct 18 04:22 test

我如何設定上傳檔案的權限,例如僅在中間群組中存在差異的「測試」。如adafruit_pi.png VS test。請問我應該在php程式碼中插入哪條語句?

答案1

PHP 在 apache 下作為 web 應用程式運行,這就是www-data您所看到的用戶。

上傳後,您可以使用以下命令變更檔案的擁有者和群組:

exec( 'chgrp sandbox 3*.jpg' );
exec( 'chown sandbox 3*.jpg' );

請注意,更改權限後,網頁伺服器將無法寫入檔案、刪除或移動它們。

答案2

嘗試將使用者 www-data 新增至沙箱群組

答案3

嘗試更改 apache 服務的使用者和群組:在 apache 設定檔中搜尋(我認為在 ubuntu 中位於 /etc/apache2/apache2.ini 中)並蒐索以下行:

User www-data
Group www-data

並更改www-datasandbox.

請注意,sandbox使用者應該具有對 webroot 資料夾進行讀取/寫入的權限。

希望能幫助你。

注意:這應該用於測試目的,不建議用於生產環境。

相關內容