近日捯饬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
# 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
/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