sambaをマウントしたい。どうせなので起動時にマウントしたい。
環境は Raspberry Pi 4 の Raspberry Pi OS 10.7
sambaサーバーを勉強に立てたので、それをマウントするまでに調べたことのまとめ。
mountコマンドでのマウント → fstab に記述しての起動時の自動マウントの順にやりました。
###mountコマンドの基本
マウントコマンドの基本は
$ mount -t <ファイルシステムのタイプ> <デバイス> <マウントポイント>
###オプション- t で指定すべきタイプ
オプション -t で指定するのはファイルシステムのタイプ。
ファイルシステムとはなんぞやというのはここでは置いておいて、
今回 samba のマウントで指定べきタイプは -t cifs
になる。
ファイルシステムに cifs
を指定するためには cifs-utils
がインストールされていなければならないので、一応確認しておきましょう。
$ apt list cifs-utils
一覧表示... 完了
cifs-utils/stable,now 2:6.8-2 armhf [インストール済み]
大抵はsmbclient
と一緒にインストールされてるはず。
###オプション -o で指定すべきもの
mountコマンドには -r
-w
などのオプションもあるが使わない。
その他の細かいオプションはすべて -o <オプション>,<オプション>,<オプション>
のように -o
の後にコンマ区切りで併記していく。
####mount.cifs のオプション
-t cifs
を指定すると mount.cifs が呼び出されるので、そちらのオプションを見なければならない。
ファイルシステムによって動きが違うから使えるオプションも変わるのだなと私は理解しました。
mount.cifs について
http://www.samba.gr.jp/project/translation/3.5/htmldocs/manpages-3/mount.cifs.8.html
というわけで -o の後に書くべきものは、
-o user=<ユーザー名>,password=<パスワード>
がまず最低限必要になります。
- 他に書くべき候補
-
rw
(読み取り書き込みできるようにするもの。私はうまくいかず↓を使った) -
file_mode=664
(マウントしたファイルのパーミッションの指定) -
dir_mode=775
(マウントしたディレクトリのパーミッションの指定) -
uid=<ユーザー名>
(マウントするもののオーナーを任意のユーザーにする) -
gid=<グループ名>
(マウントするもののグループを任意のグループにする)
ここまでを整理として、ここまででできた部分を繋げるとこう。
mount -t cifs -o user=<ユーザー名>,password=<パスワード>,file_mode=664,dir_mode=775
###マウントの実行
マウントするためにはマウントする場所にディレクトリが必要なので /mnt の下に作成する。
# mkdir -m 777 /mnt/<マウントポイント>
ようやくマウントができる。
# mount -t cifs -o user=<ユーザー名>,password=<パスワード>,file_mode=664,dir_mode=775 //<ホストアドレス>/<ディレクトリ> /mnt/<マウントポイント>
確認
$ df -Th
アンマウント
$ unmount /mnt/<マウントポイント>
##/etc/fstab へ記述して起動時にマウントする
/etc/fstab はマウントするデバイスとファイルシステムを記述するファイルで起動時に読まれる。
###fstabの基本
記述は、
<デバイス> <マウントポイント> <ファイルシステムのタイプ> <オプション> <dump> <fsck>
<dump>
には 0~1
<fsck>
には 0~2
が入る。
その役割はここでは置いておいて、sambaのマウントを考えるなら両方 0
を入れる。
あとは mountコマンド でマウントした時の記述と同じ。
ファイルシステムは cifs
オプションは -o
の後にコンマ区切りで記述したものです。
###リモートファイルシステムはsystemdに自動マウントさせる
起動時にリモートファイルシステムをマウントさせるなら、systemdによる自動マウントさせましょう。
_netdev,x-systemd.automount
のふたつのオプションを記述するだけで、マウントをネットワークがオンラインになるまで待ち、またそのあとsystemdがうまいことマウントしてくれます。
このあたりのテクニックについては ArchWiki の fstab の頁にわかりやすく書いてありそれを読みました。
https://wiki.archlinux.jp/index.php/Fstab
###/etc/fstab にパスワードを書きたくない
/etc/fstab
はおそらく多くの人のアクセスできるようすべきファイルで、そんなところにパスワードを書きたくはありません。
そんな時は credentials=<path>
オプションを使い、ユーザーとパスワード情報を記述したファイルを別に用意してそれを読ませましょう。
今回は/etc
にsmb-credentials
というディレクトリを作りその中に.password1
というファイルを作ることにします。
パーミッションを適切に管理しましょう。
.password1
に記述すべき書式は以下の通り。
username=<ユーザ名>
password=<パスワード>
###fstab への記述
/etc/fstab
に記述します。
//<ホストアドレス>/<ディレクトリ> /mnt/<マウントポイント> cifs _netdev,x-systemd.automount,credentials=/etc/smb-credentials/.password1,file_mode=664,dir_mode=775 0 0
reboot
してマウントできれば成功。