RHEL9で作る自宅サーバ:ファイルサーバの構築 その2

RHEL9パソコンファイルサーバ自宅サーバ

今回はMac用のファイルサーバ netatalkをインストールします。

20年ぐらい前に使っていたMacOS8.6環境を仮想マシンで動かしているので、必要なんです。

netatalkの情報が少なくなっていますが、一番頼りになるHATさんのページをアーカイブから掘り起こして、参考にさせていただきました!

パッケージのインストール

RHEL9にパッケージがあるのでこれでインストールします。

[root@ace ~]# rpm -qa|grep netatalk
[root@ace ~]# dnf install netatalk
サブスクリプション管理リポジトリーを更新しています。
メタデータの期限切れの最終確認: 1:19:25 前の 2024年02月08日 15時59分31秒 に実施 しました。
依存関係が解決しました。
================================================================================
 パッケージ        Arch   バージョン     リポジトリー                     サイズ
================================================================================
インストール:
 netatalk          x86_64 5:3.1.18-1.el9 epel                             527 k
依存関係のインストール:
 dbus-glib         x86_64 0.110-13.el9   rhel-9-for-x86_64-appstream-rpms 126 k
 dconf             x86_64 0.40.0-6.el9   rhel-9-for-x86_64-appstream-rpms 117 k
 mariadb-connector-c
                   x86_64 3.2.6-1.el9_0  rhel-9-for-x86_64-appstream-rpms 203 k
 mariadb-connector-c-config
                   noarch 3.2.6-1.el9_0  rhel-9-for-x86_64-appstream-rpms  11 k
 perl-AutoLoader   noarch 5.74-480.el9   rhel-9-for-x86_64-appstream-rpms  23 k
 perl-B            x86_64 1.80-480.el9   rhel-9-for-x86_64-appstream-rpms 185 k
 perl-Carp         noarch 1.50-460.el9   rhel-9-for-x86_64-appstream-rpms  31 k
 perl-Class-Struct noarch 0.66-480.el9   rhel-9-for-x86_64-appstream-rpms  24 k
 perl-Data-Dumper  x86_64 2.174-462.el9  rhel-9-for-x86_64-appstream-rpms  59 k
 perl-Digest       noarch 1.19-4.el9     rhel-9-for-x86_64-appstream-rpms  29 k
 perl-Digest-MD5   x86_64 2.58-4.el9     rhel-9-for-x86_64-appstream-rpms  39 k
 perl-Encode       x86_64 4:3.08-462.el9 rhel-9-for-x86_64-appstream-rpms 1.7 M
 perl-Errno        x86_64 1.30-480.el9   rhel-9-for-x86_64-appstream-rpms  17 k
 perl-Exporter     noarch 5.74-461.el9   rhel-9-for-x86_64-appstream-rpms  34 k
 perl-Fcntl        x86_64 1.13-480.el9   rhel-9-for-x86_64-appstream-rpms  23 k
 perl-File-Basename
                   noarch 2.85-480.el9   rhel-9-for-x86_64-appstream-rpms  19 k
 perl-File-Path    noarch 2.18-4.el9     rhel-9-for-x86_64-appstream-rpms  38 k
 perl-File-Temp    noarch 1:0.231.100-4.el9
                                         rhel-9-for-x86_64-appstream-rpms  63 k
 perl-File-stat    noarch 1.09-480.el9   rhel-9-for-x86_64-appstream-rpms  19 k
 perl-FileHandle   noarch 2.03-480.el9   rhel-9-for-x86_64-appstream-rpms  17 k
 perl-Getopt-Long  noarch 1:2.52-4.el9   rhel-9-for-x86_64-appstream-rpms  64 k
 perl-Getopt-Std   noarch 1.12-480.el9   rhel-9-for-x86_64-appstream-rpms  17 k
 perl-HTTP-Tiny    noarch 0.076-461.el9  rhel-9-for-x86_64-appstream-rpms  57 k
 perl-IO           x86_64 1.43-480.el9   rhel-9-for-x86_64-appstream-rpms  94 k
 perl-IO-Socket-IP noarch 0.41-5.el9     rhel-9-for-x86_64-appstream-rpms  45 k
 perl-IO-Socket-SSL
                   noarch 2.073-1.el9    rhel-9-for-x86_64-appstream-rpms 223 k
 perl-IPC-Open3    noarch 1.21-480.el9   rhel-9-for-x86_64-appstream-rpms  25 k
 perl-MIME-Base64  x86_64 3.16-4.el9     rhel-9-for-x86_64-appstream-rpms  34 k
 perl-Math-BigInt  noarch 1:1.9998.18-460.el9
                                         rhel-9-for-x86_64-appstream-rpms 194 k
 perl-Math-BigRat  noarch 0.2614-460.el9 rhel-9-for-x86_64-appstream-rpms  41 k
 perl-Math-Complex noarch 1.59-480.el9   rhel-9-for-x86_64-appstream-rpms  49 k
 perl-Mozilla-CA   noarch 20200520-6.el9 rhel-9-for-x86_64-appstream-rpms  14 k
 perl-Net-SSLeay   x86_64 1.92-2.el9     rhel-9-for-x86_64-appstream-rpms 392 k
 perl-POSIX        x86_64 1.94-480.el9   rhel-9-for-x86_64-appstream-rpms  99 k
 perl-PathTools    x86_64 3.78-461.el9   rhel-9-for-x86_64-appstream-rpms  92 k
 perl-Pod-Escapes  noarch 1:1.07-460.el9 rhel-9-for-x86_64-appstream-rpms  22 k
 perl-Pod-Perldoc  noarch 3.28.01-461.el9
                                         rhel-9-for-x86_64-appstream-rpms  92 k
 perl-Pod-Simple   noarch 1:3.42-4.el9   rhel-9-for-x86_64-appstream-rpms 229 k
 perl-Pod-Usage    noarch 4:2.01-4.el9   rhel-9-for-x86_64-appstream-rpms  43 k
 perl-Scalar-List-Utils
                   x86_64 4:1.56-461.el9 rhel-9-for-x86_64-appstream-rpms  77 k
 perl-SelectSaver  noarch 1.02-480.el9   rhel-9-for-x86_64-appstream-rpms  13 k
 perl-Socket       x86_64 4:2.031-4.el9  rhel-9-for-x86_64-appstream-rpms  58 k
 perl-Storable     x86_64 1:3.21-460.el9 rhel-9-for-x86_64-appstream-rpms  98 k
 perl-Symbol       noarch 1.08-480.el9   rhel-9-for-x86_64-appstream-rpms  16 k
 perl-Term-ANSIColor
                   noarch 5.01-461.el9   rhel-9-for-x86_64-appstream-rpms  51 k
 perl-Term-Cap     noarch 1.17-460.el9   rhel-9-for-x86_64-appstream-rpms  24 k
 perl-Text-ParseWords
                   noarch 3.30-460.el9   rhel-9-for-x86_64-appstream-rpms  18 k
 perl-Text-Tabs+Wrap
                   noarch 2013.0523-460.el9
                                         rhel-9-for-x86_64-appstream-rpms  25 k
 perl-Time-Local   noarch 2:1.300-7.el9  rhel-9-for-x86_64-appstream-rpms  37 k
 perl-URI          noarch 5.09-3.el9     rhel-9-for-x86_64-appstream-rpms 125 k
 perl-base         noarch 2.27-480.el9   rhel-9-for-x86_64-appstream-rpms  18 k
 perl-bignum       noarch 0.51-460.el9   rhel-9-for-x86_64-appstream-rpms  47 k
 perl-constant     noarch 1.33-461.el9   rhel-9-for-x86_64-appstream-rpms  25 k
 perl-if           noarch 0.60.800-480.el9
                                         rhel-9-for-x86_64-appstream-rpms  16 k
 perl-interpreter  x86_64 4:5.32.1-480.el9
                                         rhel-9-for-x86_64-appstream-rpms  75 k
 perl-libnet       noarch 3.13-4.el9     rhel-9-for-x86_64-appstream-rpms 134 k
 perl-libs         x86_64 4:5.32.1-480.el9
                                         rhel-9-for-x86_64-appstream-rpms 2.2 M
 perl-mro          x86_64 1.23-480.el9   rhel-9-for-x86_64-appstream-rpms  31 k
 perl-overload     noarch 1.31-480.el9   rhel-9-for-x86_64-appstream-rpms  47 k
 perl-overloading  noarch 0.02-480.el9   rhel-9-for-x86_64-appstream-rpms  15 k
 perl-parent       noarch 1:0.238-460.el9
                                         rhel-9-for-x86_64-appstream-rpms  16 k
 perl-podlators    noarch 1:4.14-460.el9 rhel-9-for-x86_64-appstream-rpms 118 k
 perl-subs         noarch 1.03-480.el9   rhel-9-for-x86_64-appstream-rpms  13 k
 perl-vars         noarch 1.05-480.el9   rhel-9-for-x86_64-appstream-rpms  15 k
