簡體   English   中英

由於權限問題,PHP Qmail管道的腳本無法正常工作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM