Chroń hasłem katalog, ale nie pliki tego katalogu?

8

Zastanawiałem się tylko, czy możliwe jest zabezpieczenie katalogu za pomocą kombinacji nazwa użytkownika / hasło za pomocą plików .htaccess i .htpasswd, ale nie chronię plików wewnątrz. tj. można połączyć, powiedzmy, obrazy w tym katalogu z przyjaciółmi, ale przeglądanie samego katalogu nie byłoby dozwolone bez nazwy użytkownika / hasła. Dziękujemy wszystkim z góry.

Ivo Flipse
źródło

Odpowiedzi:

9

Spróbuj tego w swoim .htaccess:

Require valid-user

<Files ?*>
    Order allow,deny
    Allow from all
    Satisfy any
</Files>

Tutaj Require valid-user wymaga dowolnego znanego logowania. Następnie zmieniasz to ograniczenie dla plików z co najmniej jedną postacią w nazwie - to jest wzór globu ?* dla <Files> sekcja pasuje - co oznacza, że ​​załączone reguły mają zastosowanie do plików, ale nie do katalogów.

W zmienionych zasadach dotyczących plików kluczem jest Satisfy any. Pozwala to na spełnienie autoryzacji zarówno kwalifikacje lub Adres IP. Wtedy pozwalasz każdy Adres IP do przekazania, więc są żądania zawsze upoważniony.

Więc teraz przeglądanie tego katalogu lub dowolnego z jego podkatalogów wymaga logowania, ale bezpośrednie pobranie pliku z niego nie będzie możliwe.

Tego właśnie chciałeś.

Aristotle Pagaltzis
źródło
0

Tak, możesz zabezpieczyć pliki i katalogi według nazwy lub wzorca. Powinieneś już użyć tego do ograniczenia dostępu do plików .ht *. Sprawdź konfigurację apache. Wymagany wzór pliku będzie prawdopodobnie „/ $”.

BillThor
źródło
0

Posługiwać się LocationMatch aby ograniczyć elementy autoryzacji do indeksu katalogu.

Marian
źródło
& lt; LokalizacjaMatch "/ zdjęcia" & gt; AuthUserFile /home/asdasd/public_html/user5678/pictures/.htpasswd AuthGroupFile / dev / null AuthName "Restricted Directory" AuthType Basic & lt; / LocationMatch & gt; & lt; Limit GET POST & gt; wymagaj poprawnego użytkownika & lt; / Limit & gt; To jest mój obecny plik .htaccess, znajdujący się w / zdjęciach. Czy jest coś, co robię źle? Wydaje się, że zwraca błąd wewnętrzny 500 serwera.
a) przeczytaj o LocationMatch, wymaga wyrażenia regularnego. b) Musisz umieścić require valid-user w środku LocationMatch blok oczywiście (dlaczego Limit mimo to oświadczenie?)
Marian
0

Chcesz po prostu wyłączyć wyświetlanie indeksu folderu Apache. Umieść to w .htaccess:

Options -Indexes

W ten sposób odwiedzają go użytkownicy http://www.url.com/folder/, dostają Odrzucono listę katalogów błąd. Ale kiedy odwiedzają http://www.url.com/folder/file.jpg widzą plik.

Pascal
źródło
1
Tego nie pytano, to wyłącza aukcje, a nie chroni je hasłem
Krzysztof Bociurko
-1

Jeśli chcesz, aby lista katalogów była widoczna tylko dla autoryzowanych użytkowników, ale aby każdy mógł pobrać plik (abyś mógł wysyłać linki do ludzi), potrzebujesz skryptu pewnego typu (PHP, ASP itp.), Który prosi użytkownika o hasło, a jeśli je dostanie, wyświetla zawartość katalogu. Skrypt ten należy umieścić w katalogu i nazwać go index.php, aby był obsługiwany, a nie apache generujący indeks katalogów.

Daisetsu
źródło
-1

Tak. Dodaj plik index.html, który zawiera zawartość folderu i ogranicz dostęp do tego pliku za pomocą .htaccess. Jeśli chcesz, aby indeks był dynamiczny, musisz użyć jakiegoś skryptu (lub strony serwera), aby wygenerować indeks.

Chris Nava
źródło
-3

Wykonaj chmod 777 na plikach, ale nie na głównym folderze.

Christoffer Madsen
źródło
2
Nie, nie to.
Ignacio Vazquez-Abrams