은 내가 페이지를 실행할 때 내가 예상되는이 출력우분투의 PHP adduser가 올바른 홈 디렉토리를 설정하지 않았습니까?
User: trotski94 Memory: 1024 ID: 1 Pass: test Directory: /home/servers/trotski94-1 name: trotski94-1 Dir already exists?
을 얻을 지금이 PHP 코드
<?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));
}
?>
있습니다. 하지만 우분투 컴퓨터에 로그인 할 때/home 대신/home을 사용하는 홈 디렉토리가 없다고 말하면 -d 플래그가 홈 디렉토리를 설정하지 않는 이유는 무엇입니까?
어떻게 sudo에 대한 암호를 입력하고 있습니까? 그리고 sudoers에서 스크립트가 실행되는 사용자는 무엇입니까? 시스템 응답을 얻을 수 있도록'exec()'대신'system()'을 시도하십시오. – Anthony
www-data 그룹에는 sudoers 파일의 useradd에 대한 암호가 필요하지 않습니다. 사용자가 만들어 지는지 여부는 사용자를 만들지 여부와 관계가 없습니다. 내가/etc/passwd cat/etc/passwd 할 때 홈 디렉토리가 없다고 말한 사용자로 로그인 할 수있다 :'trotski94-1 : x : 1001 : 1001 ::/home/servers/trotski94-1 :/bin/false' –