User Tools

Site Tools


zh:docs:guide-user:services:nas:netatalk_configuration

AFP Netatalk 分享配置 (又名 Apple Time Machine).

(本文译自本站英文版)

Netatalk 是一个开源软件包,它可以将运行 *NIX 的电脑变成用于 Macintosh 电脑的高性能且可靠的文件服务器。相较于通过 SaMBa/NFS 来访问服务器,使用 Netatalk 提供的 AFP 3.3 兼容文件服务器带来了显著提高的传输速度,同时,也为客户端提供了最好的用户体验(完整支持 Macintosh metadata, 完美支持老式的 Mac OSOS X 客户端的混合环境)。

这篇指南将引导你通过一系列步骤在 LEDE 设备上安装必要的软件包,设置 linux 用户,来使你的 Mac 可以安全的通过网络连接到你的 Time Machine 服务器。

为了完成本篇指南,你需要先阅读下面两篇文章:

软件包安装

opkg update && opkg install avahi-utils netatalk

可选的软件包安装

这些软件包是可选的,但是建议安装。nano 让文本文件编辑变得超级简单,而 shadow 软件包使用户和组管理变得轻而易举,否则,你必须手动编辑用户、组以及设置密码。这些包的缺点是,它们会占用你宝贵的 root 分区空间。如果你的空间有限,可以考虑使用 extroot.

opkg update && opkg install nano shadow-groupadd shadow-groupmod shadow-useradd shadow-usermod

可用的 Netatalk 功能

许多 Netatalk 有用的功能,像是 Spotlight 搜索,Zeroconfig, ACLLDAP 支持都被关闭了。这或许是一个聪明的决定,因为它使得 Netatalk 更加节省空间,并提供了更广泛的硬件支持。好消息是 Time Machine 支持仍然是可用的。使用这个简单的命令 afpd -V 我们可以看到哪些功能被编译进了 Netatalk.

 afpd 3.1.10 - Apple Filing Protocol (AFP) daemon of Netatalk
  
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version. Please see the file COPYING for further information and details.
  
afpd has been compiled with support for these features:

        AFP versions: 2.2 3.0 3.1 3.2 3.3 3.4 
       CNID backends: dbd last tdb 
    Zeroconf support: No
TCP wrappers support: No
       Quota support: No
 Admin group support: Yes
  Valid shell checks: No
    cracklib support: No
          EA support: ad | sys
         ACL support: No
        LDAP support: No
       D-Bus support: No
   Spotlight support: No
       DTrace probes: No

            afp.conf: /etc/afp.conf
         extmap.conf: /etc/extmap.conf
     state directory: /var/netatalk/
  afp_signature.conf: /var/netatalk/afp_signature.conf
    afp_voluuid.conf: /var/netatalk/afp_voluuid.conf
     UAM search path: /usr/lib/uams//
Server messages path: /var/netatalk/msg/

基本文件分享配置 (Time Machine 服务器)

当前的 Netatalk 软件包 (netatalk - 3.1.10-1) 有一点小小的 posix 权限问题。

使用下面的 chmod 命令来解决这个 bug.

chmod 644 /etc/afp.conf
chmod 644 /etc/extmap.conf

afp.conf 文件包括了所有的 AFP 功能配置和 AFP 卷定义。让我们通过 nano /etc/afp.conf 来编辑文件,并设置 Time Machine 服务器;我们将在本指南中使用 nano 文本编辑器。Netatalk 有很多很棒,但没有在本教程中提到的功能。确保查看该文档来获取更多 Time Machine 选项以及其他可用的 AFP 用法:http://netatalk.sourceforge.net/3.0/htmldocs/afp.conf.5.html

;
; Netatalk 3.x configuration file
;

[Backups]
     path = /mnt/sdb1/Backups
     time machine = yes
     vol size limit = 250000
     valid users = @users

Avahi-daemon 配置

默认的 avahi-daemon 配置文件 /etc/avahi/avahi-daemon.conf 可以完美的在 LEDE 17.01.0+ 中工作,不需要更改。

[server]
#host-name=LEDE
#domain-name=local
use-ipv4=yes
use-ipv6=yes
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

:!: 这里可以了解其他配置选项 https://github.com/lathiat/avahi

Zeroconf 声明

Netatalk 的 LEDE 版本没有包含 Zeroconf 支持,所以我们必须手动声明需要的 afpovertcp, device-info, 以及 adisk text-record 属性。我们之前安装了 avahi-daemon (通过 avahi-utils) 就是为了这个目的。让我们用下面的模版创建一个服务文件:nano /etc/avahi/services/afp.service.

<?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=TimeCapsule</txt-record>
  </service>
  <service>
   <type>_adisk._tcp</type>
   <port>9</port>
   <txt-record>sys=waMa=0,adVF=0x100,adVU=00000000-AAAA-BBBB-CCCC-111111111111</txt-record>
   <txt-record>dk0=adVN=Backups,adVF=0x81</txt-record>
  </service>
</service-group>

