J'essaie de configurer l'accès Mercurial à l'aide d'Apache http. Il nécessite une authentification. Ma /etc/Apache2/sites-enabled/Mercurial
ressemble à ça:
NameVirtualHost *:8080
<VirtualHost *:8080>
UseCanonicalName Off
ServerAdmin webmaster@localhost
AddHandler cgi-script .cgi
ScriptAliasMatch ^(.*) /usr/lib/cgi-bin/hgwebdir.cgi/$1
</VirtualHost>
Chaque tutoriel que j'ai lu sur Internet me dit d'insérer ces lignes:
AuthType Basic
AuthUserFile /usr/local/etc/httpd/users
Mais quand je le fais, j'obtiens l'erreur suivante:
# /etc/init.d/Apache2 reload
Syntax error on line 8 of /etc/Apache2/sites-enabled/Mercurial:
AuthType not allowed here
Ma distribution est un Ubuntu personnalisé appelé Turnkey Linux Redmine
Vous devez placer ceci dans une directive Location:
<VirtualHost *:8080>
<Location /> #the / has to be there, otherwise Apache startup fails
Deny from all
#Allow from (You may set IP here / to access without password)
AuthUserFile /usr/local/etc/httpd/users
AuthName authorization
AuthType Basic
Satisfy Any # (or all, if IPs specified and require IP + pass)
# any means neither ip nor pass
require valid-user
</Location>
...
</VirtualHost>
J'utilise Apache2 sur Ubuntu 10.04 - même problème et merci pour la solution. J'ai trouvé que je devais mettre la configuration dans /etc/Apache2/Apache2.conf
Vous pouvez générer le nom d'utilisateur et le mot de passe à l'aide de htpasswd. Nouveau fichier:
$ htpasswd -c /srv/auth/.htpasswd squire
Pour ajouter au fichier existant:
$ htpasswd -b /srv/auth/.htpasswd squire2 tickleme2
Vous pouvez protéger un emplacement ou un répertoire. Pour un répertoire, ajoutez quelque chose comme:
<Directory /some/dir/cgi-bin/>
Options +ExecCGI
AddHandler cgi-script .cgi
AuthType Basic
AuthName 'Private scripts'
AuthUserFile '/some/other/dir/.htpasswd'
Require valid-user
</Directory>
Vous pouvez également ajouter des directives Deny
et Allow
pour un contrôle plus fin.
Il semble que vous spécifiez les paramètres d'authentification dans VirtualHost
. En règle générale, ces paramètres sont spécifiés sous la directive Directory
.
Vous pouvez également utiliser .htaccesss
fichiers, mais la spécification dans la conf Apache est une bonne valeur par défaut, car elle a moins d'exposition.
J'utilise Apache2 sur Ubuntu 10.10. J'ai eu des problèmes avec toutes les solutions ci-dessus, mais cela a bien fonctionné (d'après les documents Apache):
<Répertoire /var/www/> Options Index FollowSymLinks MultiViews AllowOverride All Ordre autoriser, refuser Autoriser de tous AuthType Basic AuthName "Restreint" Fichier AuthBasicProvider AuthUserFile /etc/users Requiert un visiteur utilisateur </Directory>
La plus grande différence avec les réponses ci-dessus semble être la directive AuthBasicProvider définie sur "fichier" et la directive Require incluant le bit "utilisateur" avant le nom d'utilisateur réel.
J'espère que cela aide quelqu'un.
Nous exécutons une version optimisée en mémoire d'Apache et avons rencontré ce problème.
Cela était dû au fait que la ligne suivante n'était pas présente dans la configuration Apache:
LoadModule authz_user_module modules/mod_authz_user.so