需要在 Linux 服务器上授予新用户 acl 权限,而不更改现有的 chmod 权限。新用户不属于任何组,也不拥有文件。用户需要能够写入和读取文件。在提供文件写入和读取时需要使用有效权限。文件夹需要具有此用户的读取和执行 acl 权限。我面临的问题是,当我使用 -R 更改文件 acl 权限时,它也会更改文件夹。我不需要/不想要那样。如何在不更改文件夹权限的情况下将下面的 acl 权限应用于所有文件(子目录中的文件)?
新用户需要对文件具有写权限,这意味着用户需要对包含的文件夹具有读取+执行权限,并对文件具有读取+写入权限。
# assigned read + execute to all the folders on server (includes subfolders)
setfacl -m user:robinhood:r-X /server/root/
# assign read + write to ALL the files (not folder) on server
# set file permissions using effective permissions
# this assigns file permissions to all files in root directory, but not files in all subfolders.
# What's the best way to apply the command to all the files
# including those in subdirectories and not to the folders?
# The folders are not to have effective permissions.
setfacl -m mask:rw-,user:robinhood:rwx /server/root/*
答案1
find
是你的朋友:
find /server/root -type f -execdir setfacl -m mask:rw-,user:robinhood:rwx {} \;
此命令查找/server/root
文件类型为 ( -type f
) 的所有文件,并在文件目录中执行此命令:
setfacl -m mask:rw-,user:robinhood:rwx {} \;
其中{}
是 find 结果列表中当前项的占位符,并标记参数\;
的结束。-execdir
它需要多一点的时间,但只设置文件的 ACL,而不设置其他任何内容。
如果您需要修改 robinhood 子目录的 ACL/server/root
以访问子目录的内容,只需使用find -type d
并相应地编辑setfacl
命令。