授予目录树中“其他用户”的读取/执行权限

授予目录树中“其他用户”的读取/执行权限

我的几个 Linux 机器中有以下目录树:

/dir1/dir2/dir3/dir4/target

每个 dir[1-4] 目录下都有多个目录,并且所有这些目录(及其子目录)都具有750权限。现在,我想others浏览“目标”目录及其子目录。chmod -R o+rx在 上运行,确实会更改的/dir1/dir2/dir3/dir4/target权限,但用户无法访问该目录,因为其父目录没有权限。在其中一台服务器上,我通过授予以下权限来解决此问题:/dir1/dir2/dir3/dir4/target755othersr-x

chmod -R o+x /dir1
chmod -R o+rx /dir1/dir2/dir3/dir4/target

考虑到上述命令也会授予 /dir[1-4] 的所有子目录的“遍历”权限,是否有更好的命令来仅提供对 /dir[1-4] 目录的遍历权限以及对“/dir[1-4]”目录的 rx 权限目标目录?

答案1

设置x“其他”目录/dir1/dir2/.../target和所有中间目录(根目录除外)的权限,以及路径末尾目录r的权限:target

dir=/dir1/dir2/dir3/dir4/target

chmod o+r "$dir"
while [ -n "$dir" ]; do
    chmod o+x "$dir"
    dir=${dir%/*}
done

对于给定的目录路径,这将执行命令

chmod o+r /dir1/dir2/dir3/dir4/target
chmod o+x /dir1/dir2/dir3/dir4/target
chmod o+x /dir1/dir2/dir3/dir4
chmod o+x /dir1/dir2/dir3
chmod o+x /dir1/dir2
chmod o+x /dir1

通过删除最后一个及其之后的所有内容,变量dir值在循环的每次迭代中都会更改/

相关内容