递归地对每个家庭用户进行 chown

递归地对每个家庭用户进行 chown

好的,我的主文件夹中有大约 100 个目录,每个目录都由主用户自己拥有。有时我必须以 root 身份手动替换某些文件,因此权限会受到干扰,并且某些文件不再属于该用户。为了解决这个问题,我总是必须在主目录中使用以下命令:

chown -R user:user user/

现在我正在寻找一些快捷方式,因为我无法为所有 100 个用户执行此操作。

我想知道会做什么:

chown -R *:* *

答案1

完整的答案是

1)打开一个文件,例如 vi chown_homedirs

2)输入下一个代码

#!/bin/bash

cd /home &&    
for h in *
  do 
    chown -R "$h:$h" "$h"; 
  done

3)保存文件

4)chmod +x chown_homedirs

5)运行./chown_homedirs

注意:如果用户目录中有空格,您始终需要引用扩展名。如果您不引用扩展,事情可能会失败并给您带来意想不到的结果。

答案2

您可以使用统计数据获取文件的用户和组所有权,然后使用它们来更新文件,例如

#!/bin/bash
cd /home
for file in *
do
    user=$(stat -c %U "$file")
    group=$(stat -c %G "$file")
    echo chown -R "$user":"$group" "$file"
done

这涉及所有者/组/目录不相同的情况。如果测试结果对你来说没问题的话,显然要删除回声。

相关内容