我为虚拟机设置的一些 ACL 出现了一个奇怪的问题。我的虚拟机存储在目录 /shared/vms 中。此目录的 ACL 为:
getfacl .
# file: .
# owner: root
# group: root
user::rwx
user:qemu:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:qemu:rwx
default:group::rwx
default:mask::rwx
default:other::r-x
由于某些我确实无法理解的原因,我的最新 VM 没有 qemu 的权限:
getfacl ./demo.qcow2
# file: demo.qcow2
# owner: root
# group: root
user::rw-
user:qemu:rwx #effective:---
group::rwx #effective:---
mask::---
other::---
根用户的 umask 是非常宽松的 0022。我为 virt-manager 使用的桌面用户有更严格的限制 0007。但是,这些不应该创建有效的掩码 --- !!!
那么,为什么我拥有这些有效权限?
答案1
有效掩码是通过AND
对权限和掩码进行按位运算来计算的。由于您的掩码为---
,因此您创建的任何自定义 ACL 条目的所有权限位都将被关闭。要解决此问题,您需要将掩码设置为rwx
如下形式:
setfacl -m m::rwx ./demo.qcow2
对任何显示的有效权限不符合您的要求的文件重复此操作。通常,每次更改 ACL 时都会重新计算掩码,但此文件可能是使用该--no-mask
选项创建的,或者某些东西可能明确设置了掩码。