kraftsrv.net

Raspberry Pi 上の OpenBSD 環境にディスクの増設と Samba のインストール

Raspberry Pi 3 Model B+ 上の OpenBSD 7.0 環境にディスク (USB 接続の SATA HDD) の増設と Samba をインストールする手順です。
Samba の基本的な設定変更までを行います。

ディスクの増設

本稿ではブートディスク (SD カードの領域) に行われている設定に倣い、以下の方針例の通りディスク増設に関する設定を行うこととします。

パーティションスキーム MBR
ファイルシステムフォーマット FFSv2
マウント duid (disklabel unique identifier) を使用

データ格納用パーティションの作成

ディスクの接続

Raspberry Pi にディスクを接続します。
『sd1』として認識されます。

raspberrypi# sysctl hw.disknames
hw.disknames=sd0:0deb475078955a22,sd1:

既存パーティションの削除

ディスクにパーティションが存在している場合は削除 (ディスクを初期化) します。

raspberrypi# dd if=/dev/zero of=/dev/rsd1c bs=1m count=1
1+0 records in
1+0 records out
1048576 bytes transferred in 0.391 secs (2679592 bytes/sec)

パーティションの作成

ディスクにパーティションを作成します。

raspberrypi# fdisk -e sd1
Enter 'help' for information

操作対象パーティションを選択します。
『edit 0』を入力して Enter を押下します。

sd1: 1> edit 0
            Starting         Ending         LBA Info:
 #: id      C   H   S -      C   H   S [       start:        size ]
-------------------------------------------------------------------------------
 0: 00      0   0   0 -      0   0   0 [           0:           0 ] unused

Partition id 入力のプロンプトが表示されます。
『A6』を入力して Enter を押下します。

Partition id ('0' to disable) [01 - FF]: [00] (? for help) A6

モード変更のプロンプトが表示されます。
そのまま Enter を押下 (『n』を選択) します。

Do you wish to edit in CHS mode? [n]

オフセット入力のプロンプトが表示されます。
そのまま Enter を押下 (『0』を選択) します。

Partition offset [0 - 625142447]: [0]

サイズ入力のプロンプトが表示されます。
『*』を入力 (最大値を選択) して Enter を押下します。

Partition size [1 - 625142448]: [1] *

内容を保存して終了します。

sd1*: 1> quit
Writing MBR at offset 0.

ディスクラベルの作成

ディスクラベルを作成します。

raspberrypi# disklabel -E sd1
Label editor (enter '?' for help at any prompt)

操作対象パーティションを選択します。
『a d』を入力 (『Add partition: D』を実行) して Enter を押下します。

sd1> a d

オフセット入力のプロンプトが表示されます。
そのまま Enter を押下します。

offset: [0]

サイズ入力のプロンプトが表示されます。
そのまま Enter を押下します。

size: [625142448]

FS type 入力のプロンプトが表示されます。
そのまま Enter を押下します。

FS type: [4.2BSD]

内容を保存して終了します。

sd1*> q

確認のプロンプトが表示されます。
そのまま Enter を押下 (『y』を選択) します。

Write new label?: [y]

ディスクラベルの作成ならびに duid を確認します。

raspberrypi# disklabel sd1
# /dev/rsd1c:
type: SCSI
disk: SCSI disk
label: Logitec
duid: 7cdc3c143b8ed1a3
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 38913
total sectors: 625142448
boundstart: 0
boundend: 625142448
drivedata: 0

16 partitions:
#                size           offset  fstype [fsize bsize   cpg]
  c:        625142448                0  unused
  d:        625142400                0  4.2BSD   4096 32768     1

ファイルシステムの作成

パーティションにファイルシステムを作成します。

raspberrypi# newfs -O 2 7cdc3c143b8ed1a3.d
/dev/rsd1d: 305245.3MB in 625142400 sectors of 512 bytes
375 cylinder groups of 814.44MB, 26062 blocks, 52224 inodes each

マウント

パーティションのマウントポイントを作成します。
本稿では『/data』ディレクトリとします。

raspberrypi# mkdir /data

パーティションをマウントします。

raspberrypi# mount 7cdc3c143b8ed1a3.d /data

