A.6. generate-apache-auth

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