====== .htaccess Passwort-Schutz ====== [[.htpasswd]] Eine von 2 Bedingungen (Rechner ODER Name/Passwort) muss stimmen: Beispiel: Dateien in einem Verzeichnis sollen Nutzern auf Rechnern der TU Chemnitz sofort zugreifbar sein. Nutzer anderer Rechner müssen sich als URZ-Nutzer authentifizieren (Nutzerkennzeichen + Passwort). Die .htaccess-Datei im Verzeichnis enthält: Satisfy any AuthName "URZ" AuthType Basic AuthDBMUserFile /www/auth/urzpasswd.dbm Require valid-user Order Deny,Allow Deny from all Allow from .tu-chemnitz.de Beide Bedingungen (Rechner UND Name/Passwort) müssen stimmen: Beispiel: Dateien in einem Verzeichnis sollen nur von authentifizierten URZ-Nutzern (Nutzerkennzeichen + Passwort) von Rechnern aus Deutschland und Österreich zugreifbar sein: Die .htaccess-Datei im Verzeichnis enthält: AuthName "URZ" AuthType Basic AuthDBMUserFile /www/auth/urzpasswd.dbm Require valid-user Order Deny,Allow Deny from all Allow from .de .at "Wenn mein User von IP xx.yy.zz.* kommt (z. B. aus dem firmeneigenen Netz), dann soll er ohne irgendwelche Abfragen zugreifen dürfen; wenn er aber von einer anderen IP-Adresse aus zugreift, dann soll er sich mit Benutzerkennung und Passwort gegenüber der mit .htaccess definierten Benutzerliste ausweisen müssen." Im Artikel wurde der Fall beschrieben, daß nur die Kombination aus IP-Adresse, Benutzerkennung und Passwort den Zugriff ermöglichen sollen (satisfy=all - alle Anforderungen müssen erfüllt sein). Alternativ gibt es auch die Möglichkeit satisfy=any - mindestens eine der Anforderungen muß erfüllt sein. Das bewirkt dann genau den hier gewünschten Effekt. Fehlermeldung 'Satisfy not allowed here' (oder 'order not...' in /var/log/apache2/error.log Das liegt daran, dass in der vi /etc/apache2/sites-available/default die Option 'AllowOverride' falsch gesetzt ist. AllowOverride Limit FileInfo AuthConfig (AuthConfig ist das entscheidende) bringt Abhilfe... ---- ====== Apache2 hört nicht auf .htaccess ====== Primaer geht es um das Problem, dass die .htaccess nicht verwendet wird (Hierzu hab ich das Tutorial "Versuch: FAQ, mögliche Fehlerquellen und Fehlermeldungen beim Gebrauch von mod_rewrite, Punkt 2" schon durchgefuehrt, leider ohne Erfolg.) "AllowOverride [FileInfo]" wurde zu 'apache2/sites_available/$SEITE' hinzugefuegt. * AllowOverride None Zugriffsdateien im Verzeichnis werden nicht ausgewertet. * AllowOverride All Zugriffsdateien im Verzeichnis werden ausgewertet und alle Features sind erlaubt. Außerdem existieren noch die - seltener gebrauchten Einschränkungen: * AllowOverride AuthConfig Zugriffsdateien im Verzeichnis werden ausgewertet. Nur Direktiven für die User/Gruppenauthentifizierung sind erlaubt. * AllowOverride Limit Zugriffsdateien im Verzeichnis werden ausgewertet. Nur Direktiven für die Domain/Rechner-Zugriffssteuerung sind erlaubt. * AllowOverride Options Zugriffsdateien im Verzeichnis werden ausgewertet. Nur Direktiven für Optionen sind erlaubt. Die letztgenannten Angaben sind auch kombinierbar, etwa in der Form AllowOverride AuthConfig Limit In der 'httpd.conf' hatte ich die Directory-Rules auch schon, auch ohne Erfolg. Wo liegt der Fehler? Hi. --- /root # cat /etc/apache2/httpd.conf # This is here for backwards compatability reasons and to support # installing 3rd party modules directly via apxs2, rather than # through the /etc/apache2/mods-{available,enabled} mechanism. # #LoadModule mod_placeholder /usr/lib/apache2/modules/mod_placeholder.so --- so schaut der spass aus, mehr steht nich drin, da ich alles ueber die available sites definiert hab. das sollte auch die frage beantworten, ob noch andere dateien die eventl. die konfig ueberschreiben, eingebunden werden. zufaellig ne ahnung, ob die httpd.conf ueber den site-configs steht? hier noch ein auszug aus '/etc/apache2/sites-available/default' (die anderen seiten wurden daraus erstellt) --- DocumentRoot /var/www/ Options FollowSymLinks AllowOverride FileInfo Options Indexes FollowSymLinks MultiViews AllowOverride FileInfo Order allow,deny allow from all # This directive allows us to have apache2's default start page # in /apache2-default/, but still have / go to the right place RedirectMatch ^/$ /apache2-default/ REWRITE engline Apache2: [[http://linuxwiki.de/Apache/RewriteEngine]] Default Redirect ausschalten: I want to change the default apache2 document root to /var/www instead of /var/www/apache2-default. I have edited /etc/apache2/sites-available/default to comment out the redirect. As well I renamed the link /etc/apache2/sites-enabled/000-default to default and restarted apache2, but I am still always directed to http://server/apache2-default. I have created a file /var/www/index.html which I can ready at http://server/index.html, but not if I try to go to http://server. Below is the default file. The only change I've made is to comment out RedirectMatch line. NameVirtualHost * ServerAdmin webmaster@localhost DocumentRoot /var/www/ Options FollowSymLinks AllowOverride None Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all # This directive allows us to have apache2's default start page # in /apache2-default/, but still have / go to the right place # RedirectMatch ^/$ /apache2-default/ ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ AllowOverride None Options ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined ServerSignature On Alias /icons/ "/usr/share/apache2/icons/" Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all Alias /doc/ "/usr/share/doc/" Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 ---- How do I set up Apache to allow access to certain documents only if a site is either a local site or the user supplies a password and username? Use the Satisfy directive, in particular the Satisfy Any directive, to require that only one of the access restrictions be met. For example, adding the following configuration to a .htaccess or server configuration file would restrict access to people who either are accessing the site from a host under domain.com or who can supply a valid username and password: Deny from all Allow from .domain.com AuthType Basic AuthUserFile /usr/local/apache/conf/htpasswd.users AuthName "special directory" Require valid-user Satisfy any See the user authentication question and the mod_access module for details on how the above directives work. Dont forget the " " in AuthName or us a singe word without spaces in httpd.conf it must be configed that the .htaccess can be used: AllowOverride AuthConfig (or All) Example: Allow from 10.1.0.0/255.255.0.0 A network a.b.c.d, and a netmask w.x.y.z. For more fine-grained subnet restriction. A network/nnn CIDR specification The Order directive controls the default access state and the order in which Allow and Deny directives are evaluated. Ordering is one of == Deny,Allow == The Deny directives are evaluated before the Allow directives. Access is allowed by default. Any client which does not match a Deny directive or does match an Allow directive will be allowed access to the server. == Allow,Deny == The Allow directives are evaluated before the Deny directives. Access is denied by default. Any client which does not match an Allow directive or does match a Deny directive will be denied access to the server. == Mutual-failure == Only those hosts which appear on the Allow list and do not appear on the Deny list are granted access. This ordering has the same effect as Order Allow,Deny and is deprecated in favor of that configuration. ===== Nach Referer umleiten ===== Noch ein Beispiel: Eine fremde Website bindet Bilder aus einem bestimmten Verzeichnis von Ihrer Website ein, und Sie möchten das verhindern, weil Sie nicht gefragt wurden und deshalb nicht bereit sind für den entstehenden zusätzlichen Traffic zu zahlen. Jetzt können Sie z.B. folgende .htaccess-Datei zum Einsatz bringen: RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://.*mydomain\.de/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://.*mydomain\.de*$ [NC] RewriteCond %{HTTP_REFERER} !^$ RewriteRule ^(.*)jpg$ http://www.mydomain.de/images/smile.jpg [L,R] Diese Datei bewirkt, daß alle jpg-Dateien, die in eine fremde Seite eingebunden sind (also einen HTTP-Referer ungleich der eigenen Domain haben), durch die Datei smile.jpg ersetzt werden. Wenn kein HTTP-Referer übergeben wird, was z.B. bei Besuchern der Fall sein kann, die hinter einem Firewall sitzen, wird das Originalbild geliefert. Eine genaue Beschreibung aller Möglichkeiten von mod_rewrite findet sich [[http://httpd.apache.org/docs/mod/mod_rewrite.html|hier]] (auf Englisch).