FreeBSD 12:Samba 4

ファイルサーバの機能を追加してみましょう。
WindowsやMacのファイル共有を実現するには、Sambaを使う以外に考えられませんね。

Sambaのインストール

root@cafe:~ # cd /usr/ports/net/samba413/
root@cafe:/usr/ports/net/samba413 # make

いつものようにPortsからインストールを行います。

今回は、インストールオプションを変更します。

ADS,AD_DCのアクティブ・ディレクトリ関係は、家の中では使わないので、外します。
LDAPもアカウント管理をLDAPで行わないので、外します。
デフォルトではZeroconf SupportはAVAHIにチェックがついていますが、MDNSRESPONDERに変更します。

依存関係のあるパッケージもportsによって自動的にインストールされます。
そのコンパイルオプションの選択画面が表示されるので、適当なものを選びます。基本的に初期値のままですね。

omockaも初期値のままにしておきます。

tallocも初期値のままにしておきます。

teventも初期値のままにしておきます。

tdbも初期値のままにしておきます。

poptも初期値のままにしておきます。

gnutlsも初期値のままにしておきます。

gmpも初期値のままにしておきます。

nettleも初期値のままにしておきます。

p11-kitも初期値のままにしておきます。

bash-completionも初期値のままにしておきます。

bashも初期値のままにしておきます。

bisonも初期値のままにしておきます。

highlightも初期値のままにしておきます。

boost-libsも初期値のままにしておきます。

xmlcatmgrも初期値のままにしておきます。

docbook-xslも初期値のままにしておきます。

libxsltも初期値のままにしておきます。

libgcryptも初期値のままにしておきます。

libgpg-errorも初期値のままにしておきます。

glibも初期値のままにしておきます。

trousersも初期値のままにしておきます。

gaminも初期値のままにしておきます。

:
省略
:
/usr/bin/strip /usr/ports/net/samba413/work/stage/usr/local/lib/python3.7/site-packages/ldb.so
/usr/bin/strip /usr/ports/net/samba413/work/stage/usr/local/lib/nss_winbind.so.1
/usr/bin/strip /usr/ports/net/samba413/work/stage/usr/local/lib/nss_wins.so.1
/usr/bin/strip /usr/ports/net/samba413/work/stage/usr/local/lib/pam_winbind.so
/bin/mkdir -p /usr/ports/net/samba413/work/stage/usr/local/share/doc/samba413
install  -m 0644 /usr/ports/net/samba413/work/README.FreeBSD /usr/ports/net/samba413/work/stage/usr/local/share/doc/samba413
====> Compressing man pages (compress-man)
===> Staging rc.d startup script(s)
===>   Installing ldconfig configuration file
root@cafe:/usr/ports/net/samba413 #

コンパイル完了です。

root@cafe:/usr/ports/net/samba413 # make install
===>  Installing for samba413-4.13.0
===>  Checking if samba413 is already installed
===>   Registering installation for samba413-4.13.0
Installing samba413-4.13.0...
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

For additional documentation check: http://wiki.samba.org/index.php/Samba4

Bug reports should go to the: https://bugzilla.samba.org/

===> SECURITY REPORT:
      This port has installed the following files which may act as network
      servers and may therefore pose a remote security risk to the system.
/usr/local/lib/samba4/private/libsamba-sockets-samba4.so
/usr/local/lib/samba4/private/libsmb-transport-samba4.so
/usr/local/bin/nmblookup
/usr/local/lib/samba4/private/libgse-samba4.so
/usr/local/lib/samba4/private/libkrb5-samba4.so.26
/usr/local/sbin/winbindd
/usr/local/lib/samba4/private/libsmbd-base-samba4.so
/usr/local/lib/samba4/libsmbconf.so.0
/usr/local/sbin/smbd

      If there are vulnerabilities in these programs there may be a security
      risk to the system. FreeBSD makes no guarantee about the security of
      ports included in the Ports Collection. Please type 'make deinstall'
      to deinstall the port if this is a concern.

      For more information, and contact details about the security
      status of this software, see the following webpage:
https://www.samba.org/
root@cafe:/usr/ports/net/samba413 #

make installコマンドで、インストールも完了です。コメントを参考に、/usr/local/etc/smb4.confの設定を行います。

Sambaの設定

root@cafe:/usr/ports/net/samba413 # cd /usr/local/etc/
root@cafe:/usr/local/etc # ls -al smb4.conf*
ls: No match.
root@cafe:/usr/local/etc # vi smb4.conf
root@cafe:/usr/local/etc # cat smb4.conf
[global]
        workgroup = WORKGROUP
        server string = Samba Server
        netbios name = cafe
        map to guest = Bad User
        guest account = nobody
        server min protocol = NT1
        ntlm auth = ntlmv1-permitted

        max log size = 50
        log level = 1
        logging = file

        server role = standalone
        security = user
        guest ok = yes

        printing = bsd

        unix charset = UTF-8
        dos charset = CP932

        vfs objects = streams_xattr
        hide files = /.DS_Store/Network Trash Folder/TheFindByContentFolder/TheVolumeSettingsFolder/Temporary Items/.TemporaryItems/.VolumeIcon.icns/Icon?/.FBCIndex/.FBCLockFolder/

[Share]
        comment = Shared Directories
        path = /usr/local/samba
        read only = no

root@cafe:/usr/local/etc #

コメントどおり/usr/local/etc/smb4.confを作成します。サンプルファイルがないので、0から作成ですね。
今回はIPアドレスなどの制限を設けず、誰でも/usr/local/sambの内容を共有できるようにしています。
また、WindowsXPでもアクセスできるように
server min protocol = NT1 ← 最近のSambaでは、WindowsVista以降対応のようです。Windoews2000,XPではこのオプションが必要です。
ntlm auth = ntlmv1-permitted ← Windoews2000,XPでも認証できるように必要です。
ちょっと、セキュリティ的には弱くなりますが、インターネットに公開しているわけではないし、問題ないでしょう。

