1

我有一个 C 程序可以进行系统调用(centOS 6.0)来加密文件,我的代码是:

#include <stdlib.h>
int main () {
 system ("gpg -c --batch --passphrase mypass file.txt");
 return 0;
}

可执行对象称为 encrypt_file 当我直接通过 CLI 运行 ./encrypt_file 它运行完美时,我获得了我的 file.txt.gpg,但是当我尝试通过浏览器执行它时,我没有得到任何响应。php中的代码:

shell_exec("./encrypt_file");

我选择制作 ac 程序的原因是我需要密码在代码中但不可见,当我删除包含密码的 .c 文件时,我只剩下我的 .exe 并且没有可见的密码。

我已经通过发出以下命令更改了对 apache 用户的权限:

chown apache.apache /var/www/html/

并在 /etc/sudoers 中添加了下一行:

apache   ALL=(ALL)    NOPASSWD:ALL

注意:我唯一有问题的命令是 gpg,我可以使用我需要使用的任何其他命令进行系统调用,我什至可以运行 python 脚本和其他不包含与 gpg 相关的任何内容的 C 程序。

我希望一个快速的答复!我需要大量使用这个 encrypt_file!

4

1 回答 1

0

检查 /var/log/httpd/error_log 中的 error_log 我看到了这一行:

gpg: Fatal: can't create directory `/var/www/.gnupg': Permission denied

然后我在这个站点找到了一个解决方案-> http://gnupg.10057.n7.nabble.com/Exi...pt-td7342.html

我将 --homedir 选项与我在 apache 的 error.log 中找到的 PATH 添加到 gpg 命令中,它运行良好!

谢谢大家!

于 2013-07-08T18:02:45.077 回答