web-dev-qa-db-ja.com

ACLは有効になっていませんが、機能しています

これはどのように可能ですか?

  1. ACLは_/etc/fstab_で有効になっておらず、手動でfstabを開くか、_Sudo mount | grep -i acl_を実行することで確認できます。

  2. しかし、getfaclsetfaclコマンドは問題なく動作します!

問題は、最初にこれが機能している理由を理解する必要があり、次に他のシステムでACLサポートが利用可能かどうかを確認する必要があるので、どうすればよいですか?

ACLコマンドは、_/_と_/mydrive_の両方でテストされました(mount出力については以下を参照してください)。

OS情報:

_uname -a_:
_Linux localhost 3.2.0-4-AMD64 #1 SMP Debian 3.2.57-3+deb7u1 x86_64 GNU/Linux_

_lsb_release -a_:
No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 7.5 (wheezy) Release: 7.5 Codename: wheezy

mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=384309,mode=755) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=308664k,mode=755) /dev/disk/by-uuid/3180f94a-e765-44e9-93f7-33aa1c6422c0 on / type ext4 (rw,relatime,errors=remount-ro,user_xattr,barrier=1,data=ordered) tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k) tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=1188500k) /dev/sda5 on /mydrive type ext4 (rw,relatime,user_xattr,barrier=1,data=ordered) rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime) binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nosuid,nodev,noexec,relatime) fusectl on /sys/fs/Fuse/connections type fusectl (rw,relatime)

5
slashsbin

ext3/4 ファイルシステムのヘッダーには、デフォルトのマウントオプション属性があります。あなたはそれを見ることができます:

$ LC_ALL=C tune2fs -l /dev/device | grep 'Default mount options:'
Default mount options:    user_xattr acl

tune2fs -oで変更でき、-o noaclでマウントすると上書きされます。

新しいファイルシステムを作成する場合、mke2fsは、/etc/mke2fs.confで指定した内容に基づいてファイルシステムを設定します。たとえば、私の持っているもの:

[defaults]
[...]
        default_mntopts = acl,user_xattr
[...]

ただし、 Gillesが指摘 のように、2.6.39以降、デフォルトでacluser_xattrがオンになっています(コンパイル時にカーネルでサポートが有効になっている場合、通常はデフォルトです)。したがって、aclのデフォルトのマウントオプションがなくても、新しいカーネルではaclsがデフォルトで有効になり、無効にする唯一の方法はmount -o noaclを使用することです。

ACLがサポートされているかどうかを確認するには、ACLをクエリしてみることをお勧めします。

$ chacl -l /the/mountpoint
chacl: cannot get access ACL on '/the/mountpoint': Operation not supported
14