如何更改属于选定用户的所有文件的权限

How to change permissions for all the files belonging to selected users

该脚本针对每个找到的包含字符串 RECHERCHE(从另一个脚本导出)的用户进行循环,并更改他们的权限和默认权限。每当我尝试 运行 时,我都会遇到语法错误。

#!/bin/bash
while read line
do

        if [-z  "$(grep "/home" | cut -d: -f5 | grep -i "$RECHERCHE")" ]
              then
        user=$(cut -f: -f1)
        file=$(find / -user user)
        if [$(stat -c %a file) >= 700]
                then
        chmod 700 file
        fi
        if [$(stat -c %a file) < 600]
            then
        chmod 600 file
        fi
        umask 177
done 2>> /home/$user/challenge.log

我知道这可能看起来有很多问题,但是当我尝试 运行 它时,它在 done 上给我一个语法错误(第 18 行:意外标记附近的语法错误`done '), 所以我不知道它背后的逻辑是否有效。另外,我不知道我在做什么。请帮助,并提前致谢。

您缺少一个 fi。而且我不确定你想用你读到的那行做什么。我显然不能 运行 这个,你需要完成修复它,但是 done 的那个特定问题已经解决,请参阅以下版本的代码:

#!/bin/bash
read line
while $line ; do
        if [-z  "$(grep "/home" | cut -d: -f5 | grep -i "$RECHERCHE")" ]; then
                user=$(cut -f: -f1)
                file=$(find / -user user)
                if [$(stat -c %a file) >= 700]; then
                        chmod 700 file
                fi
                if [$(stat -c %a file) < 600]; then
                        chmod 600 file
                fi
                umask 177
        fi
        read line
done 2>> /home/$user/challenge.log

在您的代码中,缺少一个 if 条件关闭。