2013-11-23 1 views
1

은 내가 페이지를 실행할 때 내가 예상되는이 출력우분투의 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 플래그가 홈 디렉토리를 설정하지 않는 이유는 무엇입니까?

+0

어떻게 sudo에 대한 암호를 입력하고 있습니까? 그리고 sudoers에서 스크립트가 실행되는 사용자는 무엇입니까? 시스템 응답을 얻을 수 있도록'exec()'대신'system()'을 시도하십시오. – Anthony

+0

www-data 그룹에는 sudoers 파일의 useradd에 대한 암호가 필요하지 않습니다. 사용자가 만들어 지는지 여부는 사용자를 만들지 여부와 관계가 없습니다. 내가/etc/passwd cat/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

관련 문제