Initial import from FreeBSD RELENG_4:
[games.git] / contrib / perl5 / eg / scan / scan_passwd
1 #!/usr/bin/perl
2
3 # $RCSfile: scan_passwd,v $$Revision: 4.1 $$Date: 92/08/07 17:20:38 $
4
5 # This scans passwd file for security holes.
6
7 open(Pass,'/etc/passwd') || die "Can't open passwd file: $!\n";
8 # $dotriv = (`date` =~ /^Mon/);
9 $dotriv = 1;
10
11 while (<Pass>) {
12     ($login,$pass,$uid,$gid,$gcos,$home,$shell) = split(/:/);
13     if ($shell eq '') {
14         print "Short: $_";
15     }
16     next if /^[+]/;
17     if ($pass eq '') {
18         if (index(":sync:lpq:+:", ":$login:") < 0) {
19             print "No pass: $login\t$gcos\n";
20         }
21     }
22     elsif ($dotriv && crypt($login,substr($pass,0,2)) eq $pass) {
23         print "Trivial: $login\t$gcos\n";
24     }
25     if ($uid == 0) {
26         if ($login !~ /^.?root$/ && $pass ne '*') {
27             print "Extra root: $_";
28         }
29     }
30 }