[英]PHP Qmail piping to script not working due to permissions?
我已經設置了Qmail,可以通過管道傳遞到特定電子郵件地址的腳本,該腳本可以正常工作; 但是,腳本的一部分會創建一個無法正常工作的文件。
嘗試寫入的文件夾上的組是具有寫入權限的apache
(775)。 我已將popuser
添加到apache組中,並通過id popuser
確認。 根據以下信息,這可能是不必要的。 (我嘗試過將主要/有效組和次要組都設為apache)
我在PHP腳本中使用了get_current_uid()
, getmyuid()
, getmygid()
, exec("whoami")
:
get_current_uid() = [file/folder OWNER] (we'll call him Bob, he is a user not a group)
getmyuid() = Bob
getmygid() = Bob
exec("whoami") = [blank]
如果將要寫入的目錄設置為777,則一切正常-暗示權限是原因。 在這種情況下,文件是擁有的,並且具有popuser
組(這不是上面的uid / gid位的結果)。 至少對我而言,這意味着當前用戶實際上是popuser
而不是Bob
。
結果,我可以將chmod設置為0644,但是不能chown / chgrp(我需要apache成為該組,因為其他地方的另一個UI允許管理文件)。
為了不必使目錄可全局寫入,我使用了chmod('/path/to/dir', 0777);
在創建文件之前輸入chmod('/path/to/dir', 0775);
之后,但是顯然它也以popuser
身份運行,因為它失敗了。
簡而言之,我需要做的是在Bob
/ apache
(所有者/組)具有使用qmail的寫權限的目錄中創建一個文件,該文件說它以Bob
運行,但實際上以popuser
運行。
希望這是有道理的。
我不確定我是否會完全遵循您的意思。 但是,可以將傳入的郵件通過qmail傳遞到在任何用戶目錄中運行的腳本,並使用該腳本創建文件。
如果您尚未這樣做,請在/ var / qmail / control / rcphosts中添加一行,以告訴qmail它應充當您域的MX。
在/ var / qmail / control / virtualdomains中,添加如下一行以告知qmail該域的哪個用戶帳戶將郵件路由到該域:domain.tld:username
在用戶目錄中創建一個.qmail-default文件,其中包含指向要將郵件路由到的腳本的管道: /路徑/到/腳本
重新啟動qmail。
您需要為腳本上的所有文件授予執行權限。 然后,當收到傳入的電子郵件觸發時,腳本應該能夠創建新文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.