はじめに
sambaなNASがあるのですが、Linuxから接続しようとすると、いろいろめんどくさいので思い切っていろいろ設定して楽に接続できるようにしました。
パスワードを保存してそれで自動でログインを行う方法はありますが、パスワードを保存するのが怖いので、ログイン時に自動的にパスワードを要求するようにしました。
参考にしたサイト
Qitta @kihoair「fstabについて」
Hatena Blog bugfix「一般ユーザでmountできるようにする」 ←1960年1月4日投稿!?
Qitta @dojineko「LinuxからSambaをマウントする」
ITmediaエンタープライズ「bashが起動時に実行するファイル」
仕組み
bashログイン時に実行される~/.bash_profileを使用してmountを行い、そのときにパスワード入力を求めます。また、一般ユーザでもmountができるように、/etc/fstabに設定を記述しておきます。
手順
0. 問題なくマウントできるかテスト
sudo mount.cifs //IPアドレスorホスト名/任意のディレクトリ マウントポイント -o user=ユーザ
これを実行するとユーザのパスワードが聞かれて、入力するとマウントされます。正常にマウントされれば問題なしです。
1. /etc/fstabに記述
テストでは、sudoを使って管理者権限でマウントを行いました。この状態では、一般ユーザに書き込み権限が与えられません。一般ユーザでもマウントと書き込みができるようにするには、/etc/fstabに記述をする必要があります。
sudo vim /etc/fstab
で開き、一番下の方に
#NAS
//IPアドレスorホスト名/任意のディレクトリ マウントポイント cifs user,noauto,rw 0 0
を記述します。これで一般ユーザでもマウントができるようになります。
2. スクリプトを書く
適当にホームディレクトリで
touch mountNAS.sh
chmod +x mountNAS.sh
tee mountNAS.sh
をして、以下のコードをコピペしてctrl+cでスクリプトを書きます。
#!/bin/bash
MOUNT_POINT="マウントポイント"
DEVICE="//IPアドレスorホスト名/任意のディレクトリ"
USER="ユーザ"
# マウントポイントがマウントされているかをチェック
if ! mountpoint -q "$MOUNT_POINT"; then
echo "$MOUNT_POINT is not mounted. Mounting $DEVICE..."
mount.cifs "$DEVICE" "$MOUNT_POINT" -o user="$USER"
if [ $? -eq 0 ]; then
echo "$DEVICE has been successfully mounted to $MOUNT_POINT."
else
echo "Failed to mount $DEVICE to $MOUNT_POINT."
exit 1
fi
else
echo "$MOUNT_POINT is already mounted."
fi
あとは、vim mountNAS.shで開いて、マウントポイント、IPアドレスorホスト名/任意のディレクトリ、ユーザのところを書いてあげてください。
3. bashのスタートアップに登録する
先程のスクリプトをログインするたびに実行すれば、目的達成です。そのために、~/.bash_profileに先程のスクリプトを実行するように書きます。
完了
テストでマウントした物をアンマウント(sudo umount マウントポイント
)して、再ログインor新しくターミナルを起動すればNASのパスワードを入力するように求められるはずです。問題なくマウントできればこれで完了です。
おわりに
全体的には簡単な作業でしたが、これをやると便利に尚且つ安全性を損なわずにできるのでおすすめです。流石に、暗号化されてないパスワードを保存するのは怖すぎるので…