web-dev-qa-db-ja.com

ファイルシステムでACLがサポートされていることを確認するにはどうすればよいですか?

getfaclがエラーを出さないことを確認するだけで十分ですか、それとも他の場所をチェックして、ファイルシステムでACLがサポートされているかどうかを確認する必要がありますか?

14
0xC0000022L

マウントされたファイルシステムについて話している場合、ACLが可能かどうかを判断するための本質的な方法はわかりません。 「ACLはサポートされていますか?」 ACLにはいくつかのタイプがあるため(Solaris/Linux/not-POSIX-after-all、NFSv4、OSXなど)、それほど正確な質問ではありません。 getfaclは、それがすべての場合にUnixのアクセス許可を喜んで報告するため、テストとしては役に立たないことに注意してください。テストするACLをsetting試す必要があります。

マウントされたファイルシステムで、マウントオプション(/proc/mountにあります)にaclが存在するかどうかを確認できます。これだけでは十分ではないことに注意してください。カーネルのバージョンとファイルシステムのタイプも考慮する必要があります。一部のファイルシステムタイプでは、マウントオプションに関係なく、常にACLを使用できます。これは、tmpfs、xfs、およびzfsの場合です。明示的に除外しない限り、一部のファイルシステムにはACLがあります。これが当てはまる カーネル2.6.39以降のext4の場合

ACLが利用可能かどうかを知るには、次のことができます。

  1. 現在のカーネルバージョンとファイルシステムを確認します。
    uname -r
    df -Tまたはmount | grep root

    最近のディストリビューションでは、ACLマウントオプションがデフォルトで含まれています(カーネル2.6以降)。したがって、/ etc/fstab(または同様のもの)で再定義する必要はありません。関連するファイルシステムの非網羅的なリスト:ext3、ext4、tmpfs、xfsおよびzfs。

    古い設定の場合は、カーネルを再コンパイルするか、/etc/fstabにaclを追加する必要があります。
    fstabの例:/dev/root / ext4 acl,errors=remount-ro 0 1

  2. 既存のACL設定を探します(「通常の」構成場所は/ bootです):
    Sudo mount | grep -i acl #optionnal
    cat /boot/config* | grep _ACL

    システムによっては、代わりに/procで設定を見つけることができます。 .gzアーカイブから構成を抽出し、acl設定を検索する方法は次のとおりです。
    cat /proc/config.gz | gunzip > running.config && grep -i 'acl' running.config
    cat running.config | grep _ACL

    次のように表示されます:
    CONFIG_EXT3_FS_POSIX_ACL=y
    CONFIG_EXT2_FS_POSIX_ACL=y
    CONFIG_XFS_POSIX_ACL=y

    ファイルシステムの場合、次の方法で詳細情報を取得できます。
    Sudo tune2fs -l /xxx/xxx| grep 'Default mount options:'
    (xxx/xxxをファイルシステムに置き換えます)

-
ヘルプ情報は以下にあります:
- superuser.com
- serverfault
- bencane.com
- wiki.archlinux.org

4
xaa

ext2/3/4またはbtrfsを使用している場合は、aclをデフォルトで有効にする必要があります。

確認する:

tune2fs -l /dev/sdXY | grep "Default mount options:"

出力に含まれていない場合は、次のようにします。

tune2fs -o acl /dev/sdXY

1