快速更改 $HOME 中所有目录的权限,同时跳过所有挂载

快速更改 $HOME 中所有目录的权限,同时跳过所有挂载

在用户主目录包含一个或多个NFS挂载点的情况下,如何跳过这些挂载并有效地更改目录权限?

我想chmod o-rwx在用户主目录下的所有未安装目录上运行。

我将以 root 用户身份运行该命令,因为我正在为系统上的所有用户执行此操作。 (NFS 挂载具有root_squash挂载选项。)

这是我尝试过的。但是,它并没有按预期工作。

sudo find /home/myuser/ -mount -path ./Documents -prune -o -type d -exec chmod o-rwx {} \;
chmod: changing permissions of '/home/myuser/Documents': Operation not permitted

我想避免出现错误消息。更重要的是,find 命令需要很长时间才能运行。我相信这表明它正在下降到安装点(其中包含许多目录和文件)。

我的命令的另一个问题是我必须明确编码要跳过的位置。所有用户都安装了 Documents,但某些用户还安装了不同名称的其他 NFS。

我的目标是自动修复用户帐户(即chmod o-rwx)中的简单目录权限问题。在我的情况下我该如何做到这一点?

答案1

这是我想出的解决方案:

find /home/$theuser -mount -maxdepth 1 ! -fstype nfs4 ! -fstype nfs -type d -exec chmod o-rwx {} \;

否定的fstype选项解决了我的一两个问题。解决-maxdepth 1了另一个问题(速度)。

可以将这两个-fstype选项结合起来。如果有人知道,请编辑此答案。

相关内容