我是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;
仅供记录,最后一个例子仅供参考。
任何帮助表示感谢。
答案 0 :(得分:4)
您需要使用useradd使用哈希密码,例如
$password = escapeshellarg( crypt('password') );
shell_exec("useradd username -p $password");
-p, - 密码密码 加密密码,由crypt(3)返回。默认是 禁用该帐户。
答案 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...');
}