/etc/fstab に OpenBSD の再起動後もマウントを行う設定を追加します。
本稿ではマウントオプションは『rw,nodev,nosuid』、ダンプならびにファイルシステムチェックの実行は無しとします。

7cdc3c143b8ed1a3.d /data ffs rw,nodev,nosuid 0 0

Samba のインストール

ファイルセットの追加

Samba のインストールにはファイルセット『xbase70.tgz』に含まれるライブラリファイルが必要となるため、OpenBSD のインストール時にファイルセットは最小構成を行った (『bsd』『bsd.mp』『base70.tgz』を選択) 場合はファイルセットを追加します。

xbase70.tgz を取得して解凍します。
※xbase70.tgz は /tmp 以下に転送されていることを前提とします。

raspberrypi# cd /tmp
raspberrypi# tar zxf xbase70.tgz -C /

バイナリパッケージのインストール

パッケージをインストールします。
なお本稿では openldap-client パッケージの依存性解決には cyrus-sasl パッケージを選択することとします。
途中のパッケージ選択のプロンプト表示にはそのまま Enter を押下します。

raspberrypi# pkg_add samba
quirks-4.54 signed on 2022-04-06T16:39:59Z
quirks-4.54: ok
samba-4.14.12v0:libiconv-1.16p0: ok
samba-4.14.12v0:gettext-runtime-0.21p1: ok
samba-4.14.12v0:libunistring-0.9.7: ok
samba-4.14.12v0:libidn2-2.3.0p0: ok
samba-4.14.12v0:libunbound-1.13.2: ok
samba-4.14.12v0:gmp-6.2.1p0: ok
samba-4.14.12v0:libnettle-3.7.3: ok
samba-4.14.12v0:libtasn1-4.17.0: ok
samba-4.14.12v0:libffi-3.3p1: ok
samba-4.14.12v0:p11-kit-0.24.0: ok
samba-4.14.12v0:gnutls-3.7.2p0: ok
samba-4.14.12v0:dbus-1.12.20p1v0: ok
samba-4.14.12v0:libevent-2.1.11: ok
samba-4.14.12v0:avahi-libs-0.8p1: ok
samba-4.14.12v0:cups-libs-2.3.3.2p1: ok
samba-4.14.12v0:bzip2-1.0.8p0: ok
samba-4.14.12v0:xz-5.2.5: ok
samba-4.14.12v0:sqlite3-3.35.5p0: ok
samba-4.14.12v0:python-3.8.12: ok
samba-4.14.12v0:samba-util-4.14.12v0: ok
samba-4.14.12v0:openpam-20200510p0: ok
samba-4.14.12v0:pcre-8.44: ok
samba-4.14.12v0:glib2-2.68.4: ok
samba-4.14.12v0:gamin-0.1.10p25: ok
samba-4.14.12v0:popt-1.16p2: ok
samba-4.14.12v0:py3-setuptools-57.4.0v0: ok
samba-4.14.12v0:py3-dnspython-2.1.0: ok
samba-4.14.12v0:libtalloc-2.3.2: ok
samba-4.14.12v0:tdb-1.4.3: ok
Ambiguous: choose dependency for openldap-client-2.4.59v0:
a       0: cyrus-sasl-2.1.27p3
        1: cyrus-sasl-2.1.27p3-db4
        2: cyrus-sasl-2.1.27p3-gssapi
        3: cyrus-sasl-2.1.27p3-ldap
        4: cyrus-sasl-2.1.27p3-mysql
        5: cyrus-sasl-2.1.27p3-pgsql
        6: cyrus-sasl-2.1.27p3-sqlite3
Your choice:
samba-4.14.12v0:cyrus-sasl-2.1.27p3: ok
samba-4.14.12v0:openldap-client-2.4.59v0: ok
samba-4.14.12v0:tevent-0.10.2p4v0: ok
samba-4.14.12v0:ldb-2.3.2p0v0: ok
samba-4.14.12v0:jansson-2.13.1: ok
samba-4.14.12v0:py3-talloc-2.3.2: ok
samba-4.14.12v0:py3-tdb-1.4.3: ok
samba-4.14.12v0: ok
Running tags: ok
The following new rcscripts were installed: /etc/rc.d/messagebus /etc/rc.d/nmbd /etc/rc.d/samba /etc/rc.d/saslauthd /etc/rc.d/smbd /etc/rc.d/winbindd
See rcctl(8) for details.
New and changed readme(s):
        /usr/local/share/doc/pkg-readmes/dbus
        /usr/local/share/doc/pkg-readmes/gamin
        /usr/local/share/doc/pkg-readmes/glib2
        /usr/local/share/doc/pkg-readmes/samba

