[[Vorlage(Archiviert, )]]

{{{#!vorlage Wissen
[:Pakete_installieren: Installation von Programmen] 
[:Terminal: Ein Terminal öffnen] 
[:sudo: Root-Rechte erlangen]
[:Dienste: Dienste (neu) starten]
[:Editor: Einen Editor öffnen]
}}}
[[Inhaltsverzeichnis()]] 

[[Bild(./logo.png, 75, align=left)]]
Netatalk ist eine Implementation des Apple Filing Protocol (AFP) für Unix-Systeme. Das Protokoll ermöglicht den Dateizugriff über ein Netzwerk für (Apple-)Rechner mit den Betriebssystemen Mac OS, Mac OS X oder inzwischen [wikipedia:macOS:]. Zusätzlich lassen sich mit Netatalk auch Drucker für (Apple-)Rechner freigeben. 

Die Authentifizierung erfolgt mit Hilfe der Bibliothek '''uams_dhx2.so'''.

= Installation =
Das folgende Paket aus den offiziellen Paketquellen muss installiert werden [1]:

{{{#!vorlage Paketinstallation
netatalk, universe
}}}

== Firewall-Konfiguration ==
Falls auf der Ubuntu-Installation auch eine Firewall wie [:ufw:] installiert wurde, sollten die Ports `548` und `427` geöffnet werden, damit afpd aus dem Netzwerk erreicht werden kann. Das ist im Falle von ufw mit den folgenden Befehlen möglich [2][3]:

{{{#!vorlage Befehl
sudo ufw allow 548
sudo ufw allow 427
sudo ufw disable && sudo ufw enable
}}}
Anschließend muss der Dienst netatalk neu gestartet werden [4]. 

= Benutzung/Konfiguration =

{{{#!vorlage Experten
Ist VMWare installiert oder die von Netatalk zu benutzende Netzwerkkarte nicht `eth0`, muss die Karte in '''/etc/netatalk/atalkd.conf''' aufgeführt werden. Die Parameter für die Karte werden von Netatalk selbst gesetzt.
}}}

== Passwort-Einstellungen korrigieren ==
Um sicherzustellen, dass die Passwörter sicher zum Server übertragen werden, sollte in der '''/etc/netatalk/afpd.conf''' die folgende Zeile einkommentiert werden (also ohne '''#''' am Anfang) [5]:

{{{
- -tcp -noddp -uamlist uams_dhx2.so -nosavepassword
}}}

Damit wird für alle Standardverbindungen (erster '''-''') der TCP-Modus festgelegt und nur das Modul '''uams_dhx2.so''' zur Authentifizierung erlaubt.

Falls man SSH-Tunnel anbieten und erlauben möchte (für AFP-Verbindungen über unsichere Netzwerke sinnvoll), sollte man zusätzlich die zwei folgenden Zeilen mit in die Konfigurationsdatei '''/etc/netatalk/afpd.conf''' schreiben (wobei der Hostname als FQDN angepasst werden muss):

{{{
-advertise_ssh
-fqdn DER.HOSTNAME.DE
}}}

== Freigabeeinstellungen für afpd mit Netatalk Version 2.X==
In der Datei '''/etc/netatalk/AppleVolumes.default''' sind als Standard nur die Homeverzeichnisse der Linux-User eingetragen. Andere Verzeichnisse auf dem Server lassen sich durch das Editieren dieser Datei freigeben. 

Kommentarzeilen werden in der Datei wie üblich mit einer führenden ``#`` gekennzeichnet. Die Konfigurationszeilen sind folgendermaßen aufgebaut: 

{{{
PFAD FREIGABE-NAME OPTIONEN
}}} 

Der Pfadname muss entweder ein vollständiger oder ein per Shell-Shorthand gekürzter Pfadname auf dem Server sein. In diesen Pfad können auch Variablennamen eingebaut werden, die in der [:man:Manpage] von [man:AppleVolumes.default:] {en} beschrieben werden. 

Der Freigabe-Name erscheint nach dem ''"Mit Server verbinden"''-Dialog von Mac OS X als Laufwerk-Name des Servers. Wenn der Freigabe-Name Leerzeichen enthält, muss er in Anführungszeichen stehen. Der Freigabe-Name darf nicht länger als 27 Zeichen sein und darf keinen Doppelpunkt (`:`) enthalten. Jede Freigabe muss in einer eigenen Zeile stehen. 

Es gibt eine Vielzahl von Optionen, die sich für jede Freigabe separat setzen lassen. Die wichtigsten Optionen werden hier beschrieben.

{{{#!vorlage Tabelle
<-2 rowclass="titel"> netatalk-Optionen
+++
<rowclass="kopf"> Option
Funktion
+++
`allow:[Benutzer/Gruppen]` 
Mit dieser Option werden Unix-Benutzer und -Gruppen zur Nutzung der Freigabe zugelassen. Benutzer- und Gruppennamen sind per Komma voneinander getrennt. Gruppennamen werden mit einem @ eingeleitet. Beispiel: allow:benutzer1,benutzer2,@gruppe 
+++
`deny:[Benutzer/Gruppen]` 
Mit dieser Option werden Unix-Benutzer und -Gruppen von der Nutzung der Freigabe ausgeschlossen. Format wie unter allow. 
+++
`preexec:[Befehl]`
Mit dieser Option kann ein Befehl angegeben werden, der ausgeführt wird, wenn die Freigabe gemountet wird. 
+++
`postexec:[Befehl]` 
Mit dieser Option kann ein Befehl angegeben werden, der ausgeführt wird, wenn die Freigabe geschlossen wird. 
+++
`root_preexec:[Befehl]` 
Mit dieser Option kann ein Befehl angegeben werden, der als root ausgeführt wird, wenn die Freigabe gemountet wird. 
+++
`root_postexec:[Befehl]` 
Mit dieser Option kann ein Befehl angegeben werden, der als root ausgeführt wird, wenn die Freigabe geschlossen wird. 
+++
`veto:[Veto-Name]` 
Mit dieser Option werden Dateien und Verzeichnisse nicht angezeigt, deren (Teil-)Pfad mit dem Veto-Namen übereinstimmt. Mehrere Veto-Namen können mit / aneinander gehängt werden. Beispiel: Wenn der Dateipfad '''/abc/def/dateiname''' lautet wird mit der Option `veto:/abc/` die Datei nicht angezeigt. 
}}}

== Beispiel ==
=== Freigabe für Apple Time Machine ===
Sehr praktisch für Benutzer eines Apple unter Mac OS X ist die Möglichkeit, mit netatalk (und dem darin enthaltenen afpd) ein "TimeMachine Volume" im Netzwerk anzubieten, auf dem mit dem Apple-Programm "Time Machine" eine automatische Datensicherung stattfinden kann. Dazu muss wie oben beschrieben eine zusätzliche Freigabe mit der Option ''"tm"'' erstellt werden.

So kann der Datei '''/etc/netatalk/AppleVolumes.default''' z.B. die folgende Zeile hinzugefügt werden:

{{{
/pfad/zum/sicherungsordner TimeMachine options:tm,usedots,upriv
}}}

Anschließend `afpd` neu starten, um die geänderte Konfiguration zu übernehmen. Dann kann das Volume in Mac OS X nach dem Verbinden zum afpd-Server als Backup-Volume genutzt werden.


== Freigabeeinstellungen für afpd mit Netatalk Version 3.X==
In der Datei '''/etc/netatalk/afp.conf''' sind als Standard keine Verzeichnisse freigegeben. Verzeichnisse auf dem Server lassen sich durch das Editieren dieser Datei freigeben. 

Kommentarzeilen werden in der Datei mit einer führenden ``;`` oder ``#`` gekennzeichnet. Die Konfigurationszeilen sind folgendermaßen aufgebaut: 

{{{
[FREIGABE-NAME]
path = PFAD
OPTIONEN
}}} 

Der Pfadname muss entweder ein vollständiger oder ein per Shell-Shorthand gekürzter Pfadname auf dem Server sein. In diesen Pfad können auch Variablennamen eingebaut werden, die in der [:man:Manpage] von [man:afp.conf:] {en} beschrieben werden.

Der Freigabe-Name erscheint nach dem ''"Mit Server verbinden"''-Dialog von Mac OS X als Laufwerk-Name des Servers. Jede Freigabe muss in einer neuen Zeile beginnen. 

== Beispiel ==
=== Freigabe für Apple Time Machine ===
Sehr praktisch für Benutzer eines Apple unter Mac OS X ist die Möglichkeit, mit netatalk (und dem darin enthaltenen afpd) ein "TimeMachine Volume" im Netzwerk anzubieten, auf dem mit dem Apple-Programm "Time Machine" eine automatische Datensicherung stattfinden kann. Dazu muss wie oben beschrieben eine zusätzliche Freigabe mit der Option ''"time machine = yes"'' erstellt werden.

So kann der Datei '''/etc/netatalk/afp.conf''' z.B. die folgenden Zeilen hinzugefügt werden:

{{{
[My Time Machine Volume]
path = /path/to/backup
time machine = yes
}}}

Anschließend `afpd` neu starten, um die geänderte Konfiguration zu übernehmen. Dann kann das Volume in Mac OS X nach dem Verbinden zum afpd-Server als Backup-Volume genutzt werden.



== Erweiterung ==
Richtig komfortabel wird die Netzwerk-Freigabe für Mac OS X im Zusammenspiel von Netatalk mit [:Avahi:Bonjour] (Zeroconf) – eine Technik, die die automatische Erkennung von Computern, Geräten und verschiedenen Netzwerkdiensten in IP-Netzen bereitstellt. 

Dafür wird Folgendes in die Datei '''/etc/avahi/services/afpd.service''' eingetragen: 

{{{#!code xml
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
  <name replace-wildcards="yes">%h</name>
  <service>
    <type>_afpovertcp._tcp</type>
    <port>548</port>
  </service>
</service-group>
}}}
Anschließend muss der Dienst `avahi-daemon` neu gestartet werden und der Server erscheint automatisch auf den Mac OS X-Rechnern unter Netzwerk. 

= Links =
 * [sourceforge2:netatalk:Projektseite] {en} 
 * [wikipedia:Apple_Filing_Protocol:Artikel zum Apple Filing Protocol] 

# tag: Netzwerk, Server