일부 파일에 대한 웹 액세스를 거부하는 방법은 무엇입니까?


14

나는 조금 이상한 작업을해야합니다.

먼저 데비안 apache2에서 실행합니다 (사용자 www-data로 '실행').

따라서 .txt ot .ini 또는 간단한 확장명을 가진 간단한 텍스트 파일이 중요하지 않습니다.

이러한 파일은 다음과 같은 구조의 하위 폴더에 있습니다.

www.example.com/folder1/car/foobar.txt www.example.com/folder1/cycle/foobar.txt www.example.com/folder1/fish/foobar.txt www.example.com/folder1/fruit/foobar .txt

따라서 파일 이름은 항상 동일합니다. '계층 구조'의 경우 폴더 이름을 변경하면됩니다. /folder-name-static/folder-name-dinamyc/file-name-static.txt

내가해야 할 일은 상대적으로 간단하다고 생각합니다. 서버의 프로그램 (예 : python, php)으로 파일을 읽을 수 있어야하지만 broswer (URL www를 숫자로 표시)로 파일 내용을 검색하려고하면. example.com/folder1/car/foobar.txt, 또는 cUrl 등을 통해) 금지 된 오류 또는 기타 사항이 발생하지만 파일에 액세스해서는 안됩니다 .

FTP를 통해 해당 파일에 액세스하는 경우조차도 '숨겨져 있거나'어쨌든 다운로드 할 수 없습니다 (적어도 ftp 루트 및 사용자 데이터와 함께 사용하는 경우)

어떻게해야합니까?

이 파일을 온라인에서 찾았습니다. .htaccess 파일에 넣으십시오.

<Files File.txt>
 Order allow, deny
 Deny from all
</ Files>

파일이 하위 폴더가 아닌 웹 루트 (www.example.com / myfile.txt)에있는 경우에만 작동하는 것 같습니다. 또한 두 번째 수준의 폴더 (www.example.com/folder1/ fruit /foobar.txt)는 동적으로 생성됩니다. 때때로 .htaccess 파일을 변경하지 않아도됩니다.

* www.example.com / folder-name-static / * folder-name-dinamyc / *** file-name에 있는 지정된 이름을 가진 모든 파일에 적용되는 규칙을 만들 수 있습니다. -static.txt *, 그 부분들이 항상 같으면 ** 하나만 바뀌 나요?

편집 :

Dave Drager가 말했듯이, 해당 파일을 웹 액세스 가능 디렉토리 외부에 유지하여 이것을 단순화 할 수 있습니다. 그러나 해당 디렉토리에는 다른 사용자 파일, 이미지 및 사용자가 사용하는 내용이 포함되어 있으므로 다음과 같은 중복 폴더 시스템을 사용하려고하지 않습니다.

/var/www/vhosts/example.com/httpdocs/folder1/car/[other folders and files here]
/var/www/vhosts/example.com/httpdocs/folder1/cycle/[other folders and files here]
/var/www/vhosts/example.com/httpdocs/folder1/fish/[other folders and files here]

//and, then for the 'secrets' files:

/folder1/data/car/foobar.txt
/folder1/data/cycle/foobar.txt
/folder1/data/fish/foobar.txt

답변:


21

Files / FilesMatch 와 정규 표현식을 사용할 수 있습니다 .

<Files ~ "\.txt$">
    Order allow,deny
    Deny from all
</Files>

이것이 .htpasswd가 보호되는 방식입니다.

또는 .txt 액세스를 404로 리디렉션하십시오.

RedirectMatch 404 \.txt$

나는 그런 식으로 사용하려고 시도했지만 하위 폴더의 파일에서 작동하지 않는 것 같습니다
Strae

정규 표현식을 수정했습니다. 죄송합니다.
rkthkr

좋아 .. 작동 할 수 있습니다. 그러나 정규식은 RedirectMatch 404 \ myfilename.txt $와 같아야합니다. 파일은 항상 동일한 이름이지만 다른 폴더에 있습니다. 그리고이 솔루션은 FTP 방법에 영향을 미치지 않습니다.
Strae

