web-dev-qa-db-ja.com

FATマウントオプションallow_utimeの説明

次の(v)FATのMountoptionが(Linuxで)正確に何をするのかを理解しようとしています:

allow_utime = ###-このオプションは、mtime/atimeの権限チェックを制御します。

              20 - If current process is in group of file's group ID,
                   you can change timestamp.
               2 - Other users can change timestamp.

             The default is set from `dmask' option. (If the directory is
             writable, utime(2) is also allowed. I.e. ~dmask & 022)

             Normally utime(2) checks current process is owner of
             the file, or it has CAP_FOWNER capability.  But FAT
             filesystem doesn't have uid/gid on disk, so normal
             check is too unflexible. With this option you can
             relax it.

[ ソース ]

質問これ(上記)はどういう意味ですか?

それを調べようとすると、私はあまり役に立たないCコードで終わります。したがって、これもman 2 utime(前述のように)現時点では私を大いに助けてくれます。 ソースを使用したい

From utimeutime()システムコールは、filenameで指定されたiノードのアクセス時間と変更時間をactimemodtimeに変更します。それぞれ時間のフィールド。

私はこれを次のように読みました:タイムスタンプの変更を有効にします。このMountoptionの使用方法の実際の例を示すことができるあなたのためのスーパーエクストラ賞賛(allow_utim

2
erch

通常のUnixファイル属性をサポートするファイルシステムでは、各ファイルには所有者として指定されたユーザーがいます。ファイルの所有者のみが、タイムスタンプをutimeで変更できます。他のユーザーは、書き込み権限がある場合でも、タイムスタンプを変更することはできません。

FATファイルシステムは所有者のようなものを記録しません。 FATファイルシステムドライバーは、特定のユーザーがすべてのファイルの所有者であると偽ります。つまり、マウントを実行するユーザーか、uidパラメーターで指定されたユーザーのいずれかです。通常のルールを使用すると、そのユーザーのみがタイムスタンプを変更できます。ファイルには、gidパラメーターによって決定される所有グループもあります。

FATファイルシステムはUnixファイルのパーミッションを記録しないため、ドライバーがそれらを構成します。 umaskfmask、およびdmaskパラメータに基づいてアクセス許可を割り当てるため、すべてのディレクトリとすべての通常のファイルに同じアクセス許可があります。

所有者以外のユーザーがファイルシステムへの書き込みアクセス権を持っている場合、通常のファイルやディレクトリだけでなく、ファイルのメタデータも変更できることは理にかなっています。 FATファイルシステムで重要な主なメタデータは、ファイルのタイムスタンプです。通常、タイムスタンプを変更できるのは所有ユーザーのみです。 allow_utimeマウントオプションを渡すことにより、他のユーザーがタイムスタンプを変更できるようにすることができます。たとえば、グループfooがファイルシステム内のすべてを変更できるようにし、他のユーザーが読み取りはできるが書き込みはできないようにするには、パラメーターを渡します。

gid=foo,umask=002,allow_utime=20

(これは実際には、umaskに基づくallow_utimeのデフォルト値です)。