弱い依存関係のインストール:
 perl-NDBM_File    x86_64 1.15-480.el9   rhel-9-for-x86_64-appstream-rpms  25 k

トランザクションの概要
================================================================================
インストール  66 パッケージ

ダウンロードサイズの合計: 8.4 M
インストール後のサイズ: 29 M
これでよろしいですか? [y/N]: y
:
省略
:
インストール済み:
  dbus-glib-0.110-13.el9.x86_64
  dconf-0.40.0-6.el9.x86_64
  mariadb-connector-c-3.2.6-1.el9_0.x86_64
  mariadb-connector-c-config-3.2.6-1.el9_0.noarch
  netatalk-5:3.1.18-1.el9.x86_64
  perl-AutoLoader-5.74-480.el9.noarch
  perl-B-1.80-480.el9.x86_64
  perl-Carp-1.50-460.el9.noarch
  perl-Class-Struct-0.66-480.el9.noarch
  perl-Data-Dumper-2.174-462.el9.x86_64
  perl-Digest-1.19-4.el9.noarch
  perl-Digest-MD5-2.58-4.el9.x86_64
  perl-Encode-4:3.08-462.el9.x86_64
  perl-Errno-1.30-480.el9.x86_64
  perl-Exporter-5.74-461.el9.noarch
  perl-Fcntl-1.13-480.el9.x86_64
  perl-File-Basename-2.85-480.el9.noarch
  perl-File-Path-2.18-4.el9.noarch
  perl-File-Temp-1:0.231.100-4.el9.noarch
  perl-File-stat-1.09-480.el9.noarch
  perl-FileHandle-2.03-480.el9.noarch
  perl-Getopt-Long-1:2.52-4.el9.noarch
  perl-Getopt-Std-1.12-480.el9.noarch
  perl-HTTP-Tiny-0.076-461.el9.noarch
  perl-IO-1.43-480.el9.x86_64
  perl-IO-Socket-IP-0.41-5.el9.noarch
  perl-IO-Socket-SSL-2.073-1.el9.noarch
  perl-IPC-Open3-1.21-480.el9.noarch
  perl-MIME-Base64-3.16-4.el9.x86_64
  perl-Math-BigInt-1:1.9998.18-460.el9.noarch
  perl-Math-BigRat-0.2614-460.el9.noarch
  perl-Math-Complex-1.59-480.el9.noarch
  perl-Mozilla-CA-20200520-6.el9.noarch
  perl-NDBM_File-1.15-480.el9.x86_64
  perl-Net-SSLeay-1.92-2.el9.x86_64
  perl-POSIX-1.94-480.el9.x86_64
  perl-PathTools-3.78-461.el9.x86_64
  perl-Pod-Escapes-1:1.07-460.el9.noarch
  perl-Pod-Perldoc-3.28.01-461.el9.noarch
  perl-Pod-Simple-1:3.42-4.el9.noarch
  perl-Pod-Usage-4:2.01-4.el9.noarch
  perl-Scalar-List-Utils-4:1.56-461.el9.x86_64
  perl-SelectSaver-1.02-480.el9.noarch
  perl-Socket-4:2.031-4.el9.x86_64
  perl-Storable-1:3.21-460.el9.x86_64
  perl-Symbol-1.08-480.el9.noarch
  perl-Term-ANSIColor-5.01-461.el9.noarch
  perl-Term-Cap-1.17-460.el9.noarch
  perl-Text-ParseWords-3.30-460.el9.noarch
  perl-Text-Tabs+Wrap-2013.0523-460.el9.noarch
  perl-Time-Local-2:1.300-7.el9.noarch
  perl-URI-5.09-3.el9.noarch
  perl-base-2.27-480.el9.noarch
  perl-bignum-0.51-460.el9.noarch
  perl-constant-1.33-461.el9.noarch
  perl-if-0.60.800-480.el9.noarch
  perl-interpreter-4:5.32.1-480.el9.x86_64
  perl-libnet-3.13-4.el9.noarch
  perl-libs-4:5.32.1-480.el9.x86_64
  perl-mro-1.23-480.el9.x86_64
  perl-overload-1.31-480.el9.noarch
  perl-overloading-0.02-480.el9.noarch
  perl-parent-1:0.238-460.el9.noarch
  perl-podlators-1:4.14-460.el9.noarch
  perl-subs-1.03-480.el9.noarch
  perl-vars-1.05-480.el9.noarch

