Muszę wykonać operację trochę dziwną.
Najpierw uruchamiam na Debianie, apache2 (który „działa” jako dane www użytkownika)
Mam prosty plik tekstowy z rozszerzeniem .txt ot .ini lub jakimkolwiek rozszerzeniem, nie ma znaczenia.
Te pliki znajdują się w podfolderach o takiej strukturze:
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 .tekst
dlatego nazwa pliku jest zawsze taka sama, podobnie jak w przypadku „hierarchii”, wystarczy zmienić nazwę folderu: /folder-name-static/folder-name-dinamyc/file-name-static.txt
To, co powinienem zrobić, jest (myślę) stosunkowo proste: muszę być w stanie odczytać ten plik przez programy na serwerze (na przykład python, php), ale jeśli spróbuję odzyskać zawartość pliku przez broswer (przeglądanie adresu URL strony internetowej. przyklad.com/folder1/car/foobar.txt lub przez cUrl itp.) Muszę otrzymać niedozwolony błąd lub cokolwiek innego, ale nie mogę uzyskać dostępu do pliku .
Byłoby również miło, że nawet dostęp do tych plików przez FTP jest „ukryty” lub w każdym razie nie można go pobrać (przynajmniej, że używam z rootem ftp i danymi użytkownika)
Jak mogę to zrobić?
Znalazłem to online, umieść w pliku .htaccess:
<Files File.txt>
Order allow, deny
Deny from all
</ Files>
Wygląda na to, że działa, ale tylko wtedy, gdy plik znajduje się w katalogu głównym (www.example.com / myfile.txt), a nie w podfolderach. Co więcej, foldery na drugim poziomie (www.example.com/folder1/ fruit /foobar.txt) będą tworzone dynamicznie. Chciałbym od czasu do czasu unikać zmiany pliku .htaccess.
Możliwe jest utworzenie reguły, która jest podobna, dla wszystkich plików o podanej nazwie, która znajduje się na * www.example.com / folder-name-static / * folder-name-dinamyc / *** file-name -static.txt *, gdzie te części są zawsze takie same , tylko ** ta jedna zmiana ?
EDYCJA :
Jak powiedział Dave Drager, mógłbym to uprościć, utrzymując te pliki poza katalogiem dostępnym w Internecie. Ale te katalogi będą również zawierać inne pliki, obrazy i inne rzeczy używane przez moich użytkowników, więc po prostu staram się nie mieć systemu zduplikowanych folderów, takich jak:
/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
źródło
Tak, to wszystko jest możliwe. Jeśli jednak masz na serwerze programy, które potrzebują dostępu do plików tekstowych, powinny one znajdować się poza katalogiem głównym. Na przykład, jeśli twoje pliki internetowe znajdują się w ~ / public_html /, powinieneś przechowywać je w ~ / data. Nie ma powodu, aby umieszczać je w publicznym folderze HTML.
Oprócz usunięcia ich z folderu internetowego upewnij się, że uprawnienia unix są dla nich ustawione poprawnie. Użytkownik skryptów musiałby mieć dostęp do odczytu (zapisu?), Ale nikt inny nie musi mieć tego dostępu.
Jeśli potrzebujesz mieć te pliki w folderze dostępnym w sieci, istnieją sposoby na zrobienie tego, o co pytasz za pośrednictwem mod_rewrite. Zobacz następującą witrynę dla wielu przykładów, z których jeden powinien pasować do rachunku.
http://perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/
źródło
Dlaczego nie skorzystać ze standardowych uprawnień do plików UNIX, aby odmówić dostępu do pliku?
W Wikipedii znajduje się dobre wytłumaczenie na temat uprawnień do plików unixowych
źródło
Umieść plik .htaccess w podkatalogu i w instrukcji ustaw AllowOverride All
źródło
Możesz używać list ACL systemu Linux .
źródło
Po przeczytaniu was wszystkich zauważyłem, że plik .htaccess może być dla mnie sposobem: wpływaj tylko na pliki w folderze, w którym się znajduje.
Ale moje foldery są generowane dynamicznie. Nie sądzę, że kopiowanie pliku .htaccess lub odtwarzanie go za każdym razem, gdy tworzę nowy folder, jest niezawodnym sposobem.
Jak powiedział Dave, logicznym sposobem powinno być przechowywanie plików tekstowych konfiguracji poza folderem dostępnym w sieci.
Ale w każdym folderze muszę przechowywać inne pliki, obrazy na przykłady, które muszą być dostępne w Internecie ... i nadal nie sądzę, że replikacja struktury folderów w katalogu głównym katalogu głównego i na zewnątrz jest również niezawodnym sposobem . Dlatego będę musiał zmienić nawet konfigurację apache, aby uwzględnić folder config w dozwolonej ścieżce php. W każdym razie nie powinno to stanowić problemu.
Więc jeśli nie mam lepszego , muszę wybrać mniej gorszy .
Na razie użyję rozwiązania z wieloma plikami .htaccess, mając nadzieję, że w przyszłości nie będę żałować.
Każde inne rozwiązanie jest mile widziane.
źródło
Z sekcji Dokumentacja zamówienia :
Zatem poniższe informacje są niepoprawne:
Poniższe jest (więcej) poprawne
źródło