使用 setfacl ACL 时的目录列表

使用 setfacl ACL 时的目录列表

我使用 setfacl 命令授予读取目录中文件的读取权限,但无法使用 ls 查看文件。我试过

setfacl -Rdm g:grouptoadd:rx /path/directory/

但是,我可以读取文件(当我使用文件的直接路径时,例如“/path/directory/myfile”)并且无法列出目录(ls /path/directory/)

答案1

您正在设置默认 ACL通过-d标志,而不是有效的 ACL。默认 ACL 是为在为其设置默认 ACL 的目录中创建的文件和目录设置 ACL 的机制。-d如果要将 ACL 应用到目录本身,请删除该选项。

如果这样做,getfacl您将看到“默认”条目。我建议阅读有关 Linux ACL 的更多信息。

[lzap@x1 foreman-packaging-rpm]$ getfacl /tmp/test
# file: tmp/test
# owner: lzap
# group: lzap
user::rwx
group::rwx
other::r-x

[lzap@x1 foreman-packaging-rpm]$ setfacl -dm u:lzap:rx /tmp/test

[lzap@x1 foreman-packaging-rpm]$ getfacl /tmp/test
# file: tmp/test
# owner: lzap
# group: lzap
user::rwx
group::rwx
other::r-x
default:user::rwx
default:user:lzap:r-x
default:group::rwx
default:mask::rwx
default:other::r-x

[lzap@x1 foreman-packaging-rpm]$ setfacl -m u:lzap:rx /tmp/test

[lzap@x1 foreman-packaging-rpm]$ getfacl /tmp/test
# file: tmp/test
# owner: lzap
# group: lzap
user::rwx
user:lzap:r-x
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:lzap:r-x
default:group::rwx
default:mask::rwx
default:other::r-x

要查看默认 ACL 的运行情况,只需在具有默认 ACL 的目录中创建一个文件即可。就我而言touch /tmp/test/a_file,它将继承u:lzap:r-xACL。

答案2

我相信“要添加的组”没有执行权限小路目录。ls /path/directory/仅当您对构成路径的所有目录具有执行权限时才可以。

尝试$ getfacl /path并确保“添加组" 具有执行权限。

如果没有,您可以简单地添加它:$ setfacl -m g:grouptoadd:x /path

另外,使用setfacl不带选项的命令-d

答案3

正如我测试的,当我不使用d选项(这意味着默认)时它可以工作。

setfacl -Rdm g:grouptoadd:rx /path/directory/

该命令允许目录中的新文件rx权限。

setfacl -Rm g:grouptoadd:rx /path/directory/

该命令允许grouptoadd组列出和读取目录。

相关内容