Donnerstag, 5. Mai 2011

Multiple SVN Repositories + SSL + SVN-Subdomain + ACL

Läuft unter Debian 6.0 (Squeeze) - Subversion (1.6.12)

Folgendes soll erreicht werden:
  • Es sollen mehrere SVN Repositories angelegt werden können
  • Jedes SVN Repository erlaubt nur eine SSL Verbindung
  • Unter einer Subdomain (svn.domain.tld) werden alle Repositories angezeigt
  • Es wird nur eine Passwort-Datei angelegt in der sich alle Benutzer des SVN befinden
  • Es wird ACL angelegt, über die die Zugriffsteuerung realisiert wird

1) Pakete installieren
apt-get install subversion libapache2-svn


2) Subdomain https://svn.domain.tld einrichten
cd /etc/apache2/sites-available/
vi svn


Folgenden Text einfügen:
<VirtualHost svn.domain.tld:443>
ServerName svn.domain.tld
SSLEngine on
SSLCertificateFile /path/to/svncert/svn.crt
SSLCertificateKeyFile /path/to/svnkey/svn.key
SSLCACertificatePath /etc/ssl/certs/
SSLCACertificateFile /path/to/rootca/My-Root-CA.pem
<Location />
DAV svn
SVNParentPath /path/to/repositories/
SVNListParentPath on
</Location>
<LocationMatch /.+>
AuthType Basic
AuthName "Subversion"
AuthUserFile /path/to/passwd/svn.passwd
AuthzSVNAccessFile /path/to/authz/svn.authz
Require valid-user
SSLRequireSSL
</LocationMatch>
</VirtualHost>



3) https://svn.domain.tld aktivieren
a2ensite svn


4) Benutzer anlegen
cd /path/to/passwd/
touch svn.passwd
htpasswd -m user1 (Danach kommt Passwortabfrage)


5) ACL anlegen
cd /path/to/authz/
vi svn.autz


In diese kann man dann folgendes eintragen:

[groups]
all = admin, user1, user2, user3
g1 = user1, user2
g2 = user1, user3

[/]
* = r
admin = rw

[repo1:/]
@g1 = rw
user3 = r
* =

[repo2:/]
@g2 = rw ## Gruppe 2 darf lesen und schreiben
* = ## Der Rest darf nichts

[repo3:/]
@all = r ## Alle User dürfen das Root-Verzeichnis von repo3 lesen
admin = rw ## Der Admin darf auch schreiben
* = ## Der Rest darf nichts

[repo3:/public/]
* = r ## Alle dürfen den public Ordner lesen im repo3


6) Repositories anlegen
svnadmin --fs-type fsfs /path/to/repositories/repo1
svnadmin --fs-type fsfs /path/to/repositories/repo2
svnadmin --fs-type fsfs /path/to/repositories/repo3

Berechtigung setzen:
chown -R www-data:www-data /path/to/repositories/*
chmod -R 770 /var/svn/*


7) Apache neu laden
/etc/init.d/apache2 reload


Jetzt müsste man eine Auflistung alle Repositories unter https://svn.domain.tld finden.
Unter https://svn.domain.tld/repo1 findet man Repository 1, usw.

Freitag, 8. April 2011

sudo enviroment problem PATH

wenn ich sudo benutze hab ich nicht die gleiche PATH Variable wie als user .. was jedoch zu erwünschen wäre oder etwa nicht?

hier mal die diskussion die ich dazu ganz interesant fand:
http://stackoverflow.com/questions/257616/sudo-changes-path-why

mein visudo:
Defaults        env_reset
Defaults secure_path="/home/zeller/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Cmnd_Alias CTRL=/sbin/halt, /sbin/shutdown, /sbin/reboot, /usr/sbin/pm-suspend, /usr/sbin/pm-hibernate, /usr/sbin/pm-suspend-hybrid

root ALL=(ALL) ALL

%sudo ALL=(ALL) ALL

%admin ALL=(ALL) ALL
%admin ALL=NOPASSWD: CTRL

Defaults timestamp_timeout=10