完了しました!
[root@ace ~]#

今回はパッケージが用意されていたので楽ちんです!

設定ファイルの編集

[root@ace ~]# cp -p /etc/netatalk/afp.conf /etc/netatalk/afp.conf.orig
[root@ace ~]# vi /etc/netatalk/afp.conf
[root@ace zeke]# cat /etc/netatalk/afp.conf
;
; Netatalk 3.x configuration file
;

[Global]
; Global server settings
        vol preset = my default values
        mac charset = MAC_JAPANESE
        uam list = uams_guest.so uams_clrtxt.so uams_dhx2.so
        log level = default:info
        afpstats = yes

[my default values]
        ea = samba

[Homes]
        basedir regex = /home
        path = public

[Public]
        path = /var/ftp/pub

; [My Time Machine Volume]
; path = /path/to/backup
; time machine = yes
[root@ace zeke]#

設定ファイルを編集します。各ユーザのホームディレクトリとftpの共有フォルダを見えるようにしてみました。

netatalkで共有するフォルダは

[root@ace zeke]# chmod 2755 public
[root@ace zeke]# ls -l
drwxr-xr-x  4 zeke zeke  162  2月  7 18:21 StreamRipper
drwxr-xr-x  5 zeke zeke 4096  6月 11  2017 hofbot
drwxr-sr-x 18 zeke zeke 8192  2月  9 10:58 public
[root@ace zeke]# 

