我有这个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标志没有设置主目录?
你是如何进入了'sudo'密码吗?无论脚本运行在sudoers下的用户是什么?尝试使用'system()'而不是'exec()',以便获得系统响应。 – Anthony
www-data组在sudoers文件中不需要useradd的密码。用户创建它与它是否可以创建用户的有效性无关。我可以登录为用户,他只是没有主目录,当我做猫/ etc/passwd我看到'trotski94-1:x:1001:1001 ::/home/servers/trotski94-1:/ bin/false' –