Openwrt + TimeMachine (afpd , avahid) 配置

近日捯饬openwrt,正好有个macbook pro , 打算在openwrt上安装 Netatalk 实现 macbook的Time Machine功能。

在实现的时候,碰到afpd无法验证账户的问题,即只能使用guest用户登录,无法通过用户名/密码登录Time Machine , 

由于Mac 在按Option开机恢复Time Machine 备份时必须使用用户密码登录,如不能实现此功能,在OS X挂了以后,

就无法通过Time Machine 恢复以前的数据。


在网上找了很多文章,都帮助不大,最后发现一篇DD-WRT论坛的文章,wmb版友的回复彻底解决了这个问题。

 以下是配置:


通过opkg 安装 netatalk 及 avahi-daemon 2个程序。

netatalk 的配置文件在: /etc/netatalk/  

需要关心的配置文件有2个: 一个是afpd.conf , 定义了netatalk 的启动信息,如验证方式,日志记录等。

                                                                  另一个是AppleVolumes.default ,  定义了AFP共享目录及每个目录对应的用户读写权限。

avahi-daemon 的配置文件在: /etc/avahi/ 

需要关心的配置也有2个:  /etc/avahi/avahi-daemon.conf  , 定义了发现服务名称等信息。

                                                                /etc/avahi/services/afpd.service , 定义afpd发现信息。



# cat afpd.conf
- -noddp -uampath /usr/lib/uams -uamlist uams_guest.so,uams_passwd.so,uams_dhx_passwd.so,uams_randnum.so,uams_dhx2.so -passwdfile /etc/netatalk/afppasswd -savepassword -passwdminlen 0 -nosetpassword -defaultvol /etc/netatalk/AppleVolumes.default -systemvol /etc/netatalk/AppleVolumes.system -nouservol -guestname "nobody" -sleep 1 -icon  -setuplog "default log_maxdebug /sda1/afpd.log"

#注解:   

#新版的OSX系统,使用dhx2和guest方式验证登陆用户 , 所以至少需要uams_guest.so 及 uams_dhx2.so ,  如需保存日志,则可在最后加上-setuplog 参数。




# cat AppleVolumes.default
-
/sda1/tmpTM Temp allow:root,nobody,tm1 cnidscheme:dbd
/sda1/TimeMachine TimeMachine allow:root,tm1,nobody rwlist:root,tm1,nobody options:tm

#注解:
#在AFP中共享出目录,格式为:   物理目录  目录名  允许使用者  允许写入者  功能选项
#这个文件中定义的用户名,就是Time Machine中的登陆名, 通过读取/etc/passwd 文件进行验证。 (后面需要对/etc/passwd文件修改)



# cat avahi-daemon.conf
[server]
host-name=TimeMachine        #发现服务主机名
enable-dbus=no
#domain-name=local
use-ipv4=yes
use-ipv6=no
check-response-ttl=no
use-iff-running=no


[publish]
publish-addresses=yes
publish-hinfo=yes
publish-workstation=no
publish-domain=yes
#publish-dns-servers=192.168.1.1
#publish-resolv-conf-dns-servers=yes


[reflector]
enable-reflector=no
reflect-ipv=no


[rlimits]
#rlimit-as=
rlimit-core=0
rlimit-data=4194304
rlimit-fsize=0
rlimit-nofile=30
rlimit-stack=4194304
rlimit-nproc=3


# cat afpd.service



Time Capsule

   _afpovertcp._tcp
  548
   

   
 _device-info._tcp
 0
model=TimeCapsule         #型号可以写TimeCapsule 或者xserver , 在OSX里面看到的文件夹图标不一样,功能一样。
 

 
  _adisk._tcp
  9
 sys=waMA=00:2c:43:eb:0a:5d,adVF=0x100          #网卡MAC地址
 dk1=adVF=0x83,adVN=TimeMachine
 



/etc/passwd文件里加入的用户是不存在密码的,所以默认情况通过passwd文件验证,永远不会成功。解决方法很简单,

将/etc/shadow文件中的密码复制到/etc/passwd里即可。


可以建多个用户,对不同用户设置AFP的TimeMachine读写权限,实现每台mac 都可以使用openwrt 提供的Time Machine服务。











# cat AppleVolumes.default
-
/sda1/tmpTM Temp allow:root,nobody,tm1 cnidscheme:dbd
/sda1/TimeMachine TimeMachine allow:root,tm1,nobody rwlist:root,tm1,nobody options:tm


你可能感兴趣的:(Linux)