Samba 4.1へアップグレード

Samba 3.6からSamba 4.1にアップグレードしてみた。(3.6のままでも不自由なかったけど。) 思ったより大変だった。はまったポイントは次の3点。

  • Perlが古いと依存パッケージのビルドでcore dumpしてインストールに失敗する。
  • コンフィグファイル名、およびディレクトリが変更されている。
  • Samba 4.1からSWATが廃止された。

GUIな設定ツールがなさそうなのに、なぜX関連のパッケージに大量に依存しているのかは謎。

  1. インストールしてあるPerlのバージョンが5.16.3のままだと、Sambaの依存パッケージのビルドでPerlがcore dumpして失敗する。
    # sudo portmaster -o lang/perl5.20 lang/perl5.16
  2. Samba 3.6をSamba 4.1にportmasterを使ってアップグレード。
    # sudo portmaster -o net/samba41 net/samba36
    

    いっぱいインストールされた。コンソールまたはWebからしか設定しないからXなインタフェースは不要なのだけど、はずせないみたい。インストール完了後にこんなメッセージが表示される。

    How to start: http://wiki.samba.org/index.php/Samba4/HOWTO
    * Your configuration is: /usr/local/etc/smb4.conf
    * All the relevant databases are under: /var/db/samba4
    * All the logs are under: /var/log/samba4
    * Provisioning script is: /usr/local/bin/samba-tool
    You will need to specify location of the 'nsupdate' command in the
    smb4.conf file:
          nsupdate command = /usr/local/bin/samba-nsupdate -g
    For additional documentation check: http://wiki.samba.org/index.php/Samba4
    Bug reports should go to the: https://bugzilla.samba.org/

    コンフィグファイル名と各種ファイルの置き場所が変更されている。

  3. /etc/rc.confを編集して、samba_server=”YES” を次のように変更。
    samba_server_enable="YES"
  4. コンフィグファイル名をsmb4.confに変更。
    # cd /usr/local/etc
    # sudo mv smb.conf smb4.conf
  5. smb4.confを編集して次の行を追加。
    max protocol = NT1
    nsupdate command = /usr/local/bin/samba-ns
    

    max protocolを設定しておかないと3.6と比べて性能低下が著しいらしい。cf. 「Samba 4 is half as fast as Samba 3?!」 (FreeBSD Forum)

  6. プライベートエリアを新しいpathに変更。
    # cd /var/db/samba4
    # sudo mv private private.orig
    # sudo mv /usr/local/etc/samba private
  7. 古いディレクトリを削除。
    # sudo mv -rf /var/log/samba /var/db/samba
  8. Sambaを再起動。
    # sudo service samba_server restart
  9. Samba 4.1からSWATのサポートが打ち切られたため(担当開発者がいない上に脆弱性が多数報告されているため)、/usr/local/etc/xinetd.confからSWAT関連の設定も削除。編集後、xinetdを再起動しておく。
    # sudo service xinetd restart

以上で終了。基本的な設定はSamba 3のインストール時に終わっているので、そのまま使いまわせる。