2011-11-07 3 views
7

같은 기능의 로그인은 suPHP의 파일 권한을 사용하도록 어떻게 설계 될 수 있습니까? 예를 들어 www.example.com에 웹 사이트가 있고 각각 자신의 홈 디렉토리가있는 다음 두 명의 사용자가 각각 test.phpvalidateUser.php 스크립트 (root, www-data, apache ...)에 속한 스크립트를 /home 디렉토리suPHP와 함께 로그인 구현

 
/home/ 
├── validateUser.php 
├── user1 
│   └── test.php 
└── user2 
    └── test.php 

user1 그 반대의 경우도 마찬가지 www.example.com/user2/test.php를 방문하여 user2's 스크립트에 액세스 할 수 있습니다. 내가 원하는 것은 mod_rewrite과 같은 것을 사용하여 들어오는 모든 요청을 validateUser.php에 전달하는 것입니다. 그러나 이렇게하면 대상 test.php 스크립트가 아닌 validateUser.php의 소유자로 모든 스크립트를 실행해야합니다.

suPHP가 시작되기 전에 php 스크립트를 호출 한 다음 suPHP가 계속 진행되도록 허용하거나 완전히 중단합니다.


편집이 내가 참을 수 있어요 두 번째 현상금입니다. 처음 나는 Gustav b/c에게 그가 좋은 것을 주었다. partial answer. 나는 지금까지 시도한 것을 언급 할 것이고, 왜 그들 중 누구도 나를 위해 일하지 않을 것이다.

1) mod_rewrite을 사용하여 URL을 validateUser.php으로 리디렉션하여 사용자를 로그인하거나 전화를 걸 스크립트를 호출하려고 시도했습니다. 문제는 내가 가상 호스트를 각 사용자가 자신의 가상 사이트 (예 : www.user1.example.com, www.user2.example.com ... 잘못된 디자인 접근 방식 인 경우이를 불합리하게 지적 함)를 설정했기 때문입니다. OS가 위와 같이 파일 구조를 볼 수 있지만 따라서, 온라인, 루트 디렉토리는 같은

VirtualHost = www.user1.example.com 
├── validateUser.php 
└── test.php 
VirtualHost = www.user2.example.com 
├── validateUser.php 
└── test.php 

로 당연히 난 그냥 모든 사용자의 디렉토리에 validateUser.php의 사본을 이동 설정되어 있습니다. 문제는 이제 사용자가 파일을 삭제하고 원하는 파일을 넣을 수 있습니다 (전혀 로그인하지 않아도 됨). 이 문제를 해결할 수있는 방법은 홈 폴더를 끈적 거리게 만드는 것입니다. 홈 폴더에 넣는 것이 좋습니다. 루트가 validateUser.php을 소유하게하십시오. 그러나 이제는 suPHP이므로 AS 루트로 실행됩니다. 그것이 내가 포기한 곳입니다.

2) Gustav의 mod_auth 제안을 사용할 수 있지만 이전 학교 웹 사이트처럼 비밀번호를 요구하는 것이 맘에 들지 않습니다.

3) 가상 호스트간에 리디렉션 할 수 있다면 1)에 대한 변형을 고려했습니다. 예를 들어,

VirtualHost = www.user1.example.com 
└── test.php 
VirtualHost = www.user2.example.com 
└── test.php 
VirtualHost = www.admin.example.com 
└── validateUser.php 

그런 다음 www.admin.example.com/validateUser.php에 사용자의 모든 트래픽을 리디렉션 mod_rewrite를 사용하므로 같은 가상 호스트를 재구성하고, 사용자는 (로그인이 성공하면 나) 사용자가 다시 리디렉션에 기록되어있는 경우 처음에 로그인을 시도한 사이트입니다. 이것의 이점은 심지어 가능하다면 사용자가 자신의 가상 호스트로 돌아갈 때까지 suPHP가 실행되지 않는다는 것입니다.

+0

나는 내 질문에 아무런 해결책이 없다고 확신한다. http://stackoverflow.com/a/9561335/654789 – puk

답변

2

mod_auth을 사용하여 사용자 인증을 구현하는 것이 고려 되었습니까? 시도해보기로 결정한 경우 유용하다고 생각되는 guide이 있습니다.

Apache 22 당량 : 브라우저가 자격 증명을 저장하고 모든 당신이 만드는 요청과 헤더를 보내는

참고.

+0

나는 이것이 내가 무엇을 찾고 있는지 확실하지 않다. "호환성 : 2.1 이전 버전에서만 사용 가능" – puk

+0

[mod_auth_basic] (http://httpd.apache.org/docs/2.2/mod/mod_auth_basic.html)과 같이 약간 더 구체적인 모듈로 대체 되었기 때문에 가능합니다. 그것이 당신이 찾고있는 것이 아니라면 걱정이되지 않습니다. 그냥 도움이 될 것이라고 생각했습니다. –

+0

다른 모양을 갖도록하겠습니다. – puk