ACL 权限神秘地赋予组执行权限

ACL 权限神秘地赋予组执行权限

我做了以下操作,但我不明白最终结果:

$ mkdir mydir
$ setfacl -d -m u::rwX,g::rwX,o::rX,m::rwx mydir
$ touch mydir/test.txt
$ getfacl mydir/test.txt
# file: mydir/test.txt
# owner: ubuntu
# group: ubuntu
user::rw-
group::rwx          #effective:rw-
mask::rw-
other::r--

$ setfacl -m g::rwX mydir/test.txt
$ getfacl mydir/test.txt
# file: mydir/test.txt
# owner: ubuntu
# group: ubuntu
user::rw-
group::rwx
mask::rwx
other::r--

所以,这就是我期望发生的事情:

  1. 创建目录并为该目录中新创建的文件设置默认值(如果是目录,则“X”是可执行的;如果已经可执行,则仅对常规文件可执行)
  2. touch创建一个具有“rw-rw-r--”权限和“rwx”掩码的新文件
  3. setfacl -m g::rwX mydir/test.txt不应该执行任何操作,因为文件应该已经具有掩码为“rwx”的组“rw-”

实际发生的情况是:

  1. 报告默认创建的目录是:
    default:user::rwx
    default:group::rwx
    default:mask::rwx
    default:other::r-x
  1. touch制作一个显示“rw-rw-r--”的文件,lsgetfacl显示组权限实际上是“rwx”,只是被屏蔽为“rw-”,因为掩码是“rw-”而不是默认的“rwx” '
  2. 由于 test.txt 已经是组“rwx”,因此setfacl -m g::rwX mydir/test.txt不会更改组权限,但会导致掩码重新计算为“rwx”,这使得该组的“x”权限现在显示出来ls

为什么目录上的默认掩码没有应用于新文件?为什么新文件的组权限包含执行位?

这是getfaclmydir 上的:

# file: mydir
# owner: ubuntu
# group: ubuntu
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:mask::rwx
default:other::r-x

为什么getfacl在默认设置中不包含“X”(大写)而仅显示“x”?

相关内容