谁能帮我做这个简单的事情?我有一个 php 注册表单,它直接与 MySQL 数据库通信,并在有人填写表单时添加用户。当我还想为进行此注册的每个用户(使用 bash 脚本)创建一个主目录时,问题就开始了。
我做了什么:我创建了一个 bash 脚本
#!/bin/bash
sudo useradd -m /home/$1
到目前为止,我对这个简单脚本所做的任何参数都无法用于创建用户的主目录。
问题:
显式主目录:您的命令行语法错误。请尝试以下操作:
sudo useradd -m username
或者
sudo useradd -d /home/username -m username
PHP是一个sudoer吗?只有某些帐户能够执行 sudo。检查运行 PHP 的帐户是否列在 sudoers 文件中。您通常可以轻松地使用
visudo
是 PHP版的chroot
吗?如果是这样,您可能无法使用任何合理的代码从脚本创建新的 linux 用户帐户。
工作测试
以下在 Debian 下对我有用(没有 sudo)。
新用户.sh
#!/bin/bash
useradd -d /home/$1 -m $1
新用户.php
<?php
exec('/bin/bash /var/www-scripts/newuser.sh joe');
?>
测试调用: php newuser.php
如果您可以执行相同的测试(但根据需要添加 sudo),那么当您的 Web 服务器调用它时它不起作用的唯一原因是安全问题。那可能是 chroot 环境,也可能是缺少 sudoer 权限。
其他资源
通过查看以下内容,您可以了解其他人是如何解决此问题的: