AFP

From Alessandro's Wiki

this is the protocol used for network file sharing in Apple systems (at leas for the latest ones)

server settings

user permissions

  • in /etc/netatalk/AppleVolumes.default we can set the file permissions to use for each service.
    • example: we have a network with an all-users group and we want them to be able to overwrite each-other files. Others can read:
      • umask:002
      • dperm:0775
      • fperm:0664
    • default linux behaviour, with read only to group users.
      • umask:022
      • dperm:0755
      • fperm:0644
  • the complete line:
/directory/shared/ "Awesome Share" options:usedots,upriv,noadouble,nohex cnidscheme:cdb umask:002 dperm:0775 fperm:0664

veto files

  • this option hides the objects specified between slashes
veto: recycled/desktop.ini/Folder Settings/

Volumes

  • defaults:
:DEFAULT: options:upriv,usedots,tm  umask:002 dperm:0775 fperm:0664
  • only user home with defaults:
~
  • a time machine volume (user based) :
/backup/timemachine/$u/                         "TimeMachine"  options:usedots,upriv,noadouble,nohex,tm
  • a share allowed only to some users and group "video"
/export/ingestion  "Ingest" options:usedots,upriv,noadouble,nohex cnidscheme:cdb umask:002 dperm:0775 fperm:0664 allow:ale,jack,@video

a read only share

  • we need to create an hidden folder for AppleDB files:
mkdir /share/hidden
chmod 700 /share/hidden
dbpath:/share/hidden/.AppleDB/
  • a read only share
/export/mirror/share     "Share-snapshot"  options:usedots,noadouble,nohex,ro,nocnidcache

problem solving

Finder "stucks" on connect to share

  • in the log you'll see the server stopping after a message like this:

afpd[]: Setting uid/gid to 100/100

  • the solution in my case was:
    • stop the server
    • remove the Finder database file .AppleDB
    • restart server.

when having a mirror server

  • DB becomes inconsistent due to path change (if different server) , the RSYNC command will need to exclude some files:
cat /mirror/excludes_afp
.AppleDB
.DS_Store
.AppleDesktop
.TemporaryItems
Temporary Items
  • example:

rsync -a --delete --delete-excluded --exclude-from=/mirror/excludes_afpsource_host:/intestine/ /mirror/host/

references