Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[HowTo] AFS mit MIT-Krb
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Deutsche Dokumentation
View previous topic :: View next topic  
Author Message
Kooky
n00b
n00b


Joined: 10 Sep 2005
Posts: 23
Location: Mannheim

PostPosted: Sat Apr 01, 2006 10:33 am    Post subject: [HowTo] AFS mit MIT-Krb Reply with quote

Installation:

Zunächst OpenAFS und MIT-Krb5 installieren:
emerge -av openafs openafs-kernel mit-krb5
(bei den use-flags bitte darauf achten, daß ihr den krb4 Support drin habt, da OpenAFS irgendeine abgewandelte Form der 4er Tickets benutzt)

Konfiguration:

Kerberos:
Zunächst solltet ihr eure kdc.conf anpassen (zu finden in /etc/krb5kdc/kdc.conf )
ich benutze in disem Beispiel den Realm EXAMPLE.COM (bitte bei euch jeweils in die Domain !in Großbuchstaben! ändern)

Code:

#/etc/krb5kdc/kdc.conf

[kdcdefaults]
kdc_ports = 750,88

[realms]
EXAMPLE.COM = {
database_name = /var/lib/krb5kdc/principal
admin_keytab = /etc/krb5kdc/kadm5.keytab
acl_file = /etc/krb5kdc/kadm5.acl
key_stash_file = /etc/krb5kdc/stash
kdc_ports = 750,88
max_life = 10h 0m 0s
max_renewable_life = 8d 0h 0m 0s
master_key_type = des3-hmac-sha1
supported_enctypes = des3-hmac-sha1:normal des-cbc-crc:normal de
s:normal des:v4 des:norealm des:onlyrealm des:afs3
default_principal_flags = +preauth
}
[logging]
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmin.log
default = FILE:/var/log/krb5lib.log



Nun den Kerberos Client:

Code:

#/etc/krb5.conf

[libdefaults]
default_realm = EXAMPLE.COM

[realms]
EXAMPLE.COM = {
kdc = krb.example.com:88
admin_server = krb.example.com:749
default_domain = example.com
}

