代码之家  ›  专栏  ›  技术社区  ›  Craigt

创建用户密码的命令行脚本

  •  1
  • Craigt  · 技术社区  · 15 年前

    我对Linux和PHP非常陌生,所以如果这是一个愚蠢的问题,请原谅我。

    我需要创建一个PHP命令行脚本,该脚本将向系统添加一个用户,供FTP服务器使用。我把它设置在这一点上,它创建的帐户刚刚好。我面临的问题是,即使我在创建帐户ie.-p$password时通过密码,在proftpd允许该帐户登录之前,我仍然必须对该帐户运行“passwd”命令并手动设置密码。

    对于我的生活,我不知道如何在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 回复  |  直到 11 年前
        1
  •  4
  •   Tom Haigh    15 年前

    您需要使用用户添加来使用散列密码,例如

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

    -P,--密码密码 由crypt(3)返回的加密密码。默认值为 禁用帐户。

    ( man useradd )

        2
  •  1
  •   Mez    15 年前

    我不能保证它会奏效,但首先我想,我的解决办法是:

    <?php
    $fp = popen("/usr/bin/passwd " . $user, "w");
    
    fwrite($fp, $password . "\n");
    fwrite($fp, $password . "\n");
    
    fclose($fp);
    
        3
  •  0
  •   Praveen Kumar Purushothaman    12 年前
    $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...');
    }