![后缀管道到脚本:execvp 权限被拒绝错误](https://linux22.com/image/606299/%E5%90%8E%E7%BC%80%E7%AE%A1%E9%81%93%E5%88%B0%E8%84%9A%E6%9C%AC%EF%BC%9Aexecvp%20%E6%9D%83%E9%99%90%E8%A2%AB%E6%8B%92%E7%BB%9D%E9%94%99%E8%AF%AF.png)
我是 Postfix 新手,正在尝试将消息通过管道传送到特定电子邮件地址到 bash 脚本。我正在运行 CentOS 6,以防万一。
我的脚本具有 777 权限(用于测试),当我向测试帐户发送电子邮件时,我看到 postfix 尝试运行该脚本。这是来自邮件日志的相关行:
2 月 16 日 15:08:40 lserver2 postfix/local[19675]: F4045103000: to=、orig_to=、relay=local、delay=1737、delays=1737/0.01/0/0.01、dsn=4.3.0、status=deferred(暂时失败。命令输出:local: fatal: execvp /data/scripts/testscript: 权限被拒绝)*
这看起来像是权限问题。当我尝试以“postfix”或“nobody”的身份运行我的脚本时,我收到错误:此帐户目前不可用。
我不知道接下来该怎么做……我读了几篇帖子,但都没有明确说明下一步该怎么做。(我不想将所有邮件重定向到脚本,而且对于如此简单的事情来说,一个答案看起来太复杂了)
答案1
foo
例如,如果您的脚本归 拥有,请尝试以下操作:
- 创建
/home/foo/.aliases
并移动管道从 到 它 的 线/etc/aliases
。 - 跑步
postalias /home/foo/.aliases
。 - 添加
/home/foo/.aliases
到alias_maps
。/etc/postfix/main.cf
- 重新启动 postfix。
/home/foo/.aliases
请注意,和的所有者/home/foo/.aliases.db
必须是foo
。
看http://www.postfix.org/ADDRESS_REWRITING_README.html#aliases。 它说:
出于安全原因,向命令和文件目的地的传送都是以别名数据库所有者的权限进行的。
答案2
參閱这个答案在 SO 中,有 2 个选项,一个是 Tsutomu 分享的。
另外一个将会default_privs = <owner of the executing script>
开始main.cf
。
它帮助解决了我的权限被拒绝的问题。