Git
Contents
Git en gitweb initialiseren
Kerberos en IPA
Installeer als eerste git en gitweb en de benodigde mod_auth_kerb voor htaccess:
yum install git-core gitweb mod_auth_kerb
Zet vervolgens de kerberos-authenticatie erbij in /etc/httpd/conf.d/git.conf:
<Location /git> Options Indexes FollowSymLinks Includes ExecCGI AuthType Kerberos AuthName "Kerberos Login" KrbMethodNegotiate On KrbMethodK5Passwd On KrbAuthRealms AESKWADRAAT Krb5KeyTab /etc/httpd/krb5.keytab Require valid-user </Location>
Je moet er natuurlijk ook wel voor zorgen dat de juiste kerberos-keytab-file aanwezig is. Maak daarvoor op de ipaserver de http-service voor de gitserver aan en haal dan de keytab binnen op de gitserver:
ipa-getkeytab -s <ipa-server> -p HTTP/<gitserver> -k /etc/httpd/krb5.keytab chown apache:apache /etc/httpd/krb5.keytab
en restart de httpd
service httpd restart
LDAP
Installeer als eerste git en gitweb en de benodigde mod_authz_ldap voor htaccess:
yum install git-core gitweb mod_auth_kerb
Zet vervolgens de kerberos-authenticatie erbij in /etc/httpd/conf.d/git.conf:
<Location /git> Options Indexes FollowSymLinks Includes ExecCGI AuthType Basic AuthName "GitWeb" AuthBasicProvider ldap AuthLDAPURL ldap://ldap/ou=mensjes,ou=accounts,dc=a-eskwadraat,dc=nl Require valid-user </Location>
en restart de httpd
service httpd restart
Als laatste moet er in de gitweb.conf bijgezet worden dat de lijst van repos afhangt van de user die inlogt op gitweb. Zet het volgende erbij in /etc/gitweb.conf:
use CGI; my $user = $ENV{'REMOTE_USER'}; our $projects_list = "/var/lib/git/" . "$user"; our $strict_export = true;
Dit zegt dat er in de map /var/lib/git per user een bestandje 'user' is waar de repos van die user in staan.
Vergeet niet om de selinux-context van /var/lib/git goed te zetten (restorecon -Rvv /var/lib/git/)!
Vervolgens moet je om de repo te clonen via http het volgende in /etc/httpd/conf.d/git.conf zetten:
Alias /gitrepos/*repo* /var/lib/git/*repo* <Location /gitrepos/*repo*> Options Indexes FollowSymLinks Includes ExecCGI AuthType Basic AuthBasicProvider ldap AuthLDAPURL ldap://ldap/ou=mensjes,ou=accounts,dc=a-eskwadraat,dc=nl AuthName 'Sysop repo' Require valid-user (of hier de groep als dat nodig is) </Location>
Nieuwe git-repo aanmaken
Maak een directory aan voor je repo in /var/lib/git/ en initialiseer een nieuwe gitrepo hierin:
cd /var/lib/git mkdir *repo* cp *repo* git --bare init cd *repo* git update-server-info cd .. chown -R apache:apache * chcon -Rt httpd_git_rw_content_t *repo*
Vervolgens kan je voor iedere user die bij die git-repo moet kunnen de regel *repo* *owner*+<owner-email> in het bestandje user zetten.
Misschien is het ook handig om de ownership naar de juiste user en groep te zetten.
Userfile van de lijst met repos
In de map /var/lib/git staat voor elke user die bij een git repo mag, een bestandje 'user' waarin staat bij welke repos de user mag. Het format van het bestand is als volgt:
*repo* *owner*+<owner-email>
Repo clonen
Als user kan je de repo clonen door het volgende uit te voeren:
git clone http://vm-gitsvn.a-eskwadraat.nl/gitrepos/*repo*
en verander de volgende regel in *repo*/.git/config
url = http://*user*@vm-gitsvn.a-eskwadraat.nl/gitrepos/*repo*