Passwort geschützter Bereich mit .htaccess geht irgendwie nicht

S

_st

Neues Mitglied
Thread Starter
Dabei seit
07.09.2005
Beiträge
17
Reaktionspunkte
0
Hallo liebes Forum,

ich hoffe ich bin hier richtig...

Ich möchte eine Art web-file-browser erstellen in dem ich die Ordnerstrucktur und enthaltene Objekte übers Internet sehen kann. Hab also den Apache-Server gestartet, hab mir dann ein php-package besorgt und das installiert. Der web-file-browser braucht php.

So weit, so gut. Funktioniert alles.

Jetzt möchte ich aber verschiedene Benutzer angeben, die bei verschiedenen ordnern, verschiedene rechte haben.
z.b.:
User A darf Ordner A -lesen und schreiben, Ordner B -keine Rechte
User B darf Ordner A -lesen und schreiben, Ordner B -lesen und schreiben
usw.

jetzt hab ich mir gedacht, das mach ich mit htaccess. Hab also wie wild gegoogelt und dann folgendes herausgefunden:

die datei st.conf muß geändert werden damit htaccess überhaupt geht. Hab ich gemacht. Sieht jetzt so aus:

<Directory "/Users/st/Sites/">
Options Indexes MultiViews
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>

Dann .htaccess erstellen. Hab ich auch gemacht. Über Terminal mit:

touch .htaccess
open .htaccess

Dann hab ich da rein geschrieben:

AuthType Basic
AuthName privater Bereich
AuthUserFile /Users/st/Sites/.htpasswd
require valid-user

<Files ".htaccess">
Order allow,deny
Deny from all
</Files>
<Files ".htpasswd">
Order allow,deny
Deny from all
</Files>

Die hab ich dann einfach im Ordner Sites gespeichert.

So weit, so gut. Wie erstelle ich jetzt die .htpasswd?

ich hab das versucht, habs genauso gemacht wie mit htaccess. Im Terminal erstellt und dann im Texteditor einfach was reingeschrieben.
z.b.: st : passwort

Hab die dann ebenfalls im Ordner Sites gespeichert. Ging aber nicht. Wenn ich übers Netzwerk von meinem 2. Rechner auf die Site zugreife seh ich immer noch alles...

Bitte, weiß jemand Hilfe? Jetzt bin ich schon so weit gekommen und das nervt mich das es nicht weitergeht...
 
die erstellst du mit dem kommandozeilen-tool namens "htpasswd"
htpasswd -c /Users/st/Sites/.htpasswd username
-c erstellt die, wenn die noch nicht existiert, aber ÜBERSCHREIBT die falls sie schon existiert...

p.s. normalerweise legt man das .htpasswd file besser ausserhalb des web bereichs...
auch wenn du hier schon den zugriff darauf mit der .htaccess verweigerst.
 
Zuletzt bearbeitet:
Super, danke.

So, das hab ich jetzt gemacht. Wenn ich die Site aufrufe kann ich aber immer noch alles sehen, ohne das eine Passwortabfrage kommt.

warum? ich dachte der ganze ordner in dem htaccess steht wird geschützt?
 
probier mal
AuthName "private bereich"

und pack noch eventuell mit rein.
AuthGroupFile /dev/null

kann der apache denn das .htaccess lesen?

hast in der haupt httpd.conf den AllowOverride für die user verzeichnisse angeschaltet?
 
Öhm...wenn ich Dich richtig verstanden habe greifst Du doch per PHP auf die Ordner und Inhalte zu und nicht direkt über den Browser. Dann greift die .htacces natürlich nicht. Dazu müsstest Du die PHP-Anwendung aufbohren, Nutzer-Rechte/Gruppen-Verwaltung erstellen etc. Such Dir lieber ein anderes Script. :)
 
Vielen Dank für deine schnellen Antworten, aber irgendwas ist noch im Argen...

Also, meine .htaccess sieht jetzt so aus:

AuthType Basic
AuthName "privater Bereich"
AuthUserFile /Users/st/Sites/.htpasswd
AuthGroupFile /dev/null
require valid-user

<Files ".htaccess">
Order allow,deny
Deny from all
</Files>
<Files ".htpasswd">
Order allow,deny
Deny from all
</Files>

meine .htpasswd so:

admin:YLzbeZPYQzuRI

In der httpd.conf hab ich 2 Einträge gefunden mit:

AllowOverride None

hab ich beide geändert auf:

AllowOverride AuthConfig

wenn ich jetzt auf dem selben rechner in safari auf:
http://ipadresse/~st/index.html
geh kann ich immer noch die index html sehen ohne passwortabfrage.

ich dreh durch...
das kann doch nicht sooo schwer sein
 
für meine Begriffe fehlt da noch require und satisfy any, also etwas derart:

PHP:
deny from all
AuthType BASIC
AuthUserFile /etc/httpd/passwd
AuthGroupFile /etc/httpd/www_groups
AuthName "Abteilung EDV"
require group edv
satisfy any

wenn Du nicht mit Gruppen arbeitest, dann ist require valid-user nat. ok.! Hab ich gerade erst bei Dir gelesen. Aber Satisfy any würd ich noch ergänzen!
 
Zuletzt bearbeitet:
require valid-user hatte er doch drin

du hast wohl das falsche AllowOverride geändert, das teil für die user sites ist default-mässig komplett auskommentiert...

#<Directory /Users/*/Sites>
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
# <Limit GET POST OPTIONS PROPFIND>
# Order allow,deny
# Allow from all
# </Limit>
# <LimitExcept GET POST OPTIONS PROPFIND>
# Order deny,allow
# Deny from all
# </LimitExcept>
#</Directory>

und nach ändern der config das restarten des apache nicht vergessen ;)
 
Zuletzt bearbeitet:
Du musst dafür in einer Datei alle Nutzer eintragen:

BEISPIEL:


if($benutzername == $chris and $passwort == pflaume){
$rechte='ordner/a'; // ordnerpfad
}


Das hier geht auch mit array's.
 
Zuletzt bearbeitet:
So, ich hab jetzt die richtigen Daten in der httpd.conf geändert - hoffe ich -

Da steht jetzt:

<Directory /Users/st/Sites>
AllowOverride All
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
# <Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
# </Limit>
# <LimitExcept GET POST OPTIONS PROPFIND>
# Order deny,allow
# Deny from all
# </LimitExcept>
</Directory>

Das hat irgenwas bewirkt, denn jetzt krieg ich einen internal server error. Also hab ich die log datei gesucht und gefunden und da steht:

[Wed Sep 7 17:00:50 2005] [alert] [client 192.168.2.111] /Users/st/Sites/.htaccess: order not allowed here
 
Zurück
Oben Unten