forked from epety/100-shell-script-examples
-
Notifications
You must be signed in to change notification settings - Fork 0
/
049-findsuid.sh
executable file
·33 lines (25 loc) · 946 Bytes
/
049-findsuid.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/sh
# findsuid - find all SUID files or programs on the system other
# than those that live in /bin and /usr/bin, and
# output the matches in a friendly and useful format.
mtime="7" # how far back (in days) to check for modified cmds
verbose=0 # by default, let's be quiet about things
if [ "$1" = "-v" ] ; then
verbose=1
fi
for match in $(find /bin /usr/bin -type f -perm +4000 -print)
do
if [ -x $match ] ; then
owner="$(ls -ld $match | awk '{print $3}')"
perms="$(ls -ld $match | cut -c5-10 | grep 'w')"
if [ ! -z $perms ] ; then
echo "**** $match (writeable and setuid $owner)"
elif [ ! -z $(find $match -mtime -$mtime -print) ] ; then
echo "**** $match (modified within $mtime days and setuid $owner)"
elif [ $verbose -eq 1 ] ; then
lastmod="$(ls -ld $match | awk '{print $6, $7, $8}')"
echo " $match (setuid $owner, last modified $lastmod)"
fi
fi
done
exit 0