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 を使う。


 

インストールと起動

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

Oracle Solaris 11 では、IPS のパッケージで Samba を導入する。 端末を開き、次のコマンドを実行する。

pfexec pkg install service/network/samba
pkg info samba

インストールされる主なファイルは次の通りである。

サービスの起動と停止

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 で行う。 共有する内容は次の通りである。

プリンタ設定

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点に注意する。

設定ファイル

設定ファイルは /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 には過去に多数の脆弱性が公表されている。 対策は次の通りである。