設定ファイルは /etc/samba ディレクトリ以下に配置されます。

raspberrypi# ls -l /etc/samba/smb.conf
-rw-r--r--  1 root  wheel  7930 Apr 15 16:12 /etc/samba/smb.conf

設定ファイルの編集

本稿では Samba はユーザホーム機能の提供のみを行うこととします。
以下は /etc/samba/smb.conf の内容例となります。

[global]
    security = user
    logging = file
    dos charset = CP932

[homes]
    path = /data/%S
    browseable = No
    valid users = %S
    read only = No

起動

本稿では以下の方針例の通りサービスの起動を行うこととします。

smbd 起動する
nmbd 起動しない
winbind 起動しない

起動スクリプトは /etc/rc.d ディレクトリ以下に配置されます。

raspberrypi# ls -l /etc/rc.d/smbd
-rwxr-xr-x  1 root  bin  328 Feb  3 05:06 /etc/rc.d/smbd

Samba を起動します。

raspberrypi# rcctl start smbd
smbd(ok)

自動起動設定

Samba の自動起動が行われるようにする場合は、rcctl コマンドで smbd を有効化します。

raspberrypi# rcctl enable smbd

/etc/rc.conf.local に以下の設定が追加されます。

pkg_scripts=smbd

ログローテーション

/etc/newsyslog.conf にログローテーションの設定を追加します。
以下は /var/log/samba/log.smbd に対して、毎日 00:00 に gzip 圧縮を行い 7 世代保存を行う場合の例となります。
※log.smbd のローテーションに関して smbd へのシグナルの送信は不要です。

/var/log/samba/log.smbd                 644  7     *    @T00  Z ""

ユーザの作成

Samba 接続用のユーザを作成します。
本稿ではユーザ名は『fsuser01』とします。

OS ユーザの作成

OS ユーザを作成します。
※Samba 接続用ユーザの作成には OS ユーザが必要となります。
但し OS へのログイン権限は不要のため、ホームディレクトリやログインシェルの指定、パスワードの設定は行わないこととします。

raspberrypi# useradd -c "Samba Share User" -d /nonexistent -s /sbin/nologin fsuser01

Samba 接続用ユーザの作成

Samba 接続用ユーザを作成します。
pdbedit コマンド実行後、パスワード入力のプロンプトが表示されます。
パスワードを入力して Enter を押下します。

raspberrypi# /usr/local/bin/pdbedit -a fsuser01
new password:
retype new password:

パスワードを入力後、ユーザの詳細情報が表示されます。

Unix username:        fsuser01
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-453008096-3539086010-2999768234-1000
Primary Group SID:    S-1-5-21-453008096-3539086010-2999768234-513
Full Name:            Samba Share User
Home Directory:       \\RASPBERRYPI\fsuser01
HomeDir Drive:
Logon Script:
Profile Path:         \\RASPBERRYPI\fsuser01\profile
Domain:               RASPBERRYPI
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          9223372036854775807 seconds since the Epoch
Kickoff time:         9223372036854775807 seconds since the Epoch
Password last set:    Fri, 15 Apr 2022 16:31:23 JST
Password can change:  Fri, 15 Apr 2022 16:31:23 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Samba 接続用ユーザのディレクトリの作成

Samba 接続用ユーザのディレクトリを作成します。
作成先は増設したディスクのパーティション内とします。

raspberrypi# mkdir -m 700 /data/fsuser01
raspberrypi# chown fsuser01:fsuser01 /data/fsuser01

ログイン確認

Samba にログインします。

raspberrypi# /usr/local/bin/smbclient -U fsuser01 //127.0.0.1/fsuser01
Enter WORKGROUP\fsuser01's password:
Try "help" to get a list of possible commands.
smb: \>

ログアウトします。

smb: \> exit