我需要在运行时更改PHP脚本的用户.我看过了posix_setuid
,但它看起来不安全,需要root权限.最好的方法是使用用户密码(类似posix_setuid($username, $password)
)更改脚本的用户ID ,并避免以root身份运行脚本.
我对其他方法持开放态度,脚本不一定需要是PHP.但是,它将从apache调用.
对场景的一个好的反应是cPanel如何在当前登录用户的文件管理器上.
我需要更改用户,因为我正在为多用户设置创建文件管理器.目前,我已经设置了文件管理器,以便apache以root身份为我的PHP文件管理器提供服务.但是,这是不合理的,因为如果代码中存在安全漏洞,一个用户可以编辑整个服务器上的文件.
我正在寻找一种方法将SU脚本登录到登录用户,以便在出现安全漏洞的情况下,用户只能使用自己的文件.
我不久前需要这样做.我基本上创建了一个bash脚本,它访问只有root有权访问的资源.这是我做的:
使用该visudo
命令更改您的/etc/sudoers
:
## Allow root to run any commands anywhere root ALL=(ALL) ALL apache ALL= NOPASSWD: /sbin/myscript.sh
我添加了允许apache
用户/sbin/myscript.sh
使用sudo命令运行而不输入密码的行.
之后,您可以将以下内容放在php文件中以获取输出:
$output = shell_exec("sudo /sbin/myscript.sh");