用于创建用户passwd的命令行脚本

时间:2009-10-20 09:25:43

标签: php ubuntu scripting passwords

我是Linux和PHP的新手,请原谅我,如果这是一个愚蠢的问题。

我需要创建一个PHP命令行脚本,将用户添加到系统中,供ftp服务器使用。我已经设置了它创建帐户就好了。我面临的问题是,即使我在创建帐户时通过了密码,即。 -p $ password,我仍然需要在帐户上运行“passwd”命令,并在proftpd允许该帐户登录之前手动设置密码。

对于我的生活,我无法弄清楚如何从php中运行passwd命令。显然我可以运行它,但我不知道如何在提示时以编程方式输入密码。

更多信息,这是我在创建帐户时运行的命令。 $ username和$ password被传递到函数中。

shell_exec("useradd ".$username." -g ftpusers -m -p ".$password." -d
/home/ftp/".$username."/ -s /bin/false);

现在我想要添加以下内容:

shell_exec("passwd ".$username);
echo $password;
echo $password;

仅供记录,最后一个例子仅供参考。

任何帮助表示感谢。

3 个答案:

答案 0 :(得分:4)

您需要使用useradd使用哈希密码,例如

$password = escapeshellarg( crypt('password') );
shell_exec("useradd username -p $password");
  

-p, - 密码密码       加密密码,由crypt(3)返回。默认是   禁用该帐户。

man useradd

答案 1 :(得分:1)

不能保证它会起作用,但首先想到的是,我的解决方案是: -

<?php
$fp = popen("/usr/bin/passwd " . $user, "w");

fwrite($fp, $password . "\n");
fwrite($fp, $password . "\n");

fclose($fp);

答案 2 :(得分:0)

$connection = ssh2_connect('localhost', 22);
if (ssh2_auth_password($connection, 'root', '')) {
    $username = '';
    $password = '';
    ssh2_exec($connection, "useradd $username -m -p $password -d /home/$username/ -s /bin/false");
} else {
    die('Authentication Failed...');
}