php模拟用户

标签 php linux shell-exec

我想做的是以系统 root 用户身份从网页运行 shell 命令。

根据我的研究,无法在 Linux 上的 PHP 中模拟系统用户(确切地说是 CentOS 6.3 和 PHP 5.4.13)。

到目前为止,我已经安装了 sudo 并添加了一行 apache ALL=(ALL) :NOPASSWD ALL (用于测试)到 /etc/sudoers。然后我在我网站的根目录中创建了一个简单的 php 文件:

<?php shell_exec('sudo -u root touch somefile'); ?>

但是,如果我运行,什么也不会发生:

<?php shell_exec('whoami'); ?>

我得到 apache 作为结果,所以我知道至少 shell_exec 正在工作。

如果我从 cli su apache 尝试,我得到 This account is currently not available. 我相信这是因为 apache 没有定义登录(?) apache:x:48:48:Apache:/var/www:/sbin/nologin

那么以 root 身份从 php 运行命令的正确方法是什么?

作为我试图通过以 root 身份运行来实现的示例,我想使用以下从 Web 控件调用的命令行将证书添加到 /etc/ssl/certs/https面板:

openssl req -new -nodes -x509 -days 3650 \
 -subj "/emailAddress=${ssl_email}/CN=ca.${domain_name}/OU=${ssl_organisational_unit}/O=${ssl_organisation}/L=${ssl_location}/ST=${ssl_state}/C=${ssl_country}" \
 -keyout "${certroot}/cacert.pem" -out "${certroot}/cacert.pem"

非常感谢您的帮助。

最佳答案

啊哈!!!知道了!

在我写完之后不久,我找到了sudo in php exec()

答案是从 /etc/sudoers 中注释掉 Defaults requiretty

关于php模拟用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15543769/

相关文章:

php - 在 Debian 中将 PHP 脚本作为守护进程运行

php - 如何在 php shell_exec 中运行多个 ffmpeg 任务

javascript - 如何将原始文本结构(如空格或行位置)维护到数据库中并将其显示回来?

javascript - 如何在 PHP 联系表单中附加选择列表

PHP:具有全局命名空间的单个文件中的命名空间

php - 何时查询 Mongodb 的副本集

php - shell_exec 不执行浏览器请求

javascript - 未捕获的类型错误 : Cannot read property 'textContent' of undefined

linux - 如何通过 `/dev` 列出的总线号和设备号找到 `lsusb` 中的设备文件?

python - Raspberry pi Jasper 语音识别无法正常工作