【Linux】一般ユーザーで NTFS をマウントできるようにする
ラズパイ用。Sambaで使用するための設定メモ。
はじめに
通常は一般ユーザーでマウントする場合は、'/etc/fstab' に設定を記述しますが、NTFS だとパーミッションがどうだので怒られる。
ちなみに exFAT とは違ってパーミッションはSUIDに設定されている(はず)。
$ ls -l /bin/ntfs-3g
-rwsr-xr-x 1 root root 112456 3月 15 2019 /bin/ntfs-3g
設定
多分以下のことをすれば一般ユーザーでマウントできるようになったはず。
※確認するのが面倒なので確かめてはいないです。
ユーザーを disk グループに所属させる
以下のコマンド。
$ sudo gpasswd -a ユーザー名 disk
適応するために一旦ログアウト。
$ exit
ログインして以下のコマンドで確認。
$ groups
turtlepi adm disk dialout cdrom sudo audio video plugdev games users input netdev gpio i2c spi
'disk' という文字があればオッケー。'turtlepi' は私のユーザー名です。
マウント先のパーミッションを変更
マウント先は '/mnt/hdd/naspi' と想定しています。
各自読み替えて下さい。
$ sudo chmod 777 /mnt/hdd/naspi
/etc/fstab にマウント情報を記入
Samba を想定しているので、再起動ごとにデバイスファイルが変わると困るので UUID で指定します。
以下のコマンドで、マウントしたいデバイスのUUIDを確認。
$ sudo blkid
/dev/mmcblk0p1: LABEL="boot" UUID="16D2-035F" TYPE="vfat" PARTUUID="eff4f6a1-01"
/dev/mmcblk0p2: LABEL="rootfs" UUID="d065e631-6b9d-48c0-a8fe-e663b42828e0" TYPE="ext4" PARTUUID="eff4f6a1-02"
/dev/sda1: UUID="4DB262664BB9FD7B" TYPE="ntfs" PTTYPE="dos"
/dev/mmcblk0: PTUUID="eff4f6a1" PTTYPE="dos"
赤くしたやつが今回マウントしたいデバイス(外付けHDD)。
テキストエディタ等で /etc/fstab を編集。
$ sudo vi /etc/fstab
私の場合は、以下を記入した。
UUID=4DB262664BB9FD7B /mnt/hdd/naspi ntfs-3g user,async,noauto,exec,gid=65534,rw,uid=65534,umask=000 0 0
上書きしたらオッケー。
マウントしてみる
マウントできるか確認してみます。
コマンドは以下。'$ mount マウント先のディレクトリ' です。
$ mount /mnt/hdd/naspi
エラーが出なければ正常にマウントされているはずです。
df コマンドで確かめてみてもいいです。
余談
crontab で起動時にマウント
fstab に auto を指定すると、OS起動時にそのデバイスが接続されていないと起動しなくなります。接続してあげればちゃんと起動します。でも、少々不便です。
一般ユーザーでマウントできるように設定しているなら crontab で起動時にマウントするようにしておくのが私的にオススメ。
fstab のオプションを noauto にしておく。
そして普段使う一般ユーザーで
$ crontab -e
して、以下を記述。
@reboot mount マウント先のディレクトリ
これで起動時に一般ユーザーでマウントされ、デバイスが接続されていなかった場合でもOSは起動します。
exFAT を一般ユーザーでマウント
exFAT も fstab に記述しただけでは、一般ユーザーでマウントできません。
exfat-fuse はデフォでSUIDになっていないのが原因。
$ which mount.exfat
/sbin/mount.exfat
$ ls -l /sbin/mount.exfat
lrwxrwxrwx 1 root root 16 1月 20 2017 /sbin/mount.exfat -> mount.exfat-fuse
$ ls -l /sbin/mount.exfat-fuse
-rwxr-xr-x 1 root root 46724 1月 20 2017 /sbin/mount.exfat-fuse
/sbin/mount.exfat-fuse が実体です。
以下のコマンドでSUIDにします。
$ sudo chmod 4755 /sbin/mount.exfat-fuse
以下のコマンドで確認。
ls -l /sbin/mount.exfat-fuse
-rwsr-xr-x 1 root root 46724 1月 20 2017 /sbin/mount.exfat-fuse
-rwsr-xr-x になっていればオッケーです。
おわりに
何かの参考になれば幸いです。