来自 PHP 脚本的 Useradd

来自 PHP 脚本的 Useradd

是否可以使用 PHP 脚本添加用户?

答案1

www-data假设 Apache 在用户下运行,执行visudo并添加以下行:

www-data ALL=NOPASSWD:/usr/sbin/useradd

现在从你的 PHP 脚本中:

$username = "user1";
$password = "password1";
$cmd = "sudo /usr/sbin/useradd -m -p `openssl passwd -1 $password` $username";
system($cmd);

最后,需要注意的是,在没有首先意识到这样做的安全隐患的情况下,不要在生产环境中进行此操作。

答案2

关于你的第二个问题(标题中的问题):要通过你的 Web 服务器运行的脚本创建用户,你必须向 Web 服务器授予 root 权限 - a非常危险事物。

因此,虽然这确实是可能的(有基于 Web 的系统管理应用程序,如网页管理工具) 它是一个馊主意使用一些自己编写的脚本来自己做这件事。

注意:我并不是说使用网页管理工具也是安全的:-)

答案3

您可以让 PHP 脚本创建一个包含用户信息的文件,而无需 root 访问权限。此信息应加密,以免裸露在那里。

然后,您可以编写一个具有 root 访问权限的 bash 脚本,该脚本监视 PHP 脚本将要创建新用户信息的目录。如果存在新文件,它将解密并创建新用户,然后在成功创建用户后删除该文件(因此在您完成后它不会停留在那里)。您希望它非常精确地说明您的 bash 脚本查找和接受的数据。此外,请确保清理用户表单中的所有字段,以最大限度地减少恶意代码注入的机会。

我没有使用过它,但是 inotify 看起来就是为此目的而设计的。 http://www.errr-online.com/index.php/2011/02/25/monitor-a-directory-or-file-for-changes-on-linux-using-inotify/

这样,就没有任何东西直接访问你的根区域,你可以限制 bash 脚本仅在满足特定条件时运行,例如当创建新文件、通过脚本创建的哈希校验、包含预期数据时...让我们知道进展如何,希望我们能得到更多关于最安全的方法的意见。

编辑:看起来您可能想要用于 inotify 的事件是 IN_CREATE,它将在监视的目录中创建文件时执行。浏览手册,我相信您会找到一种方法来做到这一点。 http://man7.org/linux/man-pages/man7/inotify.7.html

编辑:您也可以使用 PHP 脚本打开和编辑单个文件。您在这里肯定有选择,但我不能假装知道最好的方法是什么。

相关内容