0

谁能帮我做这个简单的事情?我有一个 php 注册表单,它直接与 MySQL 数据库通信,并在有人填写表单时添加用户。当我还想为进行此注册的每个用户(使用 bash 脚本)创建一个主目录时,问题就开始了。

我做了什么:我创建了一个 bash 脚本

#!/bin/bash

sudo useradd -m /home/$1

到目前为止,我对这个简单脚本所做的任何参数都无法用于创建用户的主目录。

4

1 回答 1

1

问题:

  1. 显式主目录:您的命令行语法错误。请尝试以下操作:

    sudo useradd -m username

    或者

    sudo useradd -d /home/username -m username

  2. PHP是一个sudoer吗?只有某些帐户能够执行 sudo。检查运行 PHP 的帐户是否列在 sudoers 文件中。您通常可以轻松地使用

    visudo

  3. 是 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 权限。

其他资源

通过查看以下内容,您可以了解其他人是如何解决此问题的:

  1. http://www.weberdev.com/get_example.php3?ExampleID=3766
  2. http://www.linuxforums.org/forum/programming-scripting/176031-solved-crafting-php-script-create-unix-user.html
于 2012-12-16T09:45:32.353 回答