Solaris11のzfsにて、samba用の共有ファイルシステムを作成。ちょっと苦戦した・・・

事前作業

samba用のストレージ作成

イキナリ失敗(cannot share 'xxx' for smb: protocol not installed)

# zfs create -p tank/samba/pub
# set mountpoint=/export/smb/pub tank/samba/pub
# zfs set share=name=samba_pub,path=/export/samba/pub,prot=smb tank/samba/pub
# zfs set sharesmb=on tank/smb/pub
cannot share 'tank/samba/pub' for smb: protocol not installed

対策

以下パッケージを入れる

(参照元:http://serverfault.com/questions/360778/solaris-11-x-64-cannot-enable-smb-cifs-missing-protocol)

  • solaris/service/file-system/smb
  • solaris/system/file-system/smb

pkgインストール

# pkg install /service/file-system/smb
# pkg install /system/file-system/smb

サービス起動

# svcadm enable -r svc:/network/smb/server:default
# svcs -a | grep smb
online         10:42:29 svc:/network/smb:default
online         11:22:21 svc:/network/smb/client:default
online         11:22:22 svc:/network/smb/server:default
# zfs set share=name=samba_pub,path=/export/samba/pub,prot=smb tank/samba/pub
# zfs set sharesmb=on tank/samba/pub
# zfs get -r sharesmb tank/samba/pub
NAME            PROPERTY  VALUE     SOURCE
tank/samba/pub  sharesmb  on        local

sambaインストール

# pkg install samba
# svcs -a | grep samba
disabled        9:40:16 svc:/network/samba:default
# svcadm enable svc:/network/samba:default
# svcs -a | grep samba
maintenance     9:41:58 svc:/network/samba:default


認証設定

pam設定

/etc/pam.confの最終行にPAMモジュールの読み込み設定を追記することで、passwd コマンドは自動的にCIFSに対応したパスワードを生成できるようになる。

# vi /etc/pam.conf
other password required pam_smb_passwd.so.1 nowarn

ワークグループに参加

LDAPへの追加はおこなわず、ドメインモードで利用

# smbadm join -w workgroup
After joining workgroup the smb service will be restarted automatically.
Would you like to continue? [no]: yes
Successfully joined workgroup

ユーザ・パスワード設定

サンバログイン用ユーザ(smbdev)作成

# useradd -u 2000 -g dev -s /bin/false smbdev
# passwd smbdev
New Password:
Re-enter new Password:
passwd: password successfully changed for smbdev

ディレクトリの権限変更

# chown -R smbdev:dev /export/smb/pub tank/samba/pub

状態確認

$ sudo sharectl status smb
smb     online

$ sudo zfs get -r sharesmb tank
NAME            PROPERTY  VALUE     SOURCE
tank/samba      sharesmb  off       default
tank/samba/pub  sharesmb  on        local

$ sudo zfs get -r share
NAME                                          PROPERTY  VALUE  SOURCE
tank/samba/pub                                share     name=samba_pub,path=/export/samba/pub,prot=smb  local


クライアントからのログイン

Windowsのエクスプローラから接続確認(\\<ホスト名>\\samba_pub)

sol11-sharesmb

備考

共有名を指定しない場合、ファイルパスがCIFSのディレクトリパス名に対して、"/"を"_"に変更したものとなる。

例: rpool/smb/share ⇒rpool_smb_share

<\br>

参考(sambaのサービスが起動していないと検出されるエラー)

ドメインモード/ワークグループモードの設定失敗

# smbadm join -w workgroup
After joining workgroup the smb service will be restarted automatically.
Would you like to continue? [no]: yes
failed to join workgroup
failed to contact smbd - Bad file number

パスワード変更失敗

# passwd smbdev
Permission denied