web-dev-qa-db-ja.com

「ls」コマンドがFAT32パーティション内のファイルの権限を表示するのはなぜですか?

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ファイルの権限を表示しますか?

40
user342731

ディスクに保存されているファイルシステムはファイルの権限を保存しませんが、ファイルシステムドライバーはオペレーティングシステムにそれらを提供する必要があります。これらは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が適用されます。

71
ilkkachu

しかし、ファイルには権限があります。ユーザーjohnにはRWアクセス権がありますが、一部のランダムユーザーには読み取りアクセス権しかありません。これらの権限はファイルシステム自体からではなく、マウントオプション(-o uid/gid/umask)から取得されたため、現実性が低下することはありません。

異なるオプションでマウントされた複数のvfatパーティションを持つことができ、lsを使用してそれらのオプションが何であるかを決定できます。 mount --bindを使用して、単一のディレクトリに異なるvfatパーティションからのファイルを含めることもできますlsは、各ファイルに指定されている権限を正しく示します。

22
Roman Odaisky

lsはFAT32を認識していません。POSIXopen/readdir/statシステムコール。

Linuxは、次のようなファイルの概念をサポートしていません持っていないユーザー/グループ/その他の許可ビット、_struct stat_には_mode_t st_mode;_メンバー(およびuid、gidメンバー)のみが含まれますカーネルmust _ls -l_が stat(2) システムコールを行うときに記入する.

これらのフィールドのいずれについても「使用不可」または「適用不可」を意味する特別なコードはないため、カーネルのvfatドライバーmustは何かを構成します。 FAT16/FAT32には読み取り専用フラグがありますが、それ以外の場合、所有者/グループはマウントオプションから取得され、umaskから取得されます。

15
Peter Cordes