====== Mailman-History ====== {{tag>project software computing infrastructure}} {{process:shack-heritage-badge.png}} ===== Masterplan ===== * Informationsverteilung an Neubienen * Rechteentzug bei Vereinsaustritt ==== Skizze ==== Mitglieder werden auf den Mailinglisten angemeldet und bei Austritt abgemeldet. Die Aenderung der Listen enthaelt Hinweise fuer die Systemadminsitration (Privilegienrueckbau) und eine Informationssystem fuer Neumitglieder. ===== Plan I ===== History fuer Listenmitgliedschaften bereitstellen. ==== Skizze ==== * Taeglich wird (mit list_members) die Liste der Subscriber gedumpt. * Diese wird in eine Datei geschrieben, die unter RCS steht. * Die Aenderungen zum Vortag werden festgestellt * Historie anhand der System-Backups restaurieren #!/bin/bash export PATH=$PATH:/usr/sbin DIR=/var/lib/watch-lists LISTS=" mitglieder mitglieder-announce " for i in $LISTS ; do FILE="$DIR/$i" if [ ! -e "$FILE" ]; then mkdir -p $DIR mkdir -p $DIR/RCS touch $FILE ci -u -q $FILE < /dev/null fi co -q -l $FILE list_members $i | sort | uniq > $FILE rcsdiff -q $FILE ci -q -u -m. $FILE done 10 07 * * * root /usr/local/bin/watch-lists Das Diff wird cron an admin@ vermailt. Die History wird anhand der Datensicherungen restauriert und im RCS abgelegt. Dafuer werden die Listenmitglieder aus der config.pck-Datei extrahiert und wird das RCS-Eincheckdatum auf den Zeitpunkt der Sicherung gesetzt. #!/bin/bash # # fake rcs history for mailman list files: # reverse history from backed up pickle files # if false ; then find ~/sys01 ~/sys02 -type f | awk -F'[/.]' '{ print $0,$4,$6,$11 }' | ( while read file sys date list ; do # echo "$file*$sys*$date*$list" ~chris/bin/unpickle.py $file | awk '$1 == "members" {print $0}' | sed 's/^.*{//;s/}$//;s/,/\n/g;' | sed 's/'"'"':.*$//;s/^.*'"'"'//' | sort -u | tee ~/sysall/$sys.$list.$date done ) fi rm -f ~/sysall/mitglieder ~/sysall/mitglieder-announce rm -f ~/sysall/mitglieder,v ~/sysall/mitglieder-announce,v touch ~/sysall/mitglieder ~/sysall/mitglieder-announce ci -u -d"2011-06-13 00:00:00" ~/sysall/mitglieder < /dev/null ci -u -d"2011-06-13 00:00:00" ~/sysall/mitglieder-announce < /dev/null set -xv for i in ~/sysall/mm/sys* ; do read sys list datetime <<< ${i//\./ } read date time <<< ${datetime//\-/ } #echo "$sys*$date*$time*$list" year=${date:0:4} mon=${date:4:2} day=${date:6:2} h=${time:0:2} m=${time:2:2} s=${time:4:2} # echo "$year*$mon*$day" # echo "$h*$m*$s" outdate="$year-$mon-$day $h:$m:$s" echo $outdate co -l ~/sysall/$list cat $i > ~/sysall/$list ci -u -m. -d"$outdate" ~/sysall/$list done ===== Plan II ===== Privilegienrueckbau. ==== Skizze ==== * Feststellen, welche Privilegien existieren * Privilegien entziehen #!/bin/bash # find user assets inside the system # you may want this to get rid of a closed account USERNAME="$1" grep "$1" /etc/passwd /etc/shadow /etc/group /etc/sudoers /etc/aliases for i in $( list_lists | awk '{print $1}' ) ; do X=$( list_admins $i | grep "$1" ) if [ -n "$X" ]; then echo $i "$X" fi done ls -ld /home/"$1" for i in $( list_lists | awk '{print $1}' ) ; do X=$( list_members $i | grep "$1" ) if [ -n "$X" ]; then echo $i "$X" fi done Das ist gerade noch recht grob, aber hilft trotzdem, Zugaenge nicht zu uebersehen. ===== Plan III ===== Information fuer Neumitglieder. Den Leuten gleich zu Anfang "alles" "reinzudruecken" tut nicht. ==== Skizze ==== * Im Laufe der Zeit nach dem Eintritt die Informationen in Haeppchen zukommen lassen. * Dazu muss man wissen, wen es neues gibt und seit wann. * Nach vorgegebenem Zeitplan Mails zusenden. #!/bin/bash /usr/local/bin/make_it_happen