10
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Linuxでのsambaのマウント。起動時にマウントするまで。

Last updated at Posted at 2021-01-08

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> オプションを使い、ユーザーとパスワード情報を記述したファイルを別に用意してそれを読ませましょう。

今回は/etcsmb-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 してマウントできれば成功。

10
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?