我有一个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脚本,以及其他没有的C程序不包含与gpg相关的任何内容。
我希望快速回复!我需要使用很多这个encrypt_file!
答案 0 :(得分:0)
检查/ var / log / httpd / error_log中的error_log我看到了这一行:
gpg: Fatal: can't create directory `/var/www/.gnupg': Permission denied
然后我在这个网站找到了一个解决方案 - &gt; http://gnupg.10057.n7.nabble.com/Exi...pt-td7342.html
我添加了--homedir选项和我在gache命令的apache的error.log中找到的PATH,它完美地运行了!
感谢大家!