turtlechanのブログ

無知の私がLinuxをいじりながら書いていくブログ

【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になっていないのが原因。

以下のコマンドでexfat-fuseを探します。

$ 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 になっていればオッケーです。

おわりに

何かの参考になれば幸いです。