2013-11-23 23 views
1

我有这个PHP代码PHP的adduser到Ubuntu没有设置正确的主目录?

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', TRUE); 
ini_set('display_startup_errors', TRUE); 



if(!empty($_GET) && !empty($_GET['user']) && !empty($_GET['mem']) && !empty($_GET['id']) &&!empty($_GET['k'])) { 
    $user = $_GET['user']; 
    $mem = $_GET['mem']; 
    $id = $_GET['id']; 
    $pass = $_GET['k']; 
    $name = $user."-".$id; 
    $directory = "/home/servers/".$name; 
    $salt = dechex(mt_rand(0, 2147483647)) . dechex(mt_rand(0, 2147483647)); 

    echo "User: ".$user; 
    echo "<br/>"; 
    echo "Memory: ".$mem; 
    echo "<br/>"; 
    echo "ID: ".$id; 
    echo "<br/>"; 
    echo "Pass: ".$pass; 
    echo "<br/>"; 
    echo "Directory: ".$directory; 
    echo "<br/>"; 
    echo "<br/>"; 
    echo "name: ".$name; 
    echo "<br/>"; 

    if (!file_exists($directory)) { 
     mkdir($directory, 0, true); 
    } 
    else { 
     echo "Dir already exists?"; 
    } 
    $outputuser = shell_exec("sudo useradd -s /bin/false -d ".escapeshellarg($directory)." -p ".crypt($pass,$salt)." ".escapeshellarg($servername)); 

} 


?> 

现在,当我运行该页面我得到这个输出

 
User: trotski94 
Memory: 1024 
ID: 1 
Pass: test 
Directory: /home/servers/trotski94-1 

name: trotski94-1 
Dir already exists? 

预计。但是当我在ubuntu机器上登录时,它说没有主目录,使用/作为主目录,为什么-d标志没有设置主目录?

+0

你是如何进入了'sudo'密码吗?无论脚本运行在sudoers下的用户是什么?尝试使用'system()'而不是'exec()',以便获得系统响应。 – Anthony

+0

www-data组在sudoers文件中不需要useradd的密码。用户创建它与它是否可以创建用户的有效性无关。我可以登录为用户,他只是没有主目录,当我做猫/ etc/passwd我看到'trotski94-1:x:1001:1001 ::/home/servers/trotski94-1:/ bin/false' –

回答

0

检查用户目录: cat/etc/passwd | grep的trotski94

mayby escapeshellarg可能破坏一些

+0

刚刚返回'trotski94-1:x:1001:1001 ::/home/servers/trotski94-1:/ bin/false'我看不到问题:S –

+0

用户是否有权限访问该目录? (必须有X访问权限) – ryrysz