3

我正在开发一个需要通过命令行(使用shell_exec())运行 perl 脚本的脚本。要设置脚本,我需要在我的一端生成一个 GPG 密钥,并将他们的公钥导入我的 GPG 密钥环。

当我以 ROOT 用户身份运行 perl 脚本时,它可以正常工作,但是当通过 PHP 运行时,它会抛出以下错误消息:

“尝试签署请求时发生错误”

我假设这意味着我在 root 用户中设置的 GPG 密钥对于 PHP 正在运行其 shell 命令的用户(即 apache)是不可访问的。

我应该如何解决这个问题?

我不知道我是否需要以 apache 身份登录并导入密钥,或者是否有命令以 root 身份运行以允许将它们共享给 apache 用户......任何想法都会很棒:)

4

2 回答 2

3

您可以像这样在apache用户下运行 shell :

su apache -s /bin/ksh

然后你可以初始化 GPG。注意apache的默认主目录是 /var/www,您可能必须:

chmod a+w /var/www

使 GPG 能够创建 .gnupg 子目录

于 2015-04-07T22:27:44.617 回答
2

正确的。显然,您不希望像“apache”这样的普通用户能够以 root 身份签名!

因此,您需要为 apache 用户配置 GPG。这通常很痛苦,因为 apache 用户通常无法获得 shell。

/home/<apache-user>如果目录不存在(可能不存在),我会尝试设置目录。然后尝试为 apache 用户设置 GPG。您可能可以通过传递--homedir=/home/<apache-user>给 gpg 二进制文件来使其以 root 身份工作。

于 2010-08-26T02:21:13.630 回答