logging = file ← ログ出力をファイルだけにする。デフォルトではコンソールにもログが出力されてウザいので。

vfs objects = streams_xattr ← 代替データストリームを POSIX の拡張属性に格納します。これをつけないとMacOSのリソースフォークは別ファイルとして保存されてしまいます。
hide files = /.DS_Store/Network Trash Folder/TheFindByContentFolder/TheVolumeSettingsFolder/Temporary Items/.TemporaryItems/.VolumeIcon.icns/Icon?/.FBCIndex/.FBCLockFolder/ ← MacOS特有のファイルやフォルダを隠し属性にしておきます。

root@cafe:/usr/local/etc # mkdir /usr/local/samba
root@cafe:/usr/local/etc # chown nobody:nobody /usr/local/samba
root@cafe:/usr/local/etc # ls -al /usr/local/samba
total 8
drwxr-xr-x   2 nobody  nobody  512 Oct 14 00:29 .
drwxr-xr-x  15 root    wheel   512 Oct 14 00:29 ..
root@cafe:/usr/local/etc #

共有フォルダを作成します。

root@cafe:/usr/local/etc # bsdconfig

bsdconfigコマンドで、起動設定を行います。

「C Startup」を選択します。

「1 Toggle Startup Services」を選択します。

「samba_server_enabe」を選択して「OK」を押し、チェックをつけます。

「X Exit」を選択して、メニューから抜けます。

「X Exit」を選択して、メニューから抜けます。

「Exit bsdconfig」を選択して終了します。

root@cafe:/usr/local/etc # cat /etc/rc.conf
hostname="cafe.lo.zeke.ne.jp"
keymap="jp.106"
ifconfig_vtnet0="inet 192.168.1.7 netmask 255.255.255.0"
defaultrouter="192.168.1.254"
ifconfig_vtnet0_ipv6="inet6 2001:2c0:cd03:ca00::cafe/64"
ipv6_defaultrouter="2001:2c0:cd03:ca00::254"
local_unbound_enable="YES"
sshd_enable="YES"
ntpdate_enable="YES"
ntpd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="NO"
php_fpm_enable="YES"
nginx_enable="YES"
mdnsd_enable="YES"
mdnsresponderposix_enable="YES"
mdnsresponderposix_flags="-f /usr/local/etc/mDNSResponder.conf"
samba_server_enable="YES"
root@cafe:/usr/local/etc #

/etc/rc.confを開いて、samba_server_enable="YES"が追加されていることを確認します。

root@cafe:/usr/local/etc # service samba_server start
Performing sanity check on Samba configuration: OK
Starting nmbd.
Starting smbd.
root@cafe:/usr/local/etc #

service samba_server startコマンドでsambaを起動します。エラーなく起動しているようですね。

root@cafe:/usr/local/etc # cat /var/log/samba4/log.smbd
[2020/10/14 00:51:48.317095,  0] ../../source3/smbd/server.c:1784(main)
  smbd version 4.13.0 started.
  Copyright Andrew Tridgell and the Samba Team 1992-2020
[2020/10/14 00:51:49.253669,  0] ../../lib/util/become_daemon.c:136(daemon_ready)
  daemon_ready: daemon 'smbd' finished starting up and ready to serve connections
root@cafe:/usr/local/etc # cat /var/log/samba4/log.nmbd
[2020/10/14 00:51:48.150842,  0] ../../source3/nmbd/nmbd.c:960(main)
  nmbd version 4.13.0 started.
  Copyright Andrew Tridgell and the Samba Team 1992-2020
[2020/10/14 00:51:48.316430,  0] ../../lib/util/become_daemon.c:136(daemon_ready)
  daemon_ready: daemon 'nmbd' finished starting up and ready to serve connections
[2020/10/14 00:51:48.319543,  0] ../../source3/nmbd/nmbd_namequery.c:109(query_name_response)
  query_name_response: Multiple (2) responses received for a query on subnet 192.168.1.7 for name WORKGROUP<1d>.
  This response was from IP 192.168.1.4, reporting an IP address of 192.168.1.4.
root@cafe:/usr/local/etc #

/var/log/samba4/log.smbdと/var/log/samba4/log.nmbdのログでもエラーがないことを確認しました。

Sambaの動作確認

Windows7やXPのクライアントからつなげてみます。

Windowsからアドレスに\\cafeと入力し、Sambaサーバの共有フォルダが見えることを確認します。

Windowsからファイルやフォルダを作成できることが確認できました。

root@cafe:/usr/local/etc # ls -lR /usr/local/samba/
total 16
drwxr-xr-x  2 nobody  nobody  512 Oct 15 00:10 新しいフォルダ
drwxr-xr-x  2 nobody  nobody  512 Oct 14 01:51 新しいフォルダー

/usr/local/samba/新しいフォルダ:
total 8
-rwxr--r--  1 nobody  nobody  12 Oct 15 00:36 新規テキスト文書.txt

/usr/local/samba/新しいフォルダー:
total 12
-rwxr--r--  1 nobody  nobody  0 Oct 14 01:51 新しいテキスト ドキュメント (2).txt
-rwxr--r--  1 nobody  nobody  6 Oct 14 01:10 新しいテキスト ドキュメント.txt
root@cafe:/usr/local/etc #

また、サーバ側でも、ちゃんとディレクトリやファイルができていて文字コードもUTF-8であることが確認できました。
sambaのインストールと設定は以上です。