我想做的是以系统 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"
非常感谢您的帮助。
最佳答案
关于php模拟用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15543769/