次の(v)FAT(Linux)に対してMountoptionが何をしているのかを調べようとしています。
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
(言及どおり)現在としては私にとってあまり役に立ちません。いいねソースの使用…
からutime
:utime() システムコールは、filename で指定された inode のアクセスおよび変更時間を次に変更します。行動時間とmodtime
時間フィールド。
私はそれを次のように読みました:変更タイムスタンプを有効にします。このマウントオプションを使用する方法の実際的な例を提示できるように、大変お世話になります(allow_utim
)。
答え1
一般的な Unix ファイル属性をサポートするファイルシステムでは、各ファイルには所有者として指定されたユーザーがあります。ファイルの所有者だけがタイムスタンプを変更できますutime
。他のユーザーは書き込み権限を持っていてもタイムスタンプを変更できません。
FATファイルシステムは所有者のようなものを記録しません。 FATファイルシステムドライバは、特定のユーザー(たとえば、インストールを実行したユーザーまたはパラメータで指定されたユーザー)が各ファイルの所有者であるかのように偽装しますuid
。一般ルールを使用すると、そのユーザーだけがタイムスタンプを変更できます。ファイルには、パラメータによって決定される対応するファイルが属するグループもありますgid
。
FATファイルシステムはUnixファイルの権限を記録しないため、ドライバはそれを補償します。umask
、fmask
およびパラメータに基づいて権限を割り当てるため、dmask
すべてのディレクトリとすべての一般ファイルは同じ権限を持ちます。
所有者以外のユーザーがファイルシステムへの書き込みアクセス権を持っている場合は、通常のファイルとディレクトリだけでなくファイルメタデータも変更できることが合理的です。 FATファイルシステムで重要な主なメタデータはファイルのタイムスタンプです。通常、所有者だけがタイムスタンプを変更できます。マウントオプションを渡すことで、allow_utime
他のユーザーがタイムスタンプを変更できるようにすることもできます。たとえば、グループがfoo
ファイルシステム内のすべてのエントリを変更できるようにし、他のグループは読み取ることができますが、書き込めないようにするには引数を渡します。
gid=foo,umask=002,allow_utime=20
allow_utime
(実際にはumaskのデフォルト値に基づいています。)