Solaris で samba (Solaris のファイルを Windows に提供)
【目次】
 
samba とは
Samba は、UNIX 系 OS 上で SMB プロトコルによるファイル共有とプリンタ共有を行うサーバソフトウェアである。 Samba を動かした Solaris マシンのディレクトリを、Windows からネットワークドライブとして利用できる。 付属の smbclient を使うと、Solaris 側から Windows の共有を利用できる。 Samba 4 系では、Active Directory のドメインコントローラとしての機能も持つ。
Oracle Solaris 11 には、Samba とは別に、カーネル実装の SMB サーバ (サービス名 svc:/network/smb/server) が同梱されている。
こちらは ZFS ファイルシステムの share.smb プロパティで共有を設定する。
Samba とカーネル SMB サーバは同じポート (445番) を使うため、どちらか一方だけを有効にする。
Active Directory との連携や細かな共有設定が必要な場合は Samba を選ぶ。
Solaris 8, 9, 10 はサポートが終了しており、セキュリティ修正が提供されない。 新規に構築する場合は Oracle Solaris 11.4 を使う。
- Samba の公式サイト: https://www.samba.org/ (ソースコード、マニュアル、リリースノートがある)
 
インストールと起動
パッケージからのインストール
Oracle Solaris 11 では、IPS のパッケージで Samba を導入する。 端末を開き、次のコマンドを実行する。
pfexec pkg install service/network/samba
pkg info samba
インストールされる主なファイルは次の通りである。
- 設定ファイル:
/etc/samba/smb.conf - 設定ファイルの例:
/etc/samba/smb.conf-example - コマンド:
/usr/sbin/smbd,/usr/sbin/nmbd,/usr/bin/smbclient,/usr/bin/testparm - ログ:
/var/samba/log/
サービスの起動と停止
Solaris 11 では、Samba は SMF (Service Management Facility) が管理する。 端末を開き、次のコマンドを実行して、サービスを有効にし、状態を確認する。
pfexec svcadm enable svc:/network/samba
pfexec svcadm enable svc:/network/wins
svcs samba wins
設定ファイルを書き換えたときは、端末を開き、次のコマンドを実行して、設定を読み込み直す。
pfexec svcadm refresh svc:/network/samba
pfexec svcadm restart svc:/network/samba
サービスを止めるときは、端末を開き、次のコマンドを実行する。
pfexec svcadm disable svc:/network/samba
pfexec svcadm disable svc:/network/wins
利用者の登録
Samba は Windows から接続するためのパスワードを、Solaris のパスワードとは別に管理する。 接続を許可する利用者は Solaris のアカウントを持っている必要がある。 端末を開き、次のコマンドを実行して、Samba 用のパスワードを設定する。
pfexec smbpasswd -a ユーザ名
pfexec pdbedit -L
ソースからのインストール
パッケージより新しい版を使いたい場合は、公式サイトからソースコードを取得してビルドする。 2026年8月時点の安定版は 4.24 系である。 端末を開き、次のコマンドを実行する。
gtar -xvJf samba-4.24.6.tar.xz
cd samba-4.24.6
./configure --prefix=/usr/local/samba
make
pfexec make install
ソースからインストールした場合、SMF のサービスは付属しないため、起動と停止は自分で用意した SMF マニフェストか手動の起動で行う。
 
設定例
設定方針
NFS サーバとして動いているマシン上で Samba を動かし、内部ネットワークの利用者にのみサービスを提供する例を示す。
接続元の制限は hosts allow で行う。
共有する内容は次の通りである。
- [ユーザ名] 各ユーザのホームディレクトリ (読み出しのみ)
- [home_pc] 各ユーザのホームディレクトリの下の
pcディレクトリ (読み書き) - [pc_archive]
/export/pc(読み書き)。Windows 関係、Linux 関係のファイル置き場 - [docs]
/export/docs(読み出しのみ)。文書の配布用 - [lp1] プリンタ共有
プリンタ設定
Samba からプリンタを共有する場合は、Solaris 側の印刷設定をあらかじめ済ませておく。 端末を開き、次のコマンドを実行して、プリンタを登録し、登録内容を確認する。
pfexec lpadmin -p lp1 -s プリントサーバ名
pfexec lpadmin -p lp1 -D "printer at room 309"
pfexec accept lp1
pfexec enable lp1
lpstat -p -d
Samba 側の設定では、次の2点に注意する。
- 印刷用のスプールディレクトリは、書き込み可能である必要がある
print commandに、Solaris の印刷コマンドを指定する。印刷後にスプールファイルを削除する記述を含める
設定ファイル
設定ファイルは /etc/samba/smb.conf である。
設定内容は、ファイルを直接見るか、testparm コマンドで確認できる。
端末を開き、次のコマンドを実行して、設定ファイルの文法と有効な設定値を確認する。
testparm -s
smb.conf の例を示す。
;
; /etc/samba/smb.conf
;
[global]
workgroup = WORKGROUP
server string = Samba Server on Solaris
hosts allow = 192.168.0. 127.
security = user
invalid users = root
server min protocol = SMB2
server smb encrypt = desired
load printers = no
printing = sysv
printcap name = lpstat
log file = /var/samba/log/log.%m
max log size = 50
[homes]
comment = %U Home Directories (Read Only)
read only = yes
browseable = no
guest ok = no
create mask = 0644
directory mask = 0755
[home_pc]
comment = %U's ~/pc (Read/Write)
path = %H/pc
read only = no
browseable = yes
guest ok = no
create mask = 0644
directory mask = 0755
[pc_archive]
comment = pc archive (/export/pc, Read/Write)
path = /export/pc
read only = no
browseable = yes
guest ok = no
create mask = 0644
directory mask = 0755
[docs]
comment = documents (/export/docs, Read Only)
path = /export/docs
read only = yes
browseable = yes
guest ok = no
create mask = 0644
directory mask = 0755
[lp1]
comment = lp1 (Mono. Printer at S-309)
printable = yes
printer name = lp1
path = /var/spool/samba
browseable = yes
available = yes
guest ok = no
read only = yes
create mask = 0700
print command = /usr/bin/lp -d%p -s %s; rm %s
設定した共有に接続できるかどうかは、Solaris 側から確認できる。 端末を開き、次のコマンドを実行して、共有の一覧を表示する。
smbclient -L localhost -U ユーザ名
 
セキュリティ
Samba には過去に多数の脆弱性が公表されている。 対策は次の通りである。
- パッケージの更新を適用し、サポート中の版を使う。端末を開き、
pfexec pkg updateを実行して更新する hosts allowで接続元のネットワークを限定するserver min protocol = SMB2を指定して、SMB1 を無効にする。SMB1 は認証と暗号化の仕組みが古く、Windows でも既定で無効であるserver smb encryptで通信の暗号化を有効にするinvalid users = rootのように、管理者アカウントでの接続を禁止する- 共有ディレクトリの UNIX 側のパーミッションを、必要最小限に設定する
- 外部ネットワークからの 139番, 445番ポートへの接続を、パケットフィルタで遮断する