みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

fstab uid,gid指定でエラー

OS起動時にHDDをマウントする時に、マウントポイントに指定のUID、GIDの所有権を設定したいというケースではまったのでメモ。

googleで調べた

mount時にuidやgidを指定したい場合は/etc/fstabに以下のように書く。

/dev/sdb1 /media/data ext4 uid=1000,gid=1000 0 0

マウントオプションの部分にuid,gidを指定するということ。

エラー

しかし以下のようにエラーになった。

EXT4-fs (sdb): Unrecognized mount option "uid=1000" or missing value

uidというマウントオプションが使用できない。

原因

ext4はuid,gidというマウントオプションをサポートしていない。

uid=1000やgid=1000のマウントオプションは、実際にはfstabのルールではなく マウントするfilesystemのルールになる。 したがって、使用したいfilesystemがそのマウントオプションをサポートしていなければエラーとなる。

この場合、googleで調べた情報が古かったためext3向けの情報で、 それをext4に適用しようとしたためエラーとなってしまった。

ちょっと古めの情報は、filesystemのマウントオプションという視点ではなく fstabに書けるオプションという感じに読み取れるため誤解しやすい。

解決方法

一度、対象のストレージをマウントして、以下のようにchmodでパーミッションを指定する。

$ sudo mount /dev/sdb1 /mnt/data
$ sudo chown -R user:user /mnt/data

そして、fstabのマウントオプションからuid,gidの記述を抜く。

これで、次回からuser:userというパーミッションでマウントされるようになる。