使用 Linux ACL 覆盖目录创建模式

使用 Linux ACL 覆盖目录创建模式

我尝试授予特定用户(例如“测试”)读取任何新创建的目录的权限。我使用以下方法执行此操作:

undefine@undefine-ThinkPad-T430s:~/test$ getfacl .
# file: .
# owner: undefine
# group: undefine
user::rwx
group::rwx
other::r-x

undefine@undefine-ThinkPad-T430s:~/test$ setfacl -d -m u:test:rX .
undefine@undefine-ThinkPad-T430s:~/test$ getfacl .
# file: .
# owner: undefine
# group: undefine
user::rwx
group::rwx
other::r-x
default:user::rwx
default:user:test:r-x
default:group::rwx
default:mask::rwx
default:other::r-x

然后 - 当我使用 mkdir 命令创建一个新目录时 - 它运行正常:

undefine@undefine-ThinkPad-T430s:~/test$ mkdir testa
undefine@undefine-ThinkPad-T430s:~/test$ getfacl testa
# file: testa
# owner: undefine
# group: undefine
user::rwx
user:test:r-x
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:test:r-x
default:group::rwx
default:mask::rwx
default:other::r-x

但是 - 如果我创建一个新的目录强制模式 - 有效权限为空:

undefine@undefine-ThinkPad-T430s:~/test$ mkdir -m 700 testb    
undefine@undefine-ThinkPad-T430s:~/test$ getfacl testb
# file: testb
# owner: undefine
# group: undefine
user::rwx
user:test:r-x           #effective:---
group::rwx          #effective:---
mask::---
other::---
default:user::rwx
default:user:test:r-x
default:group::rwx
default:mask::rwx
default:other::r-x

并且测试用户无法读取目录内的文件。

有没有办法避免这种情况,并授予“测试”用户读取目录内容的权限,无论使用何种模式,当目录创建时?我可以使用 incron 作业来解决这个问题,该作业在目录创建后“修复”权限 - 但这是一种肮脏的黑客行为,我想“以正确的方式”做到这一点

我在 docker 系统中遇到了真正的问题,其中 dockerd 以 0700 模式在 /var/lib/docker/containers 目录中创建自己的目录。

答案1

您有使用“模式”标志创建目录时授予文件夹的权限的示例吗?据我所知,ACL 权限与“正常”文件权限 (chmod) 相结合。但文件权限优先于 ACL 权限。我能够通过创建一个 ACL 权限低于文件夹权限的文件夹来复制您所解释的内容。

或者说,可以使用 umask 吗?

test@shell-server:~$ getfacl .
# file: .
# owner: test
# group: test
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:test:r-x
default:group::r-x
default:mask::r-x
default:other::r-x

test@server:~$ mkdir -m 0100 dir3

test@server:~$ getfacl dir3/
# file: dir3/
# owner: test
# group: test
user::--x
user:test:r-x           #effective:---
group::r-x              #effective:---
mask::---
other::---
default:user::rwx
default:user:test:r-x
default:group::r-x
default:mask::r-x
default:other::r-x 

另外,查看此文件夹的“其他”权限,您的“测试”用户应该有权读取和更改此目录 (rx)?情况不是这样吗?

undefine@undefine-ThinkPad-T430s:~/test$ getfacl .
# file: .
# owner: undefine
# group: undefine
user::rwx
group::rwx
other::r-x

相关内容