FAT32ファイルシステムはファイルのアクセス許可をサポートしていないと思いますが、ls -l
FAT32パーティション、ls -l
は、ファイルに権限があることを示しています。
-rw-r--r-- 1 john john 11 Mar 20 15:43 file1.txt
-rw-r--r-- 1 john john 5 Mar 20 15:49 file2.txt
なぜls -l
ファイルの権限を表示しますか?
ディスクに保存されているファイルシステムはファイルの権限を保存しませんが、ファイルシステムドライバーはオペレーティングシステムにそれらを提供する必要があります。これらはUnixファイルシステムの概念の不可欠な部分であり、システムコールインターフェイスには権限が存在することを示す方法がないためです。行方不明。
また、ファイルに許可ビットがまったくない場合はどうなるでしょうか。 _0777
_と同じ、つまりすべてへのアクセス。または_0000
_と同じ、つまり誰にもアクセスできない?しかし、それらの両方はファイル権限なので、なぜそれらを表示しないのですか?または、もっと便利なことをして、適切なアクセス許可を設定する方法を用意してください。
したがって、ドライバはいくつかの権限を偽装し、すべてのファイルに対して同じ権限を付与します。アクセス許可は、ファイルの所有者およびグループとともに、マウント時に構成できます。これらは mount(8)man page の「脂肪のマウントオプション」で説明されています:
脂肪のマウントオプション
(注:fatは個別のファイルシステムではなく、msdos、umsdos、vfatファイルシステムの共通部分です。)_
uid=value
_ and _gid=value
_
すべてのファイルの所有者とグループを設定します。 (デフォルト:現在のプロセスのUIDおよびGID。)_
umask=value
_
umask(存在しない権限のビットマスク)を設定します。デフォルトは現在のプロセスのumaskです。値は8進数で与えられます。_
dmask=value
_
ディレクトリにのみ適用されるumaskを設定します。デフォルトは現在のプロセスのumaskです。値は8進数で与えられます。_
fmask=value
_
通常のファイルにのみ適用されるumaskを設定します。デフォルトは現在のプロセスのumaskです。値は8進数で与えられます。
権限はマスクとして提示されるため、最終的な権限はマスクの否定であることに注意してください。 _fmask=0133
_を指定すると、すべてのファイルにアクセス許可_0644
_、または_rw-r--r--
_が付与されます。
また、デフォルトはmount()
を呼び出すプロセスから継承されるため、コマンドラインからmount
を呼び出すと、シェルのumask
が適用されます。
しかし、ファイルには権限があります。ユーザーjohnにはRWアクセス権がありますが、一部のランダムユーザーには読み取りアクセス権しかありません。これらの権限はファイルシステム自体からではなく、マウントオプション(-o uid/gid/umask)から取得されたため、現実性が低下することはありません。
異なるオプションでマウントされた複数のvfatパーティションを持つことができ、lsを使用してそれらのオプションが何であるかを決定できます。 mount --bindを使用して、単一のディレクトリに異なるvfatパーティションからのファイルを含めることもできますlsは、各ファイルに指定されている権限を正しく示します。
ls
はFAT32を認識していません。POSIXopen
/readdir
/stat
システムコール。
Linuxは、次のようなファイルの概念をサポートしていません持っていないユーザー/グループ/その他の許可ビット、_struct stat
_には_mode_t st_mode;
_メンバー(およびuid、gidメンバー)のみが含まれますカーネルmust _ls -l
_が stat(2)
システムコールを行うときに記入する.
これらのフィールドのいずれについても「使用不可」または「適用不可」を意味する特別なコードはないため、カーネルのvfatドライバーmustは何かを構成します。 FAT16/FAT32には読み取り専用フラグがありますが、それ以外の場合、所有者/グループはマウントオプションから取得され、umaskから取得されます。