sabato 3 marzo 2012

Installare un server Subversion - Parte 1

L'obiettivo di questo post è descrivere l'installazione e la configurazione di un server subversion. Ci sono già in giro decine di guide a riguardo, perché un'altra?
Beh, molte di queste, seppure funzionanti, non danno suggerimenti proprio ortodossi: alcune richiedono di rinominare eseguibili (svnserve) per crearne dei wrapper; alcune suggeriscono di creare un server sempre attivo, con password salvate in chiaro e (ops...) con trasmissione dei dati in chiaro; altre suggeriscono di creare coppie di chiavi pubblica/privata rigorosamente senza password, lasciando credere che non sia possibile utilizzare una chiave protetta da password. Beh, come vedremo, non è così.
Inoltre, nella maggior parte dei casi, richiedono di creare un nuovo utente (con tanto di home) sul server per ogni utente di subversion. Questo può anche non essere un grosso problema se abbiamo pochi utenti. Ma se fossero decine, o centinaia?
Eviteremo anche di usare l'autenticazione tramite apache, non perché non vada bene ma semplicemente per ridurre i requisiti minimi. Ci piace installare solo lo stretto necessario sul nostro server, giusto?

Oggi cominciamo con l'installazione di subversion su un server linux. Usiamo Debian stable (ad oggi: Squeeze), ma quello che faremo si applica con minime modifiche a tutte le distribuzioni.


Installazione

Su Debian, per installare subversion, occorre digitare l'esoterico comando:

apt-get install subversion

avendo cura di farlo dall'utente root o tramite sudo, se lo avete configurato.

Definiamo l'utente dedicato a subversion. Su debian, possiamo usare lo script "adduser", che si occupa di creare anche una home directory e di impostare la password.

Sempre da root/sudo, digitiamo:

adduser subversion

impostiamo la password, il "Full Name" se ne abbiamo voglia.
Dovremmo ottenere una output di questo tipo:

root@homeserver:~# adduser subversion
Adding user `subversion' ...
Adding new group `subversion' (1003) ...
Adding new user `subversion' (1004) with group `subversion' ...
Creating home directory `/home/subversion' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for subversion
Enter the new value, or press ENTER for the default
Full Name []: Subversion Administrator
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y

Ottimo. D'ora in poi non avremo più bisogno dell'utente privilegiato (root o accesso tramite sudo). Non ci serve più l'amministratore del server, che quindi può essere svincolato dall'amministratore di Subversion. Come vedremo, non ci servirà più nemmeno per creare i nuovi utenti dei nostri repository di Subversion.

Colleghiamoci al server con il nuovo utente (se siete sul server stesso, potete fare logout e riconnettervi con le nuove credenziali; se vi collegate da remoto basta aprire una nuova sessione ssh. Se utilizzate PuTTY da Windows, rimuovete il flag "Attempt authentication using Pageant" e salvate la sessione. Questo dovrà rimanere il nostro account di amministrazione di subversion).

Il server di subversion sarà utilizzato solo dall'utente subversion, quindi non c'è ragione che i files abbiano maggiori privilegi. Digitiamo quindi

umask 0077

e restringiamo l'accesso dei nuovi file/directory che creeremo al solo utente subversion.
Mettiamo anche quest'ultima istruzione nel file .bashrc, così che non dovremo ogni volta ricordarci di fare questa operazione. Digitiamo quindi:

echo umask 0077 >> ~/.bashrc

Creiamo ora la directory che ospiterà i repository subversion. Chiamiamola "repo".

mkdir ~/repo

e entriamoci

cd ~/repo


Creazione del repository

Ora creiamo il nostro primo repository. Lo potremmo chiamare "Repo01", digitiamo quindi:

svnadmin create ~/repo/Repo01

Se avete eseguito correttamente tutte le operazioni, digitando

ls -la ~/repo/Repo01

dovreste ottenere:

subversion@homeserver:~/repo/Repo01$ ls -la ~/repo/Repo01
total 32
drwx------ 6 subversion subversion 4096 Mar 3 00:23 .
drwx------ 3 subversion subversion 4096 Mar 3 00:22 ..
drwx------ 2 subversion subversion 4096 Mar 3 00:22 conf
drwx--S--- 6 subversion subversion 4096 Mar 3 00:23 db
-r-------- 1 subversion subversion 2 Mar 3 00:23 format
drwx------ 2 subversion subversion 4096 Mar 3 00:22 hooks
drwx------ 2 subversion subversion 4096 Mar 3 00:22 locks
-rw------- 1 subversion subversion 229 Mar 3 00:22 README.txt

C'è qualche simbolo "S" nei permessi, servono nel caso di voglia permettere l'accesso al repository a più utenti linux, che appartengano allo stesso gruppo. A noi non servirà. Se desiderate eliminare questa concessione, digitate:

chmod g-rwxs -R ~/repo/Repo01/*

Ricontrollate con il comando precedente: i flag "S" dovrebbero essere spariti.

Ok, per la prima parte è sufficiente.
Abbiamo:

1) Installato subversion
2) Creato l'utente amministratore e ristretto i permessi di accesso dei file da esso creati.
3) Creato il primo repository.

A domani per la Parte 2.


2 commenti:

Anonimo ha detto...

Posso creare i repository su una nas ?

SmallHomeNetworkArchitect ha detto...

Sui nas commerciali non so, dipende dal loro sistema di gestione dei pacchetti.
Il mio server di fatto è un NAS, quindi in generale la risposta è sì.