2012-01-13 3 views
0

을 생산하는 영리한 솔루션을 필요로하는 것은 내가해야 할 일이다 - 중 하나을 : 동적으로 htaccess로 파일을 여기에

  1. 는 서버 B에있는 내 htaccess로 파일에 외부 파일을 포함 시키거나
(I 및 httpd.conf 아파치 지침을 내 제한된 경험 주어진이 시간에 꿈을 꿀 수없는) PHP를 사용하여 서버 A에 htaccess로 파일을 구문 분석, 또는
  • 도 더 똑똑한 솔루션

    배경

    I는 서버 A에 htaccess로 파일 내가 (0666)-RW-RW를 -rw 특정 달성하기 위해이 동적으로 서버 B에 하루 종일 이벤트를 기반으로 구축하기 위해 권한을 설정해야 서버 A에 대한 내 앱의 목표. 나는 호스팅 제공 업체가 매일 밤 자신의 서버 (서버 A)를 스윕하고 세계 기록 가능한 파일을 제거하고 자신의 권한을 0664로 변경한다는 사실을 알게되었습니다. Kudo는 서버를 안전하게 보호합니다. [나의 .htaccess 파일의 세계를 쓰기 가능하게 만들고 싶다는 코멘트가 없다.] 나는 그 의미를 진실로 이해한다.

    Shibboleth 인증을 제공하기 위해 서버 A의 .htacess 파일이 존재한다. 동적 인 아파치 지시문의 유일한 측면은 Require user 스택이므로이 내용을 설명합니다.

    서버 A에있는 .htaccess 파일에 서버 B에있는 "사용자 스택"을 포함시킬 수 있습니까?

    또는 PHP 엔진을 통해 서버 A의 .htaccess 파일을 구문 분석 할 수 있습니까?

    내 문제를 해결하는 데 도움을 주셔서 감사합니다. 여기

    은 htaccess로 보이는 무엇과 같은 :

    AuthType shibboleth 
    AuthName "Secure Login" 
    ShibRequireSession on 
    Header append Cache-Control "private" 
    Require user bob jill steve 
    

    나는 노력의 일환으로 내 응용 프로그램/변경/삭제 사용자를 추가하는 각과마다 파일의 bob jill steve 목록 부분을 업데이트 할 일은 원하는 모든 내 Shibboleth에게 (서버 A에서) 사용자가 MySQL/PHP 웹 응용 프로그램 (서버 B에 살고 있어야 함)과 동기화되도록해야합니다.

  • +0

    을 파일은. 그냥가 동일한 사용자 아파치가 소유하고 있는지 확인 사용자가 쓰기 권한을 필요가 없습니다 서버가 실행 중입니다. PHP 스크립트를 업로드하는 대신 파일을 작성하도록하면이 작업을 수행 할 수 있습니다.이 작업을 수행하려면 .htaccess를 포함하는 폴더를 세계 기록 가능으로 설정해야합니다. 이 일은 한 번만하면됩니다. 이미 코드의 나머지 부분을 가지고 있으므로 최소한의 금액입니다. – Gerben

    +0

    감사합니다. @Gerben. PHP는 "nobody"로 실행됩니다. 호스팅 제공 업체가 소유권을 변경할 수 없도록합니다. (아무도 그것을 소유하지 않으려 고하기 전에 여러 번, 여러 번있었습니다.) –

    +0

    PHP는 아무도 실행되지 않습니다. PHP가 파일을 만들도록하면, 내가 말했듯이 파일의 소유자는 "아무도 없습니다"가됩니다. – Gerben

    답변

    0

    다음은 몇일 전에 문제를 해결 한 방법입니다.

    내 HSP가 매일 밤 서버를 스윕하고 모든 쓰기 가능한 파일을 664로 변경하면 다른 접근 방법에 대해 생각해 보았습니다.

    내가이 짓 : 나는 0777

  • 내 쓰기 권한이없는 htaccess로 파일이 들어있는 디렉토리를 만들어 하루 동안

    1. 을 한 후 나는 다시 실행 한 후
    2. 내 htaccess로 파일을 삭제 내 스크립트 - 내 fopen() 명령은 "w"모드를 사용하므로 (파일이 현재 존재하지 않는다면 왜 내 PHP 스크립트에서 새 스크립트를 만들지 않겠습니까?)
    3. 위 어딘가에 말했기 때문에 여기에 내 PHP는 "아무도"로 실행 - 짜잔 !!!! "나는 내 htaccess로 파일을 소유있어 ...하지만 별거 아니 - 나는 지금 내 HSP 서버를 휩쓸 세계 쓰기에서 내 디렉토리를 변경

    나중에 그 밤 디렉토리에 아무도가 소유 한 파일을 가지고 있었다 아무도 '내가 자동으로 사용자의 지시를 필요 업데이트 할 수 없습니다.

    덕분에이 모든 사람의 도움을.

  • 0

    (이 게시물의 버전 2는 첫 번째 읽기에서 Require user 포인트를 놓쳤습니다.)

    필자가 즉각적으로 그리고 두 번째 본능은 동적 인 .htaccess 파일 (특히 별도의 웹 서비스에서 작성되도록 고안된)이 보안상의 이유로 대기하는 재앙이며 호스팅 제공 업체가이 작업을 수행 할 권리가 있으므로 이것을 제약으로 간주하십시오.

    그러나 응용 프로그램 UID (또는 모드 664의 경우 GID) 내에서 서버 A의 프로세스를 중지하는 데는 .htaccess 파일을 다시 쓰는 것이 없습니다. 왜 "htaccess"업데이트 요청을 서비스 할 스크립트를 A에 추가하지 않을까요? 업데이트 된 Require user 데이터 세트를 (JSON 캡슐화 된, 말하기) 매개 변수와 일부 양식 공유 비밀 서명으로 받아 들일 수 있습니다. 이 스크립트는 필요한 모든 유효성 검사를 포함하고 htaccess 파일을 로컬로 업데이트 할 수 있습니다. 그런 다음 서버 B는 목록을 작성하고 웹 요청을 통해이 전송을 시작할 수 있습니다.박사 DOT

    내 첫 코멘트로 응답 다음

    포스트 스크립 내가 ISP가 nobody로 스크립트를 실행 정말 놀란다는 것이다. 나는 모든 계정이 동일하게 취급되므로 공유 계정에서 별도의 계정으로 생성 된 UID/GID 액세스 제어 분리가 없음을 가정합니다. 공유 환경에서는 큰 문제가 아닙니다. 일반적으로 suEXEC/suPHP 구현에서 모든 대화식 스크립트는 스크립트 파일의 UID에서 실행됩니다. 귀하의 경우, 귀하의 ftp 계정을 가정합니다. 익명으로 처리하면 myftpuser이됩니다. 내가 생각할 수있는 것은 여러분의 ISP가 아파치가 nobody으로 실행되는 mod_php5를 사용하는 공유 계정을 실행하고 있다는 것입니다. 이것은 매우 특이한 일입니다.

    그러나 나는이 방법으로 설정된 의사를위한 일반 정보 위키를 실행하고, 내가하는 일은 응용 프로그램에서 쓸 수있는 모든 내용을 (내 경우에는) www-data이 소유 한 디렉토리에 저장하는 것입니다. 확실히 아무 것도 자신의 .htaccess 파일을 가진 디렉토리를 설정하는 것을 멈추게하는 것은 없습니다. 모든 사람이 소유하지 않으므로 스크립트로 업데이트 할 수 있습니다.

    이 유형의 스크립트에 대한 간단한 예를 보려면 내 기사 Running remote commands on a Webfusion shared service을 참조하십시오.

    +0

    감사합니다. @TerryE. 나는 그걸하는 법을 모른다. (다른 애플 리케이션과 함께 수년 동안 PHP를 통해 내가 필요로하는 방식으로 파일을 업데이트해야 함) .htaccess 파일은'myftpuser'가 소유하고 있으며 그룹은'samplegroup'으로 설정되어 있습니다. 내 PHP 응용 프로그램은'아무도'로 실행되지 않습니다. 그렇다면 내가 소유자가 아니고 그룹에없는 664 파일을 어떻게 업데이트합니까? 권한 설정에서 소유자, 그룹 또는 모든 사람을 변경할 수 없다는 것을 명심하십시오. –

    +0

    @Dr DOT, 나는 내가 원했던 몇 가지 보충 정보를 추가했다. 그 이상이 필요하다면 PHPinfo를 볼 필요가 있습니다. 내 이메일이 내 프로필에 있습니다. – TerryE

    +1

    감사합니다. @TerryE. 아래 내 솔루션을 참조하십시오. –