gpt4 book ai didi

php - 从 PHP 中使用 sudo 运行 shell 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 04:08:23 25 4
gpt4 key购买 nike

我目前的 ubuntu 机器上有一个 PHP 文件,我想用它从 Web 界面在计算机上创建用户(安全 blablabla,它全部位于内部网络上,任何人都无法意外/故意对系统造成损害)我最初尝试使用此:

    shell_exec("sudo mkdir -m 755 ".escapeshellarg($directory));

shell_exec("sudo useradd -s /bin/false -d ".escapeshellarg($directory)." -p ".crypt($pass,$salt)." ".escapeshellarg($servername));

但显然这会暴露 mkdir 和 useradd 为无密码 sudo,所以我没有这样做,而是决定通过在/etc 中创建一个名为“newserver.sh”的 shell 脚本来减少复杂性,现在我有了这个;

#!/bin/bash
#Var 1 = Directory, Var 2 = Username Var 3 = Password
mkdir "$1"
chmod 755 "$1"
useradd -s /bin/false -d "$1" -p "$3" "$2"
chown "$2" "$1"

这似乎工作得更好一些,当我从终端运行它时,它工作得很好,但是当 PHP 使用它执行它时

shell_exec("sudo sh /etc/newserver.sh /home/testuser testuser testpass");

它似乎没有做任何事情(我什至使用与从终端运行它时相同的参数进行了测试。

仅供引用,我的 sudoers 文件中有这一行 www-data ALL=(root) NOPASSWD:/etc/newserver.sh

最佳答案

首先,密码必须加密,如下所示:

/etc/newserver.sh /home/testuser testuser "$6$VP9.GI9D$nVjpXIlgoTCLYICNW9ijPqg07opPrjTU2ilYULaT4rut8S9CAmWggMXuOhJ27C5ltwCRfzSxEVgSlReA2i/rH1"

我认为,你应该使用“-c”作为参数。

shell_exec("sudo sh -c \"/etc/newserver.sh /home/testuser testuser testpass\"");

关于php - 从 PHP 中使用 sudo 运行 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20219803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com