のようにSGIDをつけるようです。

自動起動設定

[root@ace ~]# systemctl enable netatalk
Created symlink /etc/systemd/system/multi-user.target.wants/netatalk.service → /usr/lib/systemd/system/netatalk.service.
[root@ace ~]# systemctl start netatalk
[root@ace ~]# systemctl status netatalk
● netatalk.service - Netatalk AFP fileserver for Macintosh clients
     Loaded: loaded (/usr/lib/systemd/system/netatalk.service; enabled; preset:>
     Active: active (running) since Thu 2024-02-08 17:35:48 JST; 7s ago
       Docs: man:afp.conf(5)
             man:netatalk(8)
             man:afpd(8)
             man:cnid_metad(8)
             man:cnid_dbd(8)
             http://netatalk.sourceforge.net/
    Process: 4640 ExecStartPre=/usr/bin/systemd-tmpfiles --create /usr/lib/tmpf>
    Process: 4641 ExecStart=/usr/sbin/netatalk (code=exited, status=0/SUCCESS)
   Main PID: 4643 (netatalk)
      Tasks: 5 (limit: 23114)
     Memory: 4.4M
        CPU: 191ms
     CGroup: /system.slice/netatalk.service
             tq4643 /usr/sbin/netatalk
             tq4644 /usr/sbin/afpd -d -F /etc/netatalk/afp.conf
             mq4645 /usr/sbin/cnid_metad -d -F /etc/netatalk/afp.conf

 2月 08 17:35:48 ace.zeke.ne.jp systemd[1]: Starting Netatalk AFP fileserver fo>
 2月 08 17:35:48 ace.zeke.ne.jp systemd[1]: netatalk.service: Can't open PID fi>
 2月 08 17:35:48 ace.zeke.ne.jp systemd[1]: Started Netatalk AFP fileserver for>
[root@ace ~]#

netatalkの自動起動設定を行い、サービスを起動しました。ステータスで問題ないことを確認です!

OpenSSL3.xでの注意点

いままで、MacOS8.6での認証はDHX(uams_dhx.so)を使っていましたが、OpenSSL3.xを使うと

Feb 08 21:21:31.979624 afpd[1424] {uams_dhx_pam.c:259} (info:UAMS): uams_dhx_pam.c :PAM: Err Generating Key (OpenSSL error code: 41943166, error:0280007E:Diffie-Hellman routines::modulus too small)

とエラーが出て認証しなくなってしまいました。暗号キーが短いと怒られてしまうようになったのかもしれません。

仕方がないのでuams_dhx.soを外してuams_clrtxt.so(暗号化なし)を有効にして認証することにしました。

最初は「現行と同じ設定なのになんで認証しないのだろう」と悩みました。「log level = default:info」を加えてたくさんログが出るようにして上記のエラーメッセージを出したのが決め手になりました。

こちらの掲示板を参考にしました。

動作確認

[root@ace zeke]# afpd -V
afpd 3.1.18 - 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 mysql
      Zeroconf support: Avahi
  TCP wrappers support: No
         Quota support: No
   Admin group support: Yes
    Valid shell checks: Yes
      cracklib support: Yes
            EA support: ad | sys
           ACL support: Yes
          LDAP support: Yes
         D-Bus support: Yes
     Spotlight support: No
         DTrace probes: Yes

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

[root@ace zeke]# asip-status 192.168.1.1
AFP reply from 192.168.1.1:548 via IPv4
Flags: 1  Cmd: 3  ID: 57005
Reply: DSIGetStatus
Request ID: 57005
Machine type: Netatalk3.1.18
AFP versions: AFP2.2,AFPX03,AFP3.1,AFP3.2,AFP3.3,AFP3.4
UAMs: DHX2,Cleartxt Passwrd,No User Authent
Volume Icon & Mask: Yes
Flags:
    SupportsCopyFile
    SupportsServerMessages
    SupportsServerSignature
    SupportsTCP/IP
    SupportsSrvrNotifications
    SupportsOpenDirectory
    SupportsUTF8Servername
    SupportsUUIDs
    SupportsExtSleep
    SupportsSuperClient
Server name: ace
Signature:
19 c4 5d 0a fa 7e 35 c4 c4 cf 51 3b ee bd 89 01  ..]..~5...Q;....

