如何更改属于选定用户的所有文件的权限
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 条件关闭。
该脚本针对每个找到的包含字符串 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 条件关闭。