Solaris 11でSMB共有をマウントする

Solaris11でいわゆるWindowsの共有フォルダをマウントしようとしたときに、ちょっと手間取ったのでメモしておきます。
元ネタはほぼこちらです。

How to Mount an SMB Share on a Directory You Own

  • 各コマンドは root 権限で実行されることを想定しています。
  • この例では「smbserver」がSMBサーバ名で「myname」がSMBサーバ上のユーザ名になります。

パッケージの確認

以下のコマンドを実行します。

$ pkg list | grep smb

以下の2つのパッケージがインストールされている事を確認します。

service/file-system/smb       0.5.11-0.175.1.0.0.24.2    i--
system/file-system/smb       0.5.11-0.175.1.0.0.24.2    i--

もしインストールされていなければ次の「パッケージのインストール」でインストールします。

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

前の手順ですでにパッケージがインストールされていることがわかっていれば飛ばして構いません。

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

もしすでにパッケージがインストールされている場合には「No updates necessary for this image」と言われます。

サービスの有効化

SMBクライアントサービスを有効化します。

# svcadm enable -r svc:/network/smb/client:default

enable サブコマンドに -r オプションを付けて有効化すると依存するサービスも同時に有効化してくれるので楽です。

SMB共有の確認

もしSMB共有の共有名がわからない場合にはいかのコマンドで確認できます。
実行後パスワードを聞かれます。

# /usr/sbin/smbadm show-shares -t smbserver
Enter password: 
SHARE               DESCRIPTION
IPC$                
Data                
2 shares (total=2, read=2)

SMBパスワードの保存

マウント実行時に毎回パスワードを聞かれるのも億劫なのでパスワードをシステムに保存して置きます。

# /usr/sbin/smbadm add-key  -u myname@smbserver
Password for SMBSERVER/myname:

マウント

マウントを実行します。
この例では smbserver というサーバの /data という共有フォルダを Solaris 上の /mnt というディレクトリにマウントしています。

# /usr/sbin/mount -F smbfs -o dirperms=755,fileperms=644,user=myname //smbserver/data /mnt

dirperms と fileperms はマウント後の各ディレクトリ、ファイルのアクセス権を設定します。これらはSMBサーバ側の実際のアクセス権とは無関係ですが、Solaris上ではこの設定によりアクセスが制限されます。(参: mount_smbfs(1M))
例えば、デフォルトではどちらも 700 となっているのでマウントを実行したユーザ、つまり root ユーザしかディレクトリに入ることもファイルを見ることも出来ません。

システム起動時に自動マウント

このままでは再起動後にもまた手動でmountを実行しなければなりませんので、/etc/vfstabにエントリを追記して起動時に自動的にマウントされるようにします。

//smbserver/data      -       /mnt   smbfs   -     yes     dirperms=755,fileperms=644,user=myname,uid=myname