Ale*_*lee -4 php root xampp apache2
好的,我需要以 root 身份运行我的 Apache Web 服务器。为此,我输入了 echo whoami; 在终端。它给了我输出:root。但是当我通过执行以下 php 脚本检查我的 apache 服务器是否以root用户身份运行时:
< ?php echo `whoami`; ?>
Run Code Online (Sandbox Code Playgroud)
它给了我输出:nobody. 那么有什么建议可以在apache中以root用户身份执行/登录吗?
小智 6
你问的是非常危险的,因为在 Apache 中发现的任何新漏洞都可以作为 root 被利用。网络管理员在保护他们的网络服务器时做的第一件事就是不要以 root 身份运行服务器应用程序。也就是说,我提供了以下替代方案,可以满足您所说的需求。
创建一个可以执行您想要的操作的 shell 脚本。这不是 PHP 脚本,因为 PHP 在 Web 服务器中运行,您需要一个由 Ubuntu 运行的脚本。这是一个示例:
#!/bin/sh
# script that runs as root
whoami
Run Code Online (Sandbox Code Playgroud)
我调用了这个文件/localstore/root.sh,你应该把它放在你的系统上有意义的地方(例如/home/www_data/bin)。
在终端窗口中,执行命令sudo vi /etc/sudoers并在文件末尾插入以下行(重要的是在结尾处,以免其他命令覆盖):
ALL ALL=NOPASSWD: /localstore/root.sh
Run Code Online (Sandbox Code Playgroud)
这将允许任何人以 root 身份运行脚本,一旦您测试并确认它可以工作,我强烈建议您(再次出于安全目的)将该行更改为
nobody ALL=NOPASSWD: /localstore/root.sh
Run Code Online (Sandbox Code Playgroud)
但正如 Bodhi 所观察到的,Apache 应该运行,www-data在这种情况下,您应该更改nobody为www-data. 注意:我从来没有尝试sudo过nobody作为用户使用,我不确定这会起作用。
在您的 Web 服务器脚本中,让 shell 脚本在 PHP 中运行,如下所示:
ALL ALL=NOPASSWD: /localstore/root.sh
Run Code Online (Sandbox Code Playgroud)
您可以将参数添加到引号内的脚本中。
这应该得到它,以便root.sh脚本在从您的 Web 服务器调用时以 root 身份执行。如果您有其他脚本,它们可以是sudoers文件中同一条目上的逗号分隔列表。确保脚本的权限允许 Web 服务器执行。
| 归档时间: |
|
| 查看次数: |
40323 次 |
| 最近记录: |