權限:給 Apache 更多使用者權限的正確方法是什麼?
上下文:我正在製作一個瀏覽器內控制面板,讓我可以通過一個按鈕訪問我編寫的腳本庫(.sh 和 .php),以處理項目的各種數據。這是管理該項目數據的“一站式商店”。
我已經取得了很好的進展。我正在執行 apache、PHP 和 MySQL,並且我的前端位於http://localhost。目前很好!
現在我遇到的問題:我有一個執行良好的 index.php,除了預設的 apache 使用者(在我的機器上稱為“_www”)似乎沒有執行我的某些腳本的權限。
所以當我這樣做時:
<?php echo `ls`; echo `whoami`; echo `/Path/To/Custom/Script.sh`; ?>
我得到了 and 的輸出
ls
,whoami
但我沒有從自定義腳本中得到任何回報。如果我以我的身份執行自定義腳本(在互動式 shell 中),它當然可以工作。最後,我的問題是:配置它的正確方法是什麼。網路伺服器是否像我一樣執行?或者更改權限以便 _www 可以執行我的自定義腳本?
最好的辦法是將腳本放在標準位置(例如
/usr/local/bin
),Web 伺服器將有足夠的權限來執行它。如果這不是一個選項,您可以使用 更改腳本組
chgrp groupname path
,然後通過 使其對組可執行chmod g+x path
。如果_www
使用者尚未在該組中,請將其添加到組中usermod -aG groupname _www
。
要回答您的問題,最好授予 _www 組執行腳本的權限。
使用 ACL 擴展 *.sh 腳本的權限,以允許 _www 組中的使用者執行權限:
cd /Path/To/Custom setfacl -m g:_www:rx *.sh
還要檢查 /Path/To/Custom 的每個目錄組件並驗證 apache 是否有權訪問(即“查看”)/Path/To/Custom 中的腳本:
ls -ld /Path ls -ld /Path/To ls -ld /Path/To/Custom
除了apache 需要執行和讀取權限的最終組件(自定義)之外,上面的每個目錄組件都應授予 apache 最低執行權限。例如,如果上面的所有目錄組件都具有rx的**其他權限,則 apache 具有在自定義目錄中查找腳本所需的所有訪問權限。