|
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 c
Length: 2199 (0x897) Types: TextFile Names: »cron.chk«
└─⟦4f9d7c866⟧ Bits:30007245 EUUGD6: Sikkerheds distributionen └─⟦3da311d67⟧ »./cops/1.04/cops_104.tar.Z« └─⟦6a2577110⟧ └─⟦4f9d7c866⟧ Bits:30007245 EUUGD6: Sikkerheds distributionen └─⟦6a2577110⟧ »./cops/1.04/cops_104.tar« └─⟦this⟧ »cops_104/perl/cron.chk«
#!/bin/sh -- need to mention perl here to avoid recursion 'true' || eval 'exec perl -S $0 $argv:q'; eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' & eval 'exec /usr/local/bin/perl -S $0 $argv:q' if 0; # Usage: cron.chk.pl [-rd] # # This checks pathnames and files inside the cron files /usr/lib/crontab # for writability. # # Mechanism: The commands inside the file /usr/lib/crontab are executed # by root. This perl script uses chk_strings.pl for chking for writable # files/dirs. # # cron.chk.pl will try to find a file in /usr/lib/crontab first (bsd), # and then if it isn't there, it will look in the any alternate # possible locations next -- right now, /usr/spool/cron/crontab -- to # see if a directory exists, and, if it does, it checks all the cron # files in turn. # # WARNING! # # Spurious messages can occur; a more stringent method (if perhaps less # careful of a check) would be to test just the 6th field, instead of # all the fields after the fifth. Also throwing away /tmp, etc. could # be a mistake. # package main; require 'getopts.pl'; require 'glob.pl'; require 'chk_strings.pl'; require 'pathconf.pl'; # should also add args to override default crontab locations die "Usage: $0 [-rd]\n" unless &Getopts('rd') && !@ARGV; $chk_strings'debug = $opt_d; $chk_strings'recurse = $opt_r; package cron_chk; # Possible location of crontab file: $cron = "/usr/lib/crontab"; # alternate reality locations of crontab file: @alt_cron = ("/usr/spool/cron/crontabs"); if ( ! -s $cron) { for (@alt_cron) { # are there ever multiple crontab directories? (@crons = &'glob("$_/*")), last if -d; } die "No crontabs?\n" if ! @crons; } @crons = ($cron) unless @crons; # ignore /tmp /dev/null and tty stuff # &'chk_strings ignores all of above # STILL NEED to ignore stuff after `>' ?? # when we add @ignore stuff to &'chk_strings # @ignore stuff is in &'chk_strings now, do we want to ignore filenames # being redirected into .. might as well leave them, let the user decide. # finally, do the checking -- maybe for one, maybe for lots of cron-ites: for (@crons) { if (! -e) { warn "$0: $_: $!\n"; next; } &'chk_strings($_); } 1;