Linux创建一个新用户,允许访问特定进程和特定工作目录

6mw9ycah  于 2023-04-29  发布在  Linux
关注(0)|答案(1)|浏览(103)

我正在尝试做一个Web C++编译器。现在我陷入了我网站的安全问题。I can run system(“whoami”);和其他恶意命令从我的网站上运行的服务器上。我正在寻找一种方法来避免这种情况。
1.网站将用户编写的代码发送到PHP后端服务器

  1. PHP服务器创建main。cpp文件并将代码写入。
  2. 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.用户在网站上注册
  3. PHP在系统(linux)中创建coder-1(coder-id)用户
  4. PHP创建/var/www/site/buildings/1目录。
    1.需要允许coder-1用户只访问/builds/1目录和**g++**进程来编译代码,代码将保存到该目录。
bqjvbblv

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组。
我希望这个工作。

相关问题