我正在尝试做一个Web C++编译器。现在我陷入了我网站的安全问题。I can run system(“whoami”);和其他恶意命令从我的网站上运行的服务器上。我正在寻找一种方法来避免这种情况。
1.网站将用户编写的代码发送到PHP后端服务器
- PHP服务器创建main。cpp文件并将代码写入。
- PHP运行shell_exec编译main。cpp into .exe:
sudo g++ main.cpp -o compiled.exe
它是通过修改sudoers文件来实现的,方法是添加:www-data ALL=(ALL) NOPASSWD: ALL
是的,它只适用于sudo命令,因为PHP用户没有访问g的权限?
如果我不使用sudo运行命令,我会得到这个错误:
g:致命错误:无法执行“cc 1 plus”:execvp:没有这样的文件或目录编译终止。
我试着用shell_exec("whoami");
检查它,ir返回给我www-data。如何允许www-data在没有sudo的情况下访问g进程?
如果不使用sudo命令就可以解决这个问题了。下一个问题,我可以用C编写代码,打印服务器的所有目录/文件。我想我需要创建一个新用户,并允许访问该用户的特定主目录,并允许只运行g++?我读到它可以用chroot完成,但我对服务器和配置是绿色的。
我在网上找到了如何允许特定用户只访问X文件夹的信息,但没有找到如何允许使用g++也。感谢您的帮助,并为我的英语不好而道歉:)
理念:
1.用户在网站上注册 - PHP在系统(linux)中创建coder-1(coder-id)用户
- PHP创建/var/www/site/buildings/1目录。
1.需要允许coder-1用户只访问/builds/1目录和**g++**进程来编译代码,代码将保存到该目录。
1条答案
按热度按时间bqjvbblv1#
以下是我的建议
1.创建一个名为gcc_compile的新组(无论您想要什么名称)
2.检查g++路径
which g++
输出:
/usr/bin/g++
3.检查权限:
ls -ld /usr/bin/g++
输出:
-rwxr-xr-x 4 root root 772704 Sep 30 2020 /usr/bin/g++
1.添加gcc_compile
chown root:gcc_compile /usr/bin/g++
的权限1.向路径
chown php:gcc_compile /var/www/site/builds/1
添加权限1.将PHP用户添加到gcc_compile组。
我希望这个工作。