我已将 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
.
希望这是有道理的。