我要做的是从网页运行shell命令作为系统root
用户。
根据我的研究,没有办法在Linux上模拟PHP系统用户(准确地说是使用PHP 5.4.13的CentOS 6.3)。
到目前为止,我已经安装了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已经定义了nologin(?)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"
非常感谢您的帮助。
答案 0 :(得分:0)