我有一個新的 Ubuntu 服務器,我安裝了 Apache 和 PHP。
我有兩個域:example1.com 和 example2.com。
如何防止 example1.com PHP 腳本看到 example2.com 檔案夾?反之亦然?
我希望 example1.com 只能讀取 /var/www/example1.com/ 中的檔案夾,而 example2.com 只能讀取 /var/www/example2.com/ 中的檔案夾。
即使此時example1.come 和example2.com 都可以看到整個磁盤的內容/var/... /etc/... 一切。
我該如何糾正這種情況?
謝謝,加布里埃爾
uj5u.com熱心網友回復:
通過這個簡單的代碼,我可以看到磁盤的所有內容,甚至在域檔案夾之外:
$path = "/"; //or "/etc/" or "/var"
$scandir = scandir($path);
這是VirtualHost的配置,兩個站點都是一樣的,只是域名和檔案夾名發生了變化。
<VirtualHost *:80>
DocumentRoot /var/www/example1.it/
ServerName example1.it
ServerAlias www.example1.it
<Directory /var/www/example1.it/>
Options -Indexes FollowSymLinks
AllowOverride All
Require all granted
DirectoryIndex index.html index.htm index.php
</Directory>
</VirtualHost>
uj5u.com熱心網友回復:
您本質上想要做的是洗掉對各種檔案夾的讀/寫/執行訪問權限。Apache 是決議您在上面撰寫的 php 代碼的應用程式,因此您應該從您配置 apache 以在 www-data 下運行的任何用戶名洗掉讀/寫/執行權限。這將阻止 apache 成功執行您上面的 php 代碼,因為它沒有訪問這些檔案/檔案夾的必要權限。
為了安全起見,您不應讓 apache 成為 /var/www 檔案夾中任何檔案的所有者。您應該為存盤在 www-data 檔案夾中的每個 Web 應用程式創建一個單獨的新用戶(沒有外殼),并將該新用戶指定為與該特定 Web 應用程式關聯的所有檔案和檔案夾的所有者。通過這種方式,如果 Apache 受到威脅,您的所有 Web 應用程式和相關檔案都不會同時受到威脅。
將 www-data 指定為 /var/www 中檔案和子檔案夾的組,以便 Apache 可以讀取和服務您的 Web 應用程式。
給檔案夾的www-data讀和執行權限,只給檔案的www-data讀權限。通過這種方式,如果 Apache 受到威脅,您的任何檔案都無法被 Apache 修改。
//web app 1, set owner and group, do not set www-data as owner !
sudo chown -R web-app-1:www-data /var/www/app1
//web app 1, set appropriate permissions for all sub-folders as detailed previously
sudo find /var/www/app1 -type d -exec chmod 750 {} \;
//web app 1, set appropriate permissions for all files in sub-folders as detailed previously
sudo find /var/www/html/app1 -type f -exec chmod 640 {} \;
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/396416.html
