CFマウント時のパーミッションについて

Windowsで読み書きできるCFはVFAT形式にてフォーマットされています。
このページではVFAT形式のCFに対してのファイル読み書き権限について説明します。

対象

  • 26環境
  • CAT709
  • CAT760

パーミッションについて

FAT/VFAT形式では複数ユーザーに対する書き込み権限を個別に指定できません。CF全体を一つの権限で管理します。

CF内にcoLinux-0.6.3-src.tar.gzというファイルがあるとして、普通にCFをマウントすると

# mount /dev/hda1 /mnt -t vfat
# ls -l /mnt
-rwxr-xr-x  1 root root 2508162 Mar 13  2006 coLinux-0.6.3-src.tar.gz

のように

ファイルのオーナ root、グループ root 読み書き権限 644

の条件でマウントします。

ファイル、ディレクトリの、オーナとグループを変えるには uid=value と gid=value のオプションを用います。まず /etc/passwd ファイルから、uidとgidを得ます。

# cat /etc/passwd
kaihatsu:xxxxxxxxxxxxxxxxxx:1000:1000:,,,:/home/kaihatsu:/bin/bash

この場合 kaihatsu ユーザの uid=1000, gid=1000 です。

CFをkaihatsuユーザ権限でマウントします

# mount /dev/hda1 /mnt -t vfat -o uid=1000,gid=1000
# ls -l /mnt/
-rwxr-xr-x  1 kaihatsu kaihatsu 2508162 Mar 13  2006 coLinux-0.6.3-src.tar.gz

このように ファイルの権限が kaihatsu:kaihatsu となりました。

パーミッションを変更するためには、umaskオプションを用います。umaskは、マスクビットです。全ユーザのWriteビットをマスクするためには8進数で222となりますので

# mount /dev/hda1 /mnt -t vfat -o uid=1000,gid=1000,umask=222
# ls -l /mnt
-r-xr-xr-x  1 kaihatsu kaihatsu 2508162 Mar 13  2006 coLinux-0.6.3-src.tar.gz
↑Writeビットがマスクされた

オーナのみRead/Writeできるようにするためには、グループと他人をマスクするので umask=077となります。

# mount /dev/hda1 /mnt -t vfat -o uid=1000,gid=1000,umask=077
# ls -l /mnt
-rwx------  1 kaihatsu kaihatsu 2508162 Mar 13  2006 coLinux-0.6.3-src.tar.gz

関連