命令是:find / -perm -4000 -o -perm,而脚本中的是:find / -perm -4000 -o -perm -2000,命令中 -perm 少了 -2000 的权限参数,所属组的s权限。
if后面要加空格,右中括号前面也要加空格隔开,date +%F date后面也要加空格
好吧,原来是前面用来存储find的搜索结果的。。
if [ "$?" != "0" ]
then
echo "$i is a new suid file !" >> /root/suid_log
fi
find: `/run/user/1000/gvfs': 权限不够
find: `/proc/6058/task/6058/fd/6': 没有那个文件或目录
find: `/proc/6058/task/6058/fdinfo/6': 没有那个文件或目录
find: `/proc/6058/fd/5': 没有那个文件或目录
find: `/proc/6058/fdinfo/5': 没有那个文件或目录
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
./exam.sh:行10: [0: 未找到命令
SUID是指,将某脚本以脚本的创建人(root)的权限执行,shadow文件只能被root用户访问和修改,所以普通用户使用passwd修改密码的时候,passwd必须要有root权限去访问shadow文件,所以要使用SUID。换句话说,如果passwd没有SUID权限,那它就没有权限访问和修改shadow。
除非是你自己改的,不然的话直接rm。
find / -perm +4000
匹配过程:
1.普通文件,文件的权限一般三位,777最高文件权限
-perm -0777搜索的就是最高权限的文件rwxrwxrwx
-perm +0777搜索的只要包含rwxrwxrwx任意一个的文件
2.特殊文件,包含权限位置四位,7000为最高,即--s--s--t,同样的方法
-perm -7000搜索的就是最高权限的文件--s--s--t
-perm +0777搜索的只要包含--s--s--t任意一个的文件,--s --- ---(4000)、--- --s ---(2000)、--- --- --t(1000)等
自然+4000匹配的就是包含--s --- ---权限的文件,+4755对应的rwsr-xr-x包含了--s --- ---权限,所以4000可以匹配4755呢
个人觉得应该和sudo的原理类是,实际上大多数资料都没说这个。记住就好了,以后了解深了应该就会知道了。
空格没带也会在执行的时候报错……shell编程好严格啊