我做了以下操作,但我不明白最终结果:
$ 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--
所以,这就是我期望发生的事情:
- 创建目录并为该目录中新创建的文件设置默认值(如果是目录,则“X”是可执行的;如果已经可执行,则仅对常规文件可执行)
touch
创建一个具有“rw-rw-r--”权限和“rwx”掩码的新文件setfacl -m g::rwX mydir/test.txt
不应该执行任何操作,因为文件应该已经具有掩码为“rwx”的组“rw-”
实际发生的情况是:
- 报告默认创建的目录是:
default:user::rwx
default:group::rwx
default:mask::rwx
default:other::r-x
touch
制作一个显示“rw-rw-r--”的文件,ls
但getfacl
显示组权限实际上是“rwx”,只是被屏蔽为“rw-”,因为掩码是“rw-”而不是默认的“rwx” '- 由于 test.txt 已经是组“rwx”,因此
setfacl -m g::rwX mydir/test.txt
不会更改组权限,但会导致掩码重新计算为“rwx”,这使得该组的“x”权限现在显示出来ls
。
为什么目录上的默认掩码没有应用于新文件?为什么新文件的组权限包含执行位?
这是getfacl
mydir 上的:
# 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”?