
我在 Linux 共享主機上有一個網頁應用程式。假設我有一個.htpasswd
文件和一些儲存資料庫密碼的配置,並且通常不希望人們窺探我的原始碼以查找漏洞。
網路伺服器(apache)需要對上述檔案進行讀取存取(在某些情況下還需要寫入)。但是我不希望同一共享主機上的其他人具有存取權限。
我一直不太明白這是如何運作的。問題這裡類似,但似乎更多地指出阻止網路應用程式意外託管密碼檔案。
AFAIK,我要做的就是基本的 Linux 權限。在一台伺服器上,我需要為 apache 授予「其他」權限。然後刪除所有其他使用者所在的群組權限,拒絕他們的存取。這看起來很迂迴。在另一台伺服器上,設定了一個nobody
僅public_html
設定群組權限的群組。
一個問題是,如果 apache 使用者可以存取我的文件,則可以編寫並執行一個簡單的腳本來獲得另一個使用者的存取權限:
<?php
header("Content-Type: text/plain");
include $_GET['f'];
?>
TLDR:我需要 apache 才能存取原始檔案和密碼,但不能存取同一台電腦上的其他使用者(ofc 管理員除外)。
什麼是常見設定?
相關問題:
答案1
建立一個群組,將 apache/www-data 加入到群組中。然後:
chown -R apache:組名 /var/www/mywebapp/ && \ chmod -R 640 /var/www/mywebapp
這將授予擁有者對該資料夾以及所有子目錄和檔案的讀取和寫入 (6) 權限以及群組讀取 (4) 權限。 apache 使用者將能夠存取這些文件,所有者也將能夠存取這些文件,但其他人將無法存取這些文件。您應該確保他們無法使用 apache 使用者。
使用虛擬主機配置中的目錄區塊來限制資料夾層級的存取。 http://httpd.apache.org/docs/2.0/misc/security_tips.html#請參閱保護伺服器文件 http://www.anchor.com.au/hosting/dedicated/Security_Hardening_of_an_Apache_Virtual_Host