在不同的用户下运行postfix pipe命令而不是nobody

我目前正在设置电子邮件pipe道到一个PHP脚本的目录不能被别人访问(它被设置为750)。 Postfix在用户'nobody'下运行pipe道命令,这些用户自然不能访问脚本。 我对添加执行权限到该文件夹​​有点犹豫,因为我不希望其他用户能够访问它(即使他们不知道path)。 所以,我想要的是让pipe道命令在不同的用户下运行,并有权访问该文件夹。

我想要这样做的服务器已安装Virtualmin。 我用Virtualmin设置了所有东西,包括提供给PHP脚本的别名。 Virtualmin论坛上有关于这个问题的几个线程,但是除了让其他人可以执行文件夹以外,还没有解决scheme。

那么,如何让pipe道命令在不同的用户下运行,而不是任何人?

如文档所述pipe(8)可以像你告诉它的任何用户那样执行 – 除了root用户。
只有这样,才能像nobody执行。

 yourscript unix - - n - - pipe user=<uid> argv=<yourexecutable> 

user=任何现有的unix用户,并在这些凭证下运行pipe(8)实例。

这是因为Postfix为pipe道运行的用户默认为nobody。

该行更改pipe道运行的用户,您应该知道在Postfix文档中警告:不要指定特权用户或后缀所有者

只需通过服务器上的特权用户了解pipe道电子邮件的安全隐患。

这只是在几天前在StackOverflow上提出的,略有不同的措辞,但问题是一样的,解决scheme是一样的:

https://stackoverflow.com/questions/28923771/virtualmin-feed-to-program-cant-open-file/28934181

简而言之,解决方法是以您需要pipe理的用户身份loginUsermin,然后在其中创buildpipe道。 Virtualmin设置用户作为用户从Postfix进行pipe理时运行,而不是在Virtualmin的上下文中运行,只有在Usermin下创build它们时才能运行。

您也可以在相关用户的.procmailrc中手动创buildpipe道。