Das Programm dient dazu, die Dateien /etc/apache/passwd und /etc/apache/group zu generieren. Diese Dateien dienen zur Authentifizierung auf dem Webserver und werden u.a. dazu gebraucht, sein eigenes Passwort zu ändern.
Dateiname: /usr/local/sbin/generate_apache_auth.
#!/usr/bin/perl -w
#
# /usr/local/sbin/generate_apache_auth
#
# WARNING: will run as root!!!
# Copyright (C) 1999 Thomas Bleher <thomas@gm.rt.schule-bw.de>
# under the GNU GPL
#
umask(0027);
%valid_users = map {$_ => 1} split / /, (getgrnam('users'))[3];
open(DATEI, '/etc/shadow');
@passwords = <DATEI>;
close DATEI;
open DATEI, '>/etc/apache/passwd';
foreach (@passwords) {
@user = split(/:/, $_);
if (defined($valid_users{$user[0]})) { ## nur normale user (Sicherheit)
print DATEI "$user[0]:$user[1]\n";
}
}
close DATEI;
open DATEI, '/etc/group';
@groups = <DATEI>;
close DATEI;
open DATEI, '>/etc/apache/group';
foreach (@groups) {
@user = split(/:/, $_);
$user[3] =~ s/,/ /g;
$user[3] =~ s/root//g;
print DATEI "$user[0]: $user[3]";
}
close DATEI;
$uid = 0; # root
$gid = 33; # www-data
chown $uid, $gid, '/etc/apache/passwd', '/etc/apache/group';