맞습니다 ...
rkthkr

예, 작동하는지 확인합니다 ...하지만 내 정규 표현식 RedirectMatch 404 \ myfilename.txt $가 잘못되어야합니다. RedirectMatch 404 \ .txt $를 사용하고 모든 .txt 파일을 차단하지만 파일 이름을 사용하지 않으면 작동합니다. 정규 표현식에서. 어떤 도움? im 정규 표현식을 사용하는 사람이 아닙니다;)
Strae

1

예,이 모든 것이 가능합니다. 그러나 서버에 텍스트 파일에 액세스해야하는 프로그램이 있으면 웹 루트 외부에 있어야합니다. 예를 들어, 웹 파일이 ~ / public_html /에 있으면 ~ / data에 저장해야합니다. 공개 html 폴더에 배치 할 이유가 없습니다.

웹 폴더에서 파일을 제거하는 것 외에도 유닉스 권한이 올바르게 설정되어 있는지 확인하십시오. 스크립트 사용자는 읽기 (쓰기) 액세스 권한이 있어야하지만 다른 사람은이 액세스 권한을 가질 필요는 없습니다.

웹 액세스 가능 폴더에 이러한 파일이 있어야하는 경우 mod_rewrite를 통해 원하는 작업을 수행 할 수 있습니다. 청구서에 맞는 많은 예는 다음 사이트를 참조하십시오.

http://perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/


파일은 python 또는 php를 통해 생성 된 다음 다시 편집하지 않고 읽을 수 있습니다.
Strae

0

표준 유닉스 파일 권한을 사용하여 파일에 대한 액세스를 거부하지 않는 이유는 무엇입니까?

유닉스 파일 권한에 대한 위키 백과에 대한 적절한 설명이 있습니다.


PHP, python, root 사용자가 해당 파일을 처리하고 브라우저가 액세스하지 못하도록 권한을 설정하려면 어떻게해야합니까?
Strae

0

.htaccess 파일을 서브 디렉토리 및 명령문에 넣고 AllowOverride All을 설정하십시오.


따라서 모든 2 ° 수준 폴더에 .htaccess가 필요합니까? mmh .. 해결책이 될 수 있습니다 .. 1
htacces

0

Linux ACL을 사용할 수 있습니다 .


간단한 파일 권한입니까? rwx처럼? 이 작업으로 필요한 작업을 어떻게 수행 할 수 있습니까?
Strae

0

모두 읽은 후에는 .htaccess 파일이 나에게 적합한 방법이라는 것을 알았습니다. 폴더의 파일에만 영향을 미칩니다.

그러나 내 폴더는 동적으로 생성됩니다. 새 폴더를 만들 때마다 .htaccess 파일을 복사하거나 다시 만드는 것이 안정적인 방법이라고 생각하지 않습니다.

Dave가 말했듯이 논리적 방법은 구성 텍스트 파일을 웹 액세스 가능 폴더 외부에 저장해야합니다.

그러나 모든 폴더에 웹 액세스 가능 해야하는 다른 파일, 예를 들어 이미지를 저장해야합니다 ... 그리고 여전히 웹 루트 디렉토리 안팎으로 폴더 구조를 복제하는 것이 신뢰할 수있는 방법이라고 생각하지 않습니다 . 따라서 아파치 구성도 PHP 허용 경로에 구성 폴더를 포함하도록 변경해야합니다. 어쨌든 이것은 문제가되지 않습니다.

내가 해달라고한다면, 더 나은 , 내가 선택해야 덜 나쁜 일을.

앞으로는 후회하지 않기를 희망하면서 여러 .htaccess 파일 솔루션을 사용하겠습니다.

다른 모든 솔루션에 감사드립니다.


0

로부터 주문 문서 섹션 :

키워드는 쉼표로만 구분할 수 있습니다. 그들 사이에는 공백이 허용되지 않습니다.

따라서 다음이 올바르지 않습니다.

<Files File.txt>
Order allow, deny
Deny from all
</ Files>

다음은 (더) 맞습니다

<Files "File.txt">
Order allow,deny
Deny from all
</Files>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.