我正在编写一个需要通过命令行运行perl脚本的脚本(使用shell_exec()
)。要设置脚本,我需要在我的头上生成一个GPG密钥,并将他们的公钥导入我的GPG密钥环。
当我以ROOT用户身份运行时,perl脚本运行正常,但是当通过PHP运行时,它会抛出此错误消息:
“尝试签署请求时发生错误”
我认为这意味着用户无法访问我在root用户中设置的GPG密钥PHP正在运行其shell命令(即apache)。
我该如何解决这个问题?
我不知道是否需要以apache身份登录并导入密钥,或者是否有以root身份运行的命令允许它们与apache用户共享...任何想法都会很棒:)
答案 0 :(得分:3)
您可以在 apache 用户下运行shell,如下所示:
su apache -s /bin/ksh
然后你可以初始化GPG。请注意 apache 的默认主目录是/ var / www,您可能需要:
chmod a+w /var/www
启用GPG以创建.gnupg子目录
答案 1 :(得分:2)
正确。显然,你不希望像“apache”这样的凡人用户能够以root身份签名!
因此,您需要为apache用户配置GPG。这通常很痛苦,因为apache用户通常无法获得shell。
我尝试设置/home/<apache-user>
目录,如果它不存在(可能没有)。然后尝试为apache用户设置GPG。您可以通过将--homedir=/home/<apache-user>
传递给gpg二进制文件来使其以root身份运行。