Network address: [2001:02c0:cd03:ca00:0000:0000:0000:0ace] (IPv6 address)
UTF8 Servername: ace
[root@ace zeke]#

状態コマンドで状況を確認、想定した設定で動いているようです。

MacOS8.6!からつなげて、共有フォルダが見えることを確認しました。ファイルのコピーもしてみましたが、ちょっと不安定です。

MacOS10.14からつなげば問題なくファイルのコピーができることから、MacOS8.6の仮想マシン環境が悪いような気もします。

ちなみにVirtualBoxのWindowsXP仮想マシンの中で、SheepShaverを使ってMacOS8.6仮想マシンを起動するという、結構むちゃなことをしています。

共有フォルダのコピーはMacintoshで

共有フォルダはnetatalkとsambaによりMacでもWindowsでも参照できますが、natatalkではファイル情報を共有フォルダだけではなく、/var/lib/netatalk/CNID/の下にも格納しています。

[root@ace zeke]# ls -al /var/lib/netatalk/CNID/
合計 4
drwxr-xr-x 4 root root 53  2月  9 10:22  .
drwxr-xr-x 3 root root 82  2月  8 17:35  ..
drwxr-xr-x 4 root root 43  2月  9 10:11  Public
-rw-r--r-- 1 root root 87 10月  5 07:41  README
drwxr-xr-x 4 root root 43  2月  9 10:54 "zeke's home"
[root@ace zeke]#

この情報はボリュームの固有情報も含まれるようで単純なコピーはできなさそうです。

よって、データをコピーするときには共有したMacを操作してコピーする必要があります。

お勧めのKindle本です!

コメント