2011-05-08 1 views
3

런타임에 PHP 스크립트의 사용자를 변경해야합니다. 나는 posix_setuid을 보았지만 안전하지 않은 것으로 보이고 루트 privaledges가 필요합니다. 무엇보다 선호하는 것은 사용자 암호 (예 : posix_setuid($username, $password))를 사용하여 스크립트의 사용자 ID를 변경하고 스크립트를 루트로 실행하지 않는 것입니다.사용자 변경 PHP

다른 방법을 사용할 수 있으며 스크립트가 반드시 PHP 일 필요는 없습니다. 그러나, 그것은 아파치에서 호출 될 것입니다.

시나리오에 대한 좋은 해설은 cPanel이 현재 파일 관리자에 로그인 한 사용자에게 미치는 영향입니다.

다중 사용자 설정을 위해 파일 관리자를 만들기 때문에 사용자를 변경해야합니다. 현재 아파치가 내 PHP 파일 관리자를 루트로 사용하도록 파일 관리자를 설정했습니다. 그러나 코드의 보안 버그의 경우 한 사용자가 전체 서버의 파일을 편집 할 수 있기 때문에 이는 합리적이지 않습니다.

내가 보안 결함의 경우 사용자가 자신의 파일에만 제한되어 있으므로 로그인 한 사용자에게 SU에 대한 방법을 찾고 있습니다. suexec를

    • PHP + FastCGI를 내가 얼마 전에이 작업을 수행하는 데 필요한
  • +2

    왜 런타임에 사용자를 변경해야합니까 :

    는 그 후, 당신은 단지 출력을 얻기 위해 당신의 PHP 파일에 다음을 넣을 수 있습니다? 어쩌면 문제가 다른 방법으로 해결 될 수 있을까요? – Crozin

    +0

    나는 다른 방법으로 문제를 해결하고 있습니다. 당신이 대안이 있다고 생각한다면 자유롭게 가서 게시하십시오. – xaav

    +0

    대안을 제안하는 것은 사용자를 변경해야한다고 생각하는 것에 달렸지 만 질문에이 점을 설명하지 않은 것입니다. –

    답변

    6

    suPHP :

    +0

    가능한 해결책으로 들립니다. 이 점을 더 자세히 조사하고 원하는 결과가 나오면 올바른 대답으로 표시하겠습니다. – xaav

    +0

    참고 사항 CentOS 5.5를 제 서버에서 사용하고 있습니다. 정상적으로 작동합니다. – DarthJDG

    +0

    그래, 좋아 보인다. 나는 그것을 정답으로 표시하고있다. – xaav

    1

    This recent question는 PHP와 함께이 작업을 수행하는 두 가지 옵션에 대해 설명합니다. 기본적으로 root 만 액세스 할 수있는 자원에 액세스하는 bash 스크립트를 작성했습니다. 여기에 내가했던 일이야 :

    는 변경할 수 visudo 명령을 사용하여 /etc/sudoers : 내가 암호를 입력하지 않고 sudo는 명령을 /sbin/myscript.sh을 실행할 수있는 apache 사용자를 허용하는 선을 추가 한

    ## Allow root to run any commands anywhere 
    root ALL=(ALL)  ALL 
    apache ALL= NOPASSWD: /sbin/myscript.sh 
    

    .

    $output = shell_exec("sudo /sbin/myscript.sh"); 
    
    +0

    이 대답의 문제점은 로그인 한 사용자에 따라 사용자를 변경해야한다는 것입니다. 이렇게하면 한 명의 사용자에게만 하드 코딩됩니다. – xaav

    +0

    ** 사용자로 **를 실행하는 것은 시스템에서 전체 프로세스의 권한을 나타냅니다. 인증 된 각 사용자에 대해 다른 권한을 가진 PHP 응용 프로그램에서 일부 비즈니스 기능을 구현하려면 실행중인 프로세스의 권한을 변경할 필요가 없습니다. 요구 사항 (원래 질문)을 달성하려는 대상에 대해 더 명확하게 할 수 있다면 (예 : "내 응용 프로그램에서 사용자가 속한 위젯 만 관리 할 수있게하려는 경우") 우리가 도움이 될 수 있습니다. . –