Forums

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • FAQ
  • Login
  • Register
  • Board index International Gentoo Users Deutsches Forum (German) Deutsche Dokumentation
  • Search

[HowTo] AFS mit MIT-Krb

Dokumentation, Tipps und Tricks.
Post Reply
  • Print view
Advanced search
3 posts • Page 1 of 1
Author
Message
Kooky
n00b
n00b
User avatar
Posts: 23
Joined: Sat Sep 10, 2005 10:20 am
Location: Mannheim

[HowTo] AFS mit MIT-Krb

  • Quote

Post by Kooky » Sat Apr 01, 2006 10:33 am

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: Select all

#/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: Select all

#/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: Select all

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: Select all

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

Code: Select all

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: Select all

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: Select all

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: Select all

echo "example.com" > /etc/openafs/server/ThisCell
Zelle in Datenbank eintragen:

Code: Select all

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: Select all

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: Select all

bos setcellname afs.example.com example.com -noauth
Überprüfen ob der Server auch der erste Datenbankserver ist

Code: Select all

bos listhosts afs.example.com -noauth


Starten der einzelnen Dienste:

Code: Select all

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: Select all

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: Select all

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: Select all

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: Select all

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: Select all

kinit afsadmin

aklog
Nun die Verzeichnisstruktur anlegen:

Code: Select all

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: Select all

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: Select all

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: Select all

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: Select all

#!/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: Select all

/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: Select all

/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: Select all

/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: Select all

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: Select all

backup
und erstellt ein Volumeset

Code: Select all

backup> addvolset -name home
backup> addvolentry -name home -server afs.example.com -partition /vicepa -volumes home..*.backup
jetzt noch euren Backupserver hinzufügen:

Code: Select all

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: Select all

backup> adddump -dump /week -expires 6d
Und nun mal testweise nen Dump ausführen:

Code: Select all

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
Top
Kooky
n00b
n00b
User avatar
Posts: 23
Joined: Sat Sep 10, 2005 10:20 am
Location: Mannheim

  • Quote

Post by Kooky » Sat Apr 08, 2006 6:12 am

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

Gruß Kooky
Top
heini
n00b
n00b
Posts: 32
Joined: Fri Sep 20, 2002 5:59 am

Re: [HowTo] AFS mit MIT-Krb

  • Quote

Post by heini » Sat Aug 26, 2006 7:00 pm

Kooky wrote:Installation:
Nettes Howto. Habe allerdings ein paar Anmerkungen.
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.

Code: Select all

#/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.
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
Top
Post Reply
  • Print view

3 posts • Page 1 of 1

Return to “Deutsche Dokumentation”

Jump to
  • Assistance
  • ↳   News & Announcements
  • ↳   Frequently Asked Questions
  • ↳   Installing Gentoo
  • ↳   Multimedia
  • ↳   Desktop Environments
  • ↳   Networking & Security
  • ↳   Kernel & Hardware
  • ↳   Portage & Programming
  • ↳   Gamers & Players
  • ↳   Other Things Gentoo
  • ↳   Unsupported Software
  • Discussion & Documentation
  • ↳   Documentation, Tips & Tricks
  • ↳   Gentoo Chat
  • ↳   Gentoo Forums Feedback
  • ↳   Duplicate Threads
  • International Gentoo Users
  • ↳   中文 (Chinese)
  • ↳   Dutch
  • ↳   Finnish
  • ↳   French
  • ↳   Deutsches Forum (German)
  • ↳   Diskussionsforum
  • ↳   Deutsche Dokumentation
  • ↳   Greek
  • ↳   Forum italiano (Italian)
  • ↳   Forum di discussione italiano
  • ↳   Risorse italiane (documentazione e tools)
  • ↳   Polskie forum (Polish)
  • ↳   Instalacja i sprzęt
  • ↳   Polish OTW
  • ↳   Portuguese
  • ↳   Documentação, Ferramentas e Dicas
  • ↳   Russian
  • ↳   Scandinavian
  • ↳   Spanish
  • ↳   Other Languages
  • Architectures & Platforms
  • ↳   Gentoo on ARM
  • ↳   Gentoo on PPC
  • ↳   Gentoo on Sparc
  • ↳   Gentoo on Alternative Architectures
  • ↳   Gentoo on AMD64
  • ↳   Gentoo for Mac OS X (Portage for Mac OS X)
  • Board index
  • All times are UTC
  • Delete cookies

© 2001–2026 Gentoo Foundation, Inc.

Powered by phpBB® Forum Software © phpBB Limited

Privacy Policy

 

 

magic