Apache-2.2

授予 apache ID 權限以作為作業系統使用者列出和 CRUD 文件

  • December 1, 2018

我不確定這個問題是屬於這裡還是屬於SO。如果需要,我可以把它移到那裡。

在任何像樣的 Apache 配置中,Apache 都會作為自己的 ID 執行;www-data例如。並且此 ID 將無權CRUD文件列為其他作業系統帳戶。這是出於安全設計。

我希望能夠以某種方式將 Apache 列表或 CRUD 文件作為另一個作業系統帳戶。例如,在帳戶的主目錄中列出文件或在帳戶的主目錄中創建新的文本文件。

我知道一種解決方案是使用文件/文件夾組權限,但我不能這樣做,因為我無法處理文件/文件夾所有權或權限。

我查看了suEXECsuPHPphp-fpm,但它們都不起作用,因為它們將以腳本所有者的身份執行腳本。就我而言,我正在執行類似cpmv作為任意數量的作業系統帳戶的命令。我可以使用這些工具的唯一方法是為每個作業系統帳戶設置一個腳本。或者擁有一個屬於root但聽起來不安全的腳本。

於是我開始思考sudo。我可以授予www-data sudo作業系統帳戶特權。

文件中的條目範例sudoers

www-data ALL = (osAccount1) NOPASSWD: /bin/ls, /bin/mv
www-data ALL = (osAccount2) NOPASSWD: /bin/ls, /bin/mv

但這只是冒著風險。我無法指出如何或為什麼——它只是感覺很難看。

有沒有做我想做的事?

我知道一種解決方案是使用文件/文件夾組權限,但我不能這樣做,因為我無法處理文件/文件夾所有權或權限。

傳統的使用者組其他文件權限chmod chown chgrp(該方法會因文件系統和版本而有所不同,但考慮使用 acl 支持和使用(重新)掛載文件系統,setfacl或者setrichacl 為現有的 UGO 權限設置額外的 ACL,這將授予您的網路伺服器所需的訪問權限。

https://en.wikipedia.org/wiki/Access_control_list

https://www.systutorials.com/docs/linux/man/7-richacl/

引用自:https://serverfault.com/questions/942402