Permissions

權限:給 Apache 更多使用者權限的正確方法是什麼?

  • January 27, 2019

上下文:我正在製作一個瀏覽器內控制面板,讓我可以通過一個按鈕訪問我編寫的腳本庫(.sh 和 .php),以處理項目的各種數據。這是管理該項目數據的“一站式商店”。

我已經取得了很好的進展。我正在執行 apache、PHP 和 MySQL,並且我的前端位於http://localhost。目前很好!

現在我遇到的問題:我有一個執行良好的 index.php,除了預設的 apache 使用者(在我的機器上稱為“_www”)似乎沒有執行我的某些腳本的權限。

所以當我這樣做時:

<?php
   echo `ls`;
   echo `whoami`;
   echo `/Path/To/Custom/Script.sh`;
?>

我得到了 and 的輸出lswhoami但我沒有從自定義腳本中得到任何回報。如果我以我的身份執行自定義腳本(在互動式 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 具有在自定義目錄中查找腳本所需的所有訪問權限。

引用自:https://unix.stackexchange.com/questions/9241