Ubuntu / Linux でNTFSフォーマットのHDDをマウントしていて問題が発生したので、NTFS HDDのマウント設定について見なおした。
環境
Desktop (Ubuntu v16.04, NTFS-HDD)
エラーメッセージ
NTFSフォーマットの3TB HDD上でC言語で書いたプログラムを実行するとパーミッションに関するエラーメッセージが表示される。
# NTFS-HDD上のCのプログラム実行 $ ./a.out Bash : Permission denied
とりえあずファイルのパーミッションを確認するもデフォルト通りで問題なし。
# パーミッションの確認 $ ls -l -rwxrwxr-x 1 hiyoshi hiyoshi 13280 2月 6 22:38 a.out
解決
手元で色々試しながら確認してみると、システムドライブ上では通常通りプログラムが実行できて、データディスクとしてマウントしているNTFSフォーマットのHDD 3台どれもがCのプログラムを実行できなかった。
マウントオプションに問題がありそうだったので試行錯誤したところ上手く行った。
設定変更前の /etc/fstab はこちら。
$ sudo vim /etc/fstab UUID=a80e678d-0f83-4ed6-bf26-3bd8a1c96ad1 / ext4 errors=remount-ro 0 1 # swap was on /dev/sda5 during installation UUID=516105e9-62d5-46bb-b913-22c7d8eaeb1a none swap sw 0 0 #UUID=844C3B0A4C3AF690 /mnt/dd ntfs-3g auto,nosuid,nodev,nofail,x-gvfs-show,users,permissions 0 0 #UUID=0A622D03622CF4DB /mnt/da ntfs-3g auto,nosuid,nodev,nofail,x-gvfs-show,users,permissions 0 0 #UUID=708045EF8045BC7A /mnt/db ntfs-3g auto,nosuid,nodev,nofail,x-gvfs-show,users,permissions 0 0 //192.168.3.4/hddr /mnt/na cifs username=pi,password=Lapis729,defaults 0 0
ひとまずマニュアルを開いてオプションの詳細についてざっくり確認した。
# 後ろの方にマウントのオプションについて記載あり $ man mountMOUNT(8) System Administration MOUNT(8) NAME mount - mount a filesystem SYNOPSIS mount [-l|-h|-V] mount -a [-fFnrsvw] [-t fstype] [-O optlist] mount [-fnrsvw] [-o options] device|dir mount [-fnrsvw] [-t fstype] [-o options] device dir ...
設定変更後の /etc/fstab がこちら。
defaults オプションを利用したので見た目は大分すっきりしました。
# /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> # / was on /dev/sda6 during installation UUID=a80e678d-0f83-4ed6-bf26-3bd8a1c96ad1 / ext4 errors=remount-ro 0 1 # swap was on /dev/sda5 during installation UUID=516105e9-62d5-46bb-b913-22c7d8eaeb1a none swap sw 0 0 UUID=844C3B0A4C3AF690 /mnt/dd ntfs-3g defaults,x-gvfs-show,permissions 0 0 UUID=0A622D03622CF4DB /mnt/da ntfs-3g defaults,x-gvfs-show,permissions 0 0 UUID=708045EF8045BC7A /mnt/db ntfs-3g defaults,x-gvfs-show,permissions 0 0 //192.168.3.4/hddr /mnt/na cifs username=pi,password=Lapis729,defaults 0 0
簡単にオプションについてまとめると
defaults オプションでブート時の自動マウントなどを行う。
x-gvfs-show オプションでファイラーへの表示を有効にする。
permissions オプションでパーミッションの変更を有効にする。
マニュアルに載ってないオプションもありますが試行錯誤とオプション名から大体このような感じだと推定。
ちなみに users オプションを外すとC言語のプログラムが実行できるようになりました。
この記事を読んだ人はこんな記事も読んでいます。
【Linux】UbuntuでNTFSのHDDをマウントする設定