|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T r
Length: 2403 (0x963) Types: TextFile Names: »rc.chk«
└─⟦4f9d7c866⟧ Bits:30007245 EUUGD6: Sikkerheds distributionen └─⟦ed5edc051⟧ »./cops/1.02/cops.102.tar« └─⟦4f9d7c866⟧ Bits:30007245 EUUGD6: Sikkerheds distributionen └─⟦db60b44f1⟧ »./cops/1.02/cops.102.tar.Z« └─⟦ed5edc051⟧ └─⟦this⟧ »cops/rc.chk«
: # # Usage: rc.chk # # This checks pathnames and files inside the shell script files /etc/rc* # for writability. # # Mechanism: The commands inside the files /etc/rc* are executed when # the machine is booted. This shell script greps for commands/paths that # are of these forms: # # /path/command # or whatever # or # PATH=:/bin:/usr/bin:. # or whatever # or # MYVAR=`/path/command` # or whatever # # It then takes each potential problem-string and uses the program # "is_writable" to determine if it is world writable. All results are # echoed to standard output. # # 12 Apr 90, Mark Plumbly made it ignore lines starting with rm -f # (popular in rc files) and fixed my code so it would ignore everything # after a ">". # SED=/bin/sed CAT=/bin/cat AWK=/bin/awk LS=/bin/ls TEST=/bin/test EGREP=/usr/bin/egrep ECHO=/bin/echo SORT=/usr/bin/sort # CHANGE THIS LINE OR PUT IN FILE NAMES IF/AS NEEDED! # (for example: init_files="/etc/rc /etc/rc.local") # init_files=`$LS /etc/rc*` # # This should get all paths in /etc/rc* files; at least two types here. # First type starts with a "/", the second is either in the form : # # PATH=:/bin:/usr/bin:. # or whatever # or # MYVAR=`/bin/echo "hello"` # or whatever # # Notice also I strip out any references to /tmp, /usr/tmp, # /dev/*ty's, and /dev/null. # # 12 Apr mdp: Modified to remove "> file" as well as ">file" # and remove "rm -f file" (this removes a few bogus ones). # (i.e. things which are written to or removed only are ignored). # first_pass=`${CAT} ${init_files} | \ ${SED} -e 's/ *#.*$//' | \ $AWK ' { \ for (i=1;i<=NF;i++) { \ if ((index($i,"/")) && \ ((first=substr($i,1,1)!=">")) && \ $(i-1)!=">" && \ ( i<=2 || $(i-2)!="rm" || $(i-1)!="-f" ) && \ first!="#" && \ first!="$" && \ (last=substr($i,length($i),1))!="\"") \ print $i \ } \ }' | $EGREP -v "/dev/.*ty|/tmp|/usr/tmp|/dev/null" | $SORT -u` all_files=`$ECHO $first_pass| $SORT | $UNIQ` # First, get the ones starting with "/": # # DANGER! DANGER! DANGER Will Robinson! Awk runs out of room ("bails # out") if too many files are here.... all_files=`$ECHO $first_pass|$AWK 'BEGIN{RS=FS}{if(substr($0,1,1)=="/")print $0}'` for i in $all_files do if ./is_writable $i then $ECHO "Warning! File $i (in /etc/rc*) is _World_ writable!" fi done # end of script