AFP (Apple Filing Protocol) server

Apple hat die Entwicklung zu seinem File Server Protokoll leider eingestellt, es gibt aber noch eine freie Implementierung auf Linux-Basis. Da im Internet doch erstaunlich wenig zur AFP Implementation gab hier meine Konfiguration zu Netatalk.

Netatalk

Ich habe die Sourcen von der Webseite geladen und selbst compiliert. Ich habe mich für eine Installation unter /opt entschieden.

./configure --prefix=/opt/netatalk --with-init-style=debian-systemd --enable-krb4-uam --enable-krbV-uam

make

make install

Die Konfiguration ist einfach. Unter /opt/netatalk/etc liegt die Config-Datei afp.conf.

;

; Netatalk 3.x configuration file

;

 

[Global]

; Global server settings

afp interfaces = 10.10.10.9

uam list = uams_dhx.so uams_dhx2.so uams_pam.so

mimic model =  PowerMac 

file perm = 0664

directory perm = 0774

ea = auto

cnid scheme = dbd

log file = /var/log/netatalk.log

; [Homes]

; basedir regex = /xxxx

[Time Machine Volume]

path = /data/netatalk/timemachine 

time machine = yes

# vol size limit is in kB

vol size limit = 500000

valid users = tjard 

unix priv = yes

 

Die Einstellungen sind übersichtlich. 

; afp Interfaces gibt an, an welches Interface sich netatalk binden soll

afp interfaces = 10.10.10.9

; es gib unterschiedliche Möglichkeiten eine Benutzerdatenbank zu pflegen. Ich habe in meiner Lösung auch einen Samba-Domain laufen und wollte auch die Samba Konten für die Authentifikation nutzen. Alle Möglichkeiten mit LDAP und Kerberos und Netatalk haben keinen Erfolg gezeigt. Allerdings mit PAM war es letztendlich möglich.

uam list = uams_dhx.so uams_dhx2.so uams_pam.so

file perm = 0664

directory perm = 0774

ea = auto

cnid scheme = dbd

log file = /var/log/netatalk.log

Um ein Time Machine Backup Share anzulegen:

[Time Machine Volume]

path = /data/netatalk/timemachine

time machine = yes

# vol size limit is in kB

vol size limit = 500000

; die Unix User können einfach eingetragen werden. Für Samba User muss die Domain in Grossbuchstaben zusätzlich angeben werden.

valid users = tjard DOMAIN\benutzer

unix priv = yes

 

Damit ein Mac auch die Services automatisch findet, habe ich auch den avahi-deamon installiert. Für das afp Protokoll habe ich eine Konfiguration unter /etc/avahi/servicesafp.services angelegt.

<?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>

   <type>_device-info._tcp</type>

   <port>0</port>

   <txt-record>model=RackMac</txt-record>

  </service>

  <service>

   <type>_adisk._tcp</type>

   <port>9</port>

   <txt-record>sys=waMa=0,adVF=0x100,adVU=b00964c7-9931-45c8-b375-2d1390eee80c</txt-record>

   <txt-record>dk0=adVN=My Time Machine Volume,adVF=0x81</txt-record>

  </service>

</service-group>

 

Damit das Unix System auch die Samba User kennt, sind einige Arbeiten notwendig.

In Samba die smb.conf erweitern, sodass winbind gestartet wird:

winbind nss info = rfc2307

winbind trusted domains only = no

winbind use default domain = yes

winbind enum users  = yes

winbind enum groups = yes

 

Damit es funktioniert noch die Datei /etc/nsswitch.conf anpassen:

# /etc/nsswitch.conf

#

# Example configuration of GNU Name Service Switch functionality.

# If you have the `glibc-doc-reference' and `info' packages installed, try:

# `info libc "Name Service Switch"' for information about this file.

passwd:         files systemd winbind

group:          files systemd winbind

shadow:         files systemd winbind

gshadow:        files systemd

hosts:          files mdns4_minimal [NOTFOUND=return] dns

networks:       files

protocols:      db files

services:       db files

ethers:         db files

rpc:            db files

netgroup:       nis

Wenn ich jetzt nicht etwas vergessen habe, könnte ihr mit 

getent passwd

Die Benutzer anzeigen. Es sollten auch die Samba Konten angezeigt werden.

Zu guter Letzt habe ich noch unter /etc/pam.d/ die Datei netatalk angelegt:

#%PAM-1.0

auth     include common-auth

account  include common-account

password include common-password

session  include common-session

 

Ich hoffe es funktioniert nun bei euch sich mit den Linux Konten und den Samba Konten anzumelden. Wichtig bei MacOS wird die Domain nicht mit angegben.

Fragen? Nutzt das Kontaktformular und ich schaue in meiner Konfiguration nach.

Stand 6.8.2023