2011-03-01 2 views
1

저는이 벽의 벽에 머리를 두드 리고 있습니다. 사용자가 서버에 zip 파일을 FTP 할 수있는 시스템이 있습니다. 그런 다음 관리자는이 파일이 어디에 있는지 응용 프로그램에 알릴 수 있으므로 파일에서 일련의 작업을 수행 할 수 있습니다.Linux 용 Coldfusion - 파일에 대한 사용 권한을 변경할 수 없습니다.

    는 웹 루트
  1. 파일의 압축을 풀고
  2. 목록 내용에서 파일을 이동하고

이 문제는, 업로드 된 파일이 항상 적절한 권한이없는 데이터베이스에 데이터를 삽입

  • . 나는 그들을 변화 시도 한 다음

    <cfscript> 
        FileSetAccessMode(myFile, "777"); 
    </cfscript> 
    

    그리고

    <cffile action="rename" mode="777" source="#myFile#" destination="#myFile#">   
    

    그리고

    <cffile action="move" mode="777" source="#myFile#" destination="#myFile#">  
    

    을하지만 아무 것도이 우편의 권한을 변경하지 않습니다 파일. 이미지 (.jpg)에서 위의 작업 중 하나를 수행하면 올바르게 작동합니다. 내가 놓친 게 있니?

  • 답변

    4

    웹 서버가 실행중인 것과 동일한 자격 증명으로 FTP를 보내지 않는 한 FTP 파일은 웹 서버 프로세스가 소유하지 않을 수 있습니다. 웹 서버가 파일을 소유하지 않는 한, 웹 서버는 파일에 대한 사용 권한을 변경할 수 없습니다.

    +0

    그건 이상한 짓이야. 즉, cfdirectory에는 파일을 삭제할 수있는 권한조차 없습니다. :/ – jyoseph

    +2

    필자는 그렇게 생각하지 않는다 ... 유닉스에서 파일을 지우는 것은 파일의 권한 기능이 아니라 디렉토리의 권한 (쓰기, 모드 2)의 함수이다. 이것을 보시려면, 루트 디렉토리에있는 파일을 터치하십시오. 루트가 소유하지만 파일을 삭제할 수 있습니다. – bpanulla

    +1

    Yah, bpanulla가 말했듯이 - 웹 서버가 파일이있는 디렉토리에 대한 쓰기 권한이있는 한 파일을 삭제할 수 있어야합니다. 그러나 "foreign"파일에 대한 권한을 변경할 수는 없습니다 서버가 루트로 실행 중입니다 (루트로 실행하지 마십시오). –

    1

    웹 서버/ColdFusion 서버가 파일을 읽을 수 있으면 파일을 준비 영역으로 복사 한 다음 원본 파일을 삭제하십시오. CF가 FOLDER에 대한 쓰기 권한을 갖고 있고 실행할 수있는 권한을 가지고 있다면, 소유자가 누구이든 관계없이 원본 파일을 삭제할 수 있어야합니다. 이는 누구나 액세스 할 수없는 모드 000으로 설정되어 있어도 마찬가지입니다.

    업로드를 샌드 박스에 넣은 다음 서버가 예상 한 위치로 이동하면 어떤 경우에도 좋은 보안 방법입니다.

    관련 문제