2009-10-20 61 views
1

我對Linux和PHP非常陌生,所以如果這是一個愚蠢的問題,請原諒我。命令行腳本創建用戶密碼

我需要創建一個PHP命令行腳本,將用戶添加到系統中,供ftp服務器使用。我已經建立在這一點上,它創建的帳戶就好了。我面臨的問題是,即使我在創建帳戶時通過密碼即。 -p $密碼,我仍然需要在帳戶上運行「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; 

只是爲了記錄在案,最後這個例子只是爲了說明。

任何幫助表示讚賞。

回答

4

你需要使用useradd的,例如使用哈希密碼

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

-p,--password PASSWORD 加密的密碼,如通過隱窩返回(3)。默認爲 以禁用該帳戶。

man useradd

+0

謝謝,這並獲得成功對我來說。我昨天讀到了這個「地下墓穴」,但我無法完成它的工作。 呵呵,無論如何,非常感謝你。 – Craigt 2009-10-20 09:43:13

0

不能保證它會工作,但在第一個想法,我的解決辦法是: -

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

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

fclose($fp); 
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...'); 
} 
+0

只是在沒有任何解釋的情況下發布一些代碼的答案通常不受歡迎。 – 2012-12-10 23:23:06