web-dev-qa-db-ja.com

/ proc / mountsに表示されるマウントオプション

IIRCの場合、/proc/mountsに表示されるマウントオプションが変更されました。少し前にacluser_xattrが表示されていましたが、これらの機能をオフにすると、noaclnouser_xattrのみが表示されるようになりました。

これはどこで構成されていますか?それはファイルシステムコードのコンパイルされたデフォルトに依存しますか?ボリュームがサポートされているかどうかを確認するにはどうすればよいですか? ACL? setfaclgetfaclでテストするよりも良い解決策はありますか?

6
Hauke Laging

アップストリームは、デフォルトでacluser_xattrを有効にし 、それらを マウントオプションnoacl/nouser_xattrはまだ 有効なmountオプションであるため、表示されます)。

4
don_crissti

一部のファイルシステムタイプは、マウントオプションのないACLをサポートし、その他のファイルシステムタイプはマウントオプションのみをサポートします。 ext2/ext3/ext4の場合、acl/noaclを含むいくつかのデフォルトのマウントオプションがファイルシステムに保存されます(これはtune2fs -l /dev/BLOCK_DEVICE | grep '^Default mount options:'で確認できます)。 don_crisstiで示されます のように、ext4の場合、オプションが表示されるかどうかはカーネルのバージョンによって異なります(カーネル2.6.39以降、ファイルシステムの内容に関係なくaclがデフォルトになります)。 vfatやminixなどのファイルシステムはACLをサポートしていません。 tmpfs、xfs、zfsなどのファイルシステムは常にACLをサポートしています。

ファイルシステムのタイプ、バージョン、デフォルトをチェックするコマンド、およびカーネルバージョンの大きなテーブルを作成して維持する場合を除いて、ファイルシステムがマウントオプションまたはファイルシステムの特性を介してACLをサポートするかどうかを判断する方法はありません。 getfaclを使用した純粋な観察では、少なくともunixパーミッションを常に報告するため、わかりません。ファイルシステムがACLをサポートしている場合でも、必要なACLタイプをサポートしていない可能性があります。したがって、最善の策は、setfacl(または基盤となるC API)を呼び出して、必要なACLを設定することです。エラーステータスがEOPNOTSUPP(操作はサポートされていません)の場合、ファイルシステムが(このタイプの)ACLをサポートしていないことがわかります。