:!: model=TimeCapsule 决定了 macOS Finder 中显示的硬件图标。还有一些可用的选项是:Xserve, PowerBook, PowerMac, Macmini, iMac, MacBook, MacBookPro, MacBookAir, MacPro, MacPro6,1, TimeCapsule, AppleTV1,1 以及 AirPort.

:!: adVU=00000000-AAAA-BBBB-CCCC-111111111111 必须被改为一个唯一生成的 UUID. 在 LEDE 中,你可以通过输入 cat /proc/sys/kernel/random/uuid 来创建一个 UUID(每次都会生成并显示一个新的 UUID)。

:!: adVN=Backups 必须和共享自 /etc/afp.conf 中的 timemachine = YES 的虚拟宗卷名称相匹配。如果你使用我上面的示例配置,将该项设置为 Backups 即可,无需更改。大多数在线教程使用 “TimeMachine”,然而 “Backups” 更经典,因为使用 macOS Server 或 Time Capsule 时,它是默认名称。不过使用什么确实无伤大雅,只要它们匹配就可以了。

一些有用的链接

https://guidgenerator.com http://www.freeformatter.com/xml-formatter.html http://netatalk.sourceforge.net/wiki/index.php/Bonjour_record_adisk_adVF_values

用户和组管理

在这一节中,为了文件分享的目的,我们将在 LEDE 系统中创建两个新的用户。创建多少随你便,过程都是一样的。同时我们还将完成下面的事情:

  • 为新用户创建 home 文件夹
  • 创建一个与新用户名字相同的组
  • 添加新用户到一个附加的组,叫作 “users”

1. 使用 mkdir /home/ 创建一个目录用于存放用户的 home 文件夹。对于大多数 Linux 发行版来说,这是默认的地方。

2. 添加新用户。在我的例子中,anne 和 brian 将被创建。他们将拥有 home 文件夹 /home/username 并成为组 usersusername 的成员。

useradd --create-home --groups users --user-group anne
useradd --create-home --groups users --user-group brian

3. 为新创建的用户设置密码。

passwd anne
passwd brian

4. 更改备份目录的权限。你需要在系统挂载的位置创建一个目录作为备份的位置。

cd /mnt/sdb1/
mkdir Backups
chmod 775 Backups/
chgrp users Backups/

5. 使用 ls -alF 检查权限变更:

root@LEDE:/mnt/sdb1# ls -alF
drwxr-xr-x    5 root     root          4096 Apr 25 18:48 ./
drwxr-xr-x    1 root     root           224 Apr 25 21:49 ../
drwxrwxr-x    2 root     users         4096 Apr 25 21:01 Backups/
drwxr-xr-x    3 root     root          4096 Apr 25 18:48 Shared/
drwx------    2 root     root         16384 Apr 25 16:35 lost+found/

:!: 因为 Netatalk 配置中的 valid users = @users 选项,users 用户组非常重要。该组中的全部成员都有拥有访问 Time Machine 服务的权限。让我们使用 grep users /etc/group 来检查哪些用户组成了 users 用户组。你应该看到一些类似我的结果的内容。

root@LEDE:~# grep users /etc/group
users:x:100:mrengles,anne,brian

当固件升级时保留配置

FIXME 我不确定本节的内容是否必须。

默认的 LEDE 固件升级程序可能不会备份我们的配置文件。这将是对于我们辛苦工作的极大浪费。

使用 echo 和命令行,将它们添加到位于 /etc/sysupgrade.conf 的自定义备份文件列表中:

echo '/etc/afp.conf ' >> /etc/sysupgrade.conf
echo '/etc/avahi/ ' >> /etc/sysupgrade.conf
echo '/etc/extmap.conf ' >> /etc/sysupgrade.conf
echo '/home/ ' >> /etc/sysupgrade.conf
echo '/var/netatalk/ ' >> /etc/sysupgrade.conf

也可以通过 LuCi > 系统 > 备份和升级 > 配置 > 备份文件列表来完成这件事。仅需在最后添加下面的内容:

/etc/afp.conf
/etc/avahi/
/etc/extmap.conf
/home/
/var/netatalk/

要获得更多信息,请查看 Upgrading LEDE from the Command Line

在 macOS 上设置 Time Machine

在 Mac 上设置 Time Machine 是一个非常简单的过程:

  • 打开 系统偏好设置 > Time Machine > 选择备份磁盘。
  • 选择 “Backups on LEDE”(加密备份也可以工作)。
  • 使用你的用户名和密码登录(即本指南之前的内容中设置的用户名和密码)

Apple 会比我更好得说明如何使用 Time Machine, 所以我就不多说了。如果你成功完成了本指南大概也就不需要帮助了。https://support.apple.com/en-us/HT201250

:!: 取决于你的存储需要,初次备份可以需要花费数个小时。

最后的想法

如果你有任何问题,请发到 LEDE 项目论坛,这样我本人和其他人才能回复。 https://forum.lede-project.org

如果你有更好的方法来完成,请更新这篇用户指南,或者帮忙修正排版和错误。:-)

zh/docs/guide-user/services/nas/netatalk_configuration.txt · Last modified: 2018/08/08 07:50 by tmomas