Samba → Solaris CIFS Service

最近のSolarisではCIFSサーバがカーネルに統合され、Sambaでのファイル共有相当の機能を実現できるようになっています。せっかくなのでSambaから移行してみることにしました。
自宅や小規模オフィスのファイルサーバとして使用することを想定して、導入手順を簡単にまとめてみます。OpenSolaris 2009.06 x86版で試しました。
主に以下のサイトを参考にしました。まだ日本語のまとまった情報はあまりないようです。

シナリオ

自宅や小規模オフィスにありそうな以下のような環境を想定します。

手順

CIFS Service のインストール

1. su, sudo -s などでスーパーユーザになる。

2. smbsrvモジュールを削除する。

# rem_drv smbsrv

3. CIFS Service のパッケージをインストールする。

# pkg install SUNWsmbskr
# pkg install SUNWsmbs

4. smbsrvモジュールをロードする。

# add_drv smbsrv

5. CIFS Service のSMFマニフェストをインポートする。

# svccfg import /var/svc/manifest/network/smb/server.xml

6. CIFS Service を起動する。

# svcadm enable -r smb/server

以下のようなエラーが出ることがありますが無視してかまいません。

svcadm: svc:/milestone/network depends on svc:/network/physical, 
which has multiple instances
ワークグループモードで構成する

1. ワークグループに参加する。

# smbadm join -w WORKGROUP

ワークグループ名はデフォルトで "WORKGROUP" になっているのでそれ以外の場合は変更してください。

2. PAMの設定を行う。
/etc/pam.conf に以下の内容を追加してください。

other password required pam_smb_passwd.so.1 nowarn

この設定を追加すると、passwd コマンドは自動的にCIFSに対応したパスワードを生成し /var/smb/smbpasswd に保存するようになります(Samba の smbpasswd コマンド相当の動作)。既存のユーザに対しては passwd コマンドを再度実行する必要があります。

3. ローカルユーザのパスワードを設定する。

# passwd username
CIFS共有の作成

共有を作成するにはzfsコマンドを使う方法と、sharemgrコマンドを使う方法があります。
ここでは、すでに rpool/export/share というZFSファイルシステムがあるものとして、zfsコマンドで共有を作成することにします。

以下のコマンドで、export-share という名前の共有が作成されます。

# zfs set sharesmb=on rpool/export/share

共有の名前を変更したい場合は以下のようにnameを指定します。

# zfs set sharesmb=name=share rpool/export/share

sharemgr show コマンドで、共有が作成されたことを確認できます。

$ sharemgr show -vp
default nfs=()
zfs
    zfs/rpool/export/share smb=()
          share=/export/share
smb smb=()
AutoHomeによるホームディレクトリの共有

Sambaの [homes] のようにユーザのホームディレクトリを共有するには、/etc/smbautohome というファイルにユーザ名とホームディレクトリのマッピングを記述します。
単純にユーザ名を /export/home 以下のディレクトリにマッピングするには、以下のように /etc/smbautohome に記述します。

*   /export/home/&

これで、Sambaの [homes] 相当の機能を実現できます。
Sambaより簡単ですね。