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
ファイルの権限が表示されるのはなぜですか?
答え1
ディスクに保存されているファイルシステムはすべてのファイル権限を保存しませんが、ファイルシステムドライバはそれをオペレーティングシステムに提供する必要があります。これはUnixファイルシステムの概念の不可欠な部分であり、システムコールインターフェイスは不足している権限を表現できないためです。
また、ファイルに権限ビットがまったくない場合はどうなるか考えてみてください。と同じで0777
すべてのアイテムにアクセスしますか、それとも同じで0000
誰にもアクセスしませんか?しかし、これら二つははいファイル権限がありますが、なぜ表示されないのですか?または、より便利なタスクを実行し、合理的な権限を設定する方法があります。
したがって、ドライバは一部の権限、つまりすべてのファイルに対してほとんど同じ権限を偽造します。権限とファイルの所有者とグループは、インストール時に構成できます。これは「Fat インストールオプション」で説明されています。mount(8) のマニュアルページ:
脂肪取付オプション
(注:FATは別々のファイルシステムではなく、msdos、umsdos、およびvfatファイルシステムの共通部分です。)
uid=value
そして、gid=value
すべてのファイルの所有者とグループを設定します。 (デフォルト:現在のプロセスのUID、GID)
umask=value
umask(存在しない権限のビットマスク)を設定します。デフォルトは現在のプロセスのumaskです。値は8進数で提供されます。
dmask=value
ディレクトリにのみ適用されるumaskを設定します。デフォルトは現在のプロセスのumaskです。値は8進数で提供されます。
fmask=value
通常のファイルにのみ適用されるumaskを設定します。デフォルトは現在のプロセスのumaskです。値は8進数で提供されます。
chmod ugo-w file
FATファイルシステムに保存されている便利な権限の1つは、実行時に消える読み取り専用ビットです。
これは、上記のオプションがブロック権限としての価値を持つ理由でもあります。去るしたがって、すべてのファイルに対するfmask=0133
すべての権限がグループや他のファイルからx
削除され削除されます。w
その後、ファイルは読み取り専用ビットがクリアされているか設定されているかに応じて0644
/rw-r--r--
または0444
/権限を持ちます。r--r--r--
また、デフォルトは呼び出しプロセスから継承されるため、コマンドラインから呼び出すとmount()
シェルmount
の値がumask
適用されます。
答え2
ただし、これらのファイルには権限があります。ユーザー男RWアクセス権を持っている一方、一部のランダムユーザーは読み取りアクセス権しか持っていません。これらの権限はファイルシステム自体からではなく、マウントオプション(-o uid / gid / umask)から来ていますが、これは現実性を損なうことはありません。
さまざまなオプションを使用して複数のvfatパーティションをマウントでき、次のものを使用できます。エルエスそのオプションが何であるかを決定することです。使用することもできますマウント - バインド単一のディレクトリにさまざまなvfatパーティションのファイルが含まれていることを確認します。エルエス各ファイルに指定された権限が正しく表示されます。
答え3
ls
FAT32については知らず、open
POSIX //システムコールを介してカーネルによって公開されたreaddir
仮想ファイルシステム(VFS)インタフェースについてのみ知っています。stat
Linuxはファイルの概念をサポートしていません。いいえユーザー/グループ/その他の権限ビットには、カーネルによって考慮されるメンバー(およびuidおよびgidメンバー)struct stat
のみが含まれています。mode_t st_mode;
〜しなければならないls -l
製作時に記入してくださいstat(2)
システムコール。
これらのフィールドが「使用不可」または「該当なし」であることを示す特別なコードがないため、カーネルのvfatドライバ〜しなければならない何かを作ってみてください。 FAT16 / FAT32には読み取り専用フラグがありますが、所有者/グループはumaskと同様にマウントオプションから来ます。