|
|
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;