[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM

[kdc]
profile = /etc/krb5kdc/kdc.conf



Bitte auch hier EXAMPLE.COM durch eure Domain ersetzen und den Namen eures Kerberos-Servers einsetzen (im Beispiel: krb.example.com)

Initialisieren der Datenbank:
Zunächst initialisieren wir mal die Kerberos Datenbank:

Code:

kdb5_util create -s


Nun geht es ans anlegen der User, wir brauchen zunächst einen User (Principal) für den Admin (der auch später Admin fürs AFS wird) und einen User für AFS (für alle die nicht wissen was das Tolle an Kerberos ist lege ich nahe sich mal die MIT Seite durchzulesen)

Also als erstes gehen wir in die *interaktive* Kerberos Console:

Code:

kadmin.local


Dort fügen wir als erstes den Admin für AFS hinzu:

Code:

kadmin.local: ank afsadmin

kadmin.local: ank -randkey afs


(ank ist die Kurzform von addprinc, was wiederum die Kurzform von add_principal, was wiederum darauf schließen läßt, daß die Leute beim Programmieren zuviel Zeit hatten)

So nun haben wir in der Kerberos Datenbank zwei Principal stehen, jetzt müssen wir nur noch dem AFS seinen Schlüssel geben.

Nun lass ich den *interaktiven* Modus mal weg und extrahiere den Schlüssel in die Datei /etc/krb5.keytab.afs. Leider versteht AFS nicht alle Schlüssel (soweit ich weiß, bitte verbessern wenns anderster sein sollte)

Code:

kadmin.local -q "ktadd -e des-cbc-crc:afs3 -k /etc/krb5.keytab.afs afs"


Jetz müssen wir nur noch AFS sagen, daß das auch sein Schlüssel ist:

Code:

kadmin.local -q "getprinc afs"

asetkey add 3 /etc/krb5.keytab.afs afs


(Die Zahl 3 kommt von der "Key: vno" aus "getprinc afs", es kann auch sein, daß ihr eine andere Zahl bekommt, also bitte darauf achten)

Jetzt dürfte die Konfiguration von Kebreros abgeschlossen sein und ihre könnt die einzelnen Dienste für Kerberos starten.

Openafs:
Jetzt wirds endlich interessant.
Zunächst überprüft, daß kein AFS Dienst am Laufen ist "ps ax | grep bos", wenn doch killt ihn!

Konfiguration:
Setzen des Zellnamen

Code:

echo "example.com" > /etc/openafs/server/ThisCell


Zelle in Datenbank eintragen:

Code:

echo ">example.com #Example Cell" > /etc/openafs/server/CellServDB
echo "192.168.1.1 #afs.example.com" >> /etc/openafs/server/CellServDB


!ACHTUNG! "#" ist in diesem Fall KEIN Kommentarzeichen!!!!!


Starten wir den Bosserver:

Code:

bosserver -noauth


Das -noauth bewirkt, daß er keine Authentifizierung verlangt. (Aus Sicherheitsgründen sollten alle Netzwerkkabel vom Server abgeklemmt werden, solltet ihr das ganze per SSH machen ist das natürlich eine schlechte Idee *g*)

Setzen der Zelle:

Code:

bos setcellname afs.example.com example.com -noauth


Überprüfen ob der Server auch der erste Datenbankserver ist

Code:

bos listhosts afs.example.com -noauth




Starten der einzelnen Dienste:

Code:

bos create server buserver simple /usr/libexec/openafs/buserver -cell example.com -noauth

bos create server ptserver simple /usr/libexec/openafs/ptserver -cell example.com -noauth

bos create server vlserver simple /usr/libexec/openafs/vlserver -cell example.com -noauth



Ich habe hier ebenfalls den Backup Server gestartet, dazu komme ich aber später.

Aber erstmal zu dem Rest, also falls einige schon Dokus über AFS gelesen haben, dann werden sie vielleicht den kaserver vermissen. Stimmt, den starten wir nicht, da wir ja Mit-Kerberos benutzen wollen.
Die anderen beiden Dienste (vlserver und ptserver) sind zum einen der Volumen Location Server, der für die einzelnen Volumen verantwortlich ist, und der Protection Server, der für die Zugriffsberechtigung zuständig ist.

Erstellung des ersten Users:
Der Admin, den wir vorhin in Kerberos erstellt haben, wird nun auch in AFS erstellt:

Code:

pts createuser -name afsadmin -cell texample.com -noauth

pts adduser afsadmin system:administrators -cell example.com -noauth

pts membership afsadmin -cell example.com -noauth

bos adduser afs.example.com afsadmin -noauth



So nun haben wir den User einmal in die normale Userdatenbank des AFS eingefügt, sowie den User gleich mal der Gruppe system:administrators hinzugefügt und ihn als User beim BOS eingetragen.

Jetzt starten wir noch die restlichen Dienste:

Code:

bos create afs.example.com fs fs /usr/libexec/openafs/fileserver usr/libexec/openafs/volserver /usr/libexec/openafs/salvager -cell example.com -noauth


Bosserver herrunter fahren:

Code:

bos shutdown afs.example.com -noauth


Nun brauchen wir natürlich noch eine (oder zwei oder drei oder..) Partition für unser AFS wo später die Daten rumliegen. Die Partition sollte ext2 als Dateisystem haben, ob ext3 geht habe ich nie getestet und was anderes benutz ich eh nicht.
Die Partition solltet ihr nun nach /vicepa mounten (jede weitere dann nach /vicepb, /vicepc usw.)

Sollte das Verzeichnis /afs noch nicht angelegt worden sein, einfach ein:

Code:

mkdir /afs


machen

Ok, ich hoffe ich hab nix ausgelassen und wir können nun erstmal nen Kaffe machen und tiiieeef Luft holen.

Starten des AFS:

Nun startet ihr den Openafs Server und Client über /etc/init.d/<welchen Namen sich die Mantainer heute mal ausgedacht haben>-server start (selbiges für den Client)

(Achtet darauf, dass der Kerberos Server auch läuft!!)

In der Theorie sollte nun alles laufen.

Zuerst einmal anmelden, da ja nun der Bosserver ohne das -noauth flag läuft:

Code:

kinit afsadmin

aklog


Nun die Verzeichnisstruktur anlegen:

Code:

vos create afs.example.com /vicepa root.afs -cell example.com

vos create afs.example.com /vicepa root.cell -cell example.com

vos create afs.example.com /vicepa home -cell example.com



Ich habe mein home-Volumen mal "home" genannt, diesen Namen verwende ich auch in späteren Scripten usw.

Mountpoints und Replika erstellen:

Code:

cd /afs

fs mkm /afs/example.com root.cell

fs mkm /afs/.example.com root.cell -rw

vos addsite afs.example.com /vicepa root.afs

vos release root.afs

vos addsite afs.example.com /vicepa root.cell

fs mkm /afs/.example.com/home home

vos release root.cell

vos addsite afs.example.com /vicepa home

vos release home

fs checkvolumes

fs sa /afs system:anyuser l

fs sa /afs/example.com system:anyuser l


So was haben wir nun gemacht, wir haben erstmal den Mountpoint von root.cell ins /afs gelegt und ein einen zweiten worauf mit Schreibberechtigung zugegriffen werden kann. Ausserdem haben wir Read-Only Replika erzeugt und die Zugriffrechte für /afs und /afs/example.com für jeden auf lesen gesetzt.
Wegen den einzelnen Befehlen solltet ihr am besten mal "fs help" und "vos help" eingeben.

Nun solltet ihr eigentlich in der Lage sein, in das Verzeichnis /afs/example.com/home zu wechseln

Benutzer anlegen:

Um einen Benutzer anzulegen, muß dieser in Kerberos eingetragen werden und in AFS:

Code:

kadmin.local -q "addprinc <user>"

pts createuser <user> -id <uid>

pts adduser <user> -group <group>


Solltet ihr noch keine Gruppe für eure User haben, erstellt einfach eine mit "pts creategroup <group>"

!ACHTUNG! die <uid> des Users sollte mit der uid des Users im normalen System übereinstimmen, am besten ihr benutzt LDAP oder erstellt auf jedem Rechner den selben benutzen (wird auf dauer vielleicht *etwas* anstrengend)

Nun erstellen wir noch für den User das Verzeichnis:

Code:

vos create afs.example.com /vicepa home.<user> -maxquota 0

fs mkm /afs/.example.com/home/<user> home.<user>

fs sa /afs/.example.com/home/<user> <user> all

vos release home

fs checkvolumes

vos backup home.<user>

fs mkm /afs/example.com/home/<user>/.backup home.<user>.backup


Am besten ihr macht daraus ein Bash script ;)
Aber nun kurz zur Erklärung, also als erstes erstellt ihr für den User ein Volumen mit maxquota 0 (unendlich bzw. bis die Platte voll ist, ihr könnt aber auch einen exakten Wert nehmen), dieses mountet ihr dann ins home und setzt die ACL "all" drauf. Danach übernehmen wir die Änderung am home Volumen wieder ins Read-Only Replika checken das Filesystem auf Fehler und erstellen ein Backup Volumen vom jeweiligen User Verzeichnis und mounten das wiederum ins verzeichnis ~/.backup

Um die Sache mit dem Backup ein bißchen zu automatisieren hab ich hier mal ein total schlechtes Bashscript vorbereitet:

Code:

#!/bin/sh
vos listvol afs.example.com -localauth | sed 's/ .*//' | grep -e ^home | grep -v -e home$ -e readonly$ -e backup$ > /root/backupvol
exec < /root/backupvol
while read line
do
echo "Creating Backup of $line"
vos backup $line -localauth
echo "done"
done


das ganze kann man nun in nen Crontab packen und jede Nacht durchlaufen lassen.

Jetz können wir uns noch dem anderen Backup widmen, ihr erinnert euch an den buserver den wir irgendwo da oben mal gestartet haben, den wollen wir nun nutzen.

Aber zunächst wollen wir den Tape Coordinator Prozess mal einstellen.
Die erste Frage die sich wohl jedem stellt ist, was ist ein Tape und hab ich sowas? Die Antwort dürfte "nö" sein, ich kenne kein Schwein, dass ein Tape zu hause hat geschweige einen Bandroboter, also wenn ihr nicht gerade in nem Rechenzentrum arbeitet, werdet ihr sowas nicht haben. Aber das macht nichts ;) wir haben ja unsere normalen Platten auf die wir unser Backup packen können.

also geht mal ins Verzechnis /var/lib/openafs
dort erstellt ihr den Ordner "backup" und folgende Dateien:

Code:

/var/lib/openafs/backup/tapeconfig

1GB 0 /dev/FILE 0


die 1GB ist die Größe eures Tapes (also der freie Speicherplatz auf eurer Backup Platte) ich hoffe ihr habt aber mehr platz 200GB wäre gut, je nachdem was ihr backupen wollt.

nun erstellen wir unser Tape, wie ihr oben seht benutze ich das device /dev/FILE als Tape, nun erstelle ich für dieses "Tape" eine config file:

Code:

/var/lib/openafs/backup/CFG_FILE

FILE YES
MOUNT /root/afsbackup
UNMOUNT /root/afsbackup
NAME_CHECK No
ASK No


In dieser Config File sag ich dem Tape Coordinator, dass das Backup Tape in Wirklichkeit eine Datei ist "FILE YES" und gebe ihm den Pfad zu einem Script an, das er ausführen soll, wenn er sozusagen ein Tape mounten bzw. unmounten will, ausserdem soll er keinen Name check durchführen und nach nem Tape wechsel will ich auch nicht gefragt werden (will das ja später automatisch machen)

Alles was jetzt noch fehlt ist das Mount/Unmount Script, welches ich von der OpenAFS Doku habe.

Code:

/root/afsbackup

#! /bin/csh -f
set devicefile = $1
set operation = $2
set tries = $3
set tapename = $4
set tapeid = $5
set exit_continue = 0
set exit_abort = 1
set exit_interactive = 2
#--------------------------------------------
if (${tries} > 1) then
echo "Too many tries"
exit ${exit_interactive}
endif
if (${operation} == "labeltape") then
echo "Won't label a tape/file"
exit ${exit_abort}
endif
if ((${operation} == "dump") |\
(${operation} == "appenddump") |\
(${operation} == "restore") |\
(${operation} == "savedb") |\
(${operation} == "restoredb")) then
/bin/rm -f ${devicefile}
/bin/ln -s /pfad/zum/backup/${tapename}_${tapeid} ${devicefile}
if (${status} != 0) exit ${exit_abort}
endif


exit ${exit_continue}


Jetzt können wir mal den Tape Coordinator starten:

Code:

butc -localauth


Am besten ihr startet ihn in einer neuen Console oder gleich über "screen" was am einfachsten geht.

Ok nun müssen wir nur noch AFS sagen, was er backupen soll, dazu geht ihr in die *interaktive" Backup Console:

Code:

backup


und erstellt ein Volumeset

Code:

backup> addvolset -name home
backup> addvolentry -name home -server afs.example.com -partition /vicepa -volumes home..*.backup


jetzt noch euren Backupserver hinzufügen:

Code:

backup> addhost -tapehost afs.example.com -portoffset 0


Und nun könnt ihr noch eure Dumplevels einstellen, ich mache hier jetzt mal nur eins:

Code:

backup> adddump -dump /week -expires 6d


Und nun mal testweise nen Dump ausführen:

Code:

backup> dump -volumeset home -dump /week -portoffset 0


Solltet ihr fragen haben, einfach posten oder mit ne mail an kooky@madkooky.de schreiben.

Dieser Beitrag darf nicht von anderen Seiten verlinkt werden ausserdem darf der Ausdruckt nur als Untersetzer für Kaffeetassen benutzt werden.
Rechtschreib und Grammatikfehler unterliegen der GPL3 und dürfen in anderen Texten verwendet werden
Back to top
View user's profile Send private message
Kooky
n00b
n00b


Joined: 10 Sep 2005
Posts: 23
Location: Mannheim

PostPosted: Sat Apr 08, 2006 6:12 am    Post subject: Reply with quote

Dieses Howto befindet sich nun auch auf http://de.gentoo-wiki.com/OpenAFS_mit_MIT-Kerberos5 und wird dort weiter bearbeitet

Gruß Kooky
Back to top
View user's profile Send private message
heini
n00b
n00b


Joined: 20 Sep 2002
Posts: 32

PostPosted: Sat Aug 26, 2006 7:00 pm    Post subject: Re: [HowTo] AFS mit MIT-Krb Reply with quote

Kooky wrote:
Installation:


Nettes Howto. Habe allerdings ein paar Anmerkungen.

Quote:
Zunächst OpenAFS und MIT-Krb5 installieren:
emerge -av openafs openafs-kernel mit-krb5
(bei den use-flags bitte darauf achten, daß ihr den krb4 Support drin habt, da OpenAFS irgendeine abgewandelte Form der 4er Tickets benutzt).


krb4 ist ab OpenAFS 1.4 nicht mehr nötig.

Quote:

Code:

#/etc/krb5kdc/kdc.conf
...
acl_file = /etc/krb5kdc/kadm5.acl
...



Egal was ich mache, acl_file hat keine Wirkung und wird in /var/lib/krb5kdc erwarted.

Quote:

Nun brauchen wir natürlich noch eine (oder zwei oder drei oder..) Partition für unser AFS wo später die Daten rumliegen. Die Partition sollte ext2 als Dateisystem haben, ob ext3 geht habe ich nie getestet und was anderes benutz ich eh nicht.


Für die /vicepX Partitionen kann jedes bel. Linux Filesystem verwendet werden. Nur die Cachepartition für den Client muß zwingend ext2 sein.

Bye...

Dirk
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Deutsche Dokumentation All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum