FreeBSDでSMB共有をクライアントとしてマウント
FreeBSDでWindowsやNAS等のSMB共有をマウントする方法について、以下fusefs_smbnetfsパッケージを用いた方法を記します。
mount_smbfsについては脆弱性により現在では非推奨(現在のWindowsでもデフォルトで無効)のSMB v1が用いられており、後継のSMB v2/v3を用いたfusefs_smbnetfs等の利用が必要となります。
導入
fusefs-smbnetfsの導入および設定をします。設定ファイルsmbnetfs.confのテンプレートをパッケージ導入で配備されたファイルからコピーし、ユーザ自身のみread/write可能とするパーミッション(ここでは600
)を設定します。テンプレートファイルのコピー元ディレクトリはバージョンによって異なりますので適宜指定してください。
sudo pkg install fusefs-smbnetfs
cp /usr/local/share/doc/smbnetfs-<バージョン番号>/smbnetfs.conf ~/.smb/
chmod 600 ~/.smb/smbnetfs.conf
~/.smb/smbnetfs.conf
を編集して以下を追記します。<SMB共有IPアドレス>
は、SMB共有(サーバ)のIPアドレスを記述します。resolveできればホスト名やDNS名でも可能と思います。<SMB共有ユーザ名>
はSMB共有(サーバ)側での認証ユーザ名を指定します。"<SMB共有ユーザ名>"
の後ろにある""
は認証パスワードになります。当記事ではパスワードを当ファイルに記述しておくのではなく、SMB共有アクセス時に都度指定する方法を後述します。
smb_query_browsers "false"
show_hidden_hosts "true"
auth "<SMB共有IPアドレス>" "<SMB共有ユーザ名>" ""
以下fusefsを有効化します。前後でls /dev/fuse
を実行して参照可否を確認することにより、有効化時に対象デバイス(/dev/fuse
)がアクセスできるか否かで効果が確認できます。
sudo kldload fusefs
/boot/loader.conf
を編集(要sudo
)して以下を追記します。
fusefs_load="YES"
一般ユーザによるマウント操作を許可します。ここではsysctlコマンドで現在のセションで有効化することに加え、/etc/sysctl.conf
に設定を記述することにより次回以降のセションでも有効となるように永続化しています。
sudo sysctl vfs.usermount=1
/etc/sysctl.conf
を編集(要sudo)して以下を追記します。
vfs.usermount=1
マウント操作が可能なoperator
グループに現在のユーザを所属させます。
sudo pw groupmod operator -m $USER
マウントポイントとなるディレクトリを作成し、マウントを実施します。
mkdir <マウントポイントディレクトリ>
smbnetfs <マウントポイントディレクトリ>
SMB共有へのアクセス
前述のようにSMB共有の認証パスワードはsmbnetfs.conf
に記述せず、環境変数(ここではPASS
)に格納しておいて、アクセス時に都度指定する方法を記載します。環境変数の値はsetコマンド等で表示されるので、ファイルに記述しておくのと大差は無いかもしれませんが…
以下ではパスワード入力時のエコーバックを抑止するためにsttyコマンドを用いています。Linux等ではreadコマンドの-sオプションで同等のことができますが、FreeBSDでは-sオプションが存在しないための代替となります。プロンプトに戻ると抑止が解除されるため、ここではセミコロン区切りで一度に環境変数へのパスワード入力までを行っています。
stty -echo; set PASS = $<
以降、下記例のようにマウントポイントアクセスパスの一部として<SMB共有ユーザ名>:<SMB共有パスワード>@<SMB共有IPアドレス>
を記述することにより、マウントしたファイルシステムとしてアクセスすることができます。
ls -al <マウントポイントディレクトリ>/<SMB共有ユーザ名>:$PASS@<SMB共有IPアドレス>/<SMB共有名>
例えばマウントポイントディレクトリが~/mnt
、SMB共有ユーザ名がsmbuser
、SMB共有IPアドレスが192.0.2.3
、SMB共有名がshare
であれば、以下のようになります。
ls -al ~/mnt/smbuser:$PASS@192.0.2.3/share
Comments
Join the conversation on Bluesky