【发布时间】:2015-04-06 16:18:57
【问题描述】:
此脚本会查找其中包含字符串 RECHERCHE 的所有用户。我尝试在 sudo 中运行它并且它有效,但随后在第 8 行停止(权限被拒绝)。即使从脚本中删除 sudo,仍然会发生此问题。
#!/bin/bash
#challenge : user search and permission rewriting
echo -n "Enter string to search : "
read RECHERCHE
echo $(cat /etc/passwd | grep "/home" | cut -d: -f5 | grep -i "$RECHERCHE" | sed s/,//g)
echo "Changing permissions"
export RECHERCHE
sudo ./challenge2 $(/etc/passwd) &
然后,第二个脚本在后台更改属于 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 2>> /home/$(user)/challenge.log
fi
if [$(stat -c %a file) < 600]
then
chmod 600 file 2>> /home/$(user)/challenge.log
fi
umask 177 2>> /home/$(user)/challenge.log
fi
done
我必须知道我在做什么。
【问题讨论】:
-
/etc/passwd不是命令。删除$(和)。使用shellcheck.net 作为您的第二个脚本。 -
在第二个 sn-p 中,
[和]周围缺少空格。 -
echo $(...)通常没用,你可以不用echo和包装$()。 -
@cyrus 感谢您的链接