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

时间:2015-04-06 05:37:59

标签: linux bash debian

脚本循环查找包含字符串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

我知道这可能会同时出现很多问题,但是当我尝试运行它时,它会在完成时给出一个语法错误(第18行:意外令牌“已完成&#39;附近的语法错误),所以我不知道它背后的逻辑是否有效。另外,我不知道我在做什么。请帮助,并提前感谢。

2 个答案:

答案 0 :(得分:0)

你错过了一个电影。而且我不确定你要用你读过的那行做什么。我显然无法运行此操作,您需要完成修复,但完成的特定问题已解决,请参阅以下版本的代码:

#!/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

答案 1 :(得分:0)

在您的代码中,如果缺少条件关闭,则执行一次。