PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : cron + gpg



KMad
14.06.02, 11:24
Ich habe versucht über einen cronjob des users root einen schlüssel an den keyring eines users (ohne login) anzuhängen.
In der Mail von cron fand ich folgende meldung:

gpg: Warning: using insecure memory!
gpg: /home/antivirupd/.gnupg: directory created
gpg: /home/antivirupd/.gnupg/options: new options file created
gpg: you have to start GnuPG again, so it can read the new options file
must be privileged to use -u
must be privileged to use -u

kann mir mal bitte jemand sagen was das bedeuten soll! habe mich schon durch einige seiten über pgp, gpg usw. gekämpft aber nix brauchbares gefunden.

tomes
14.06.02, 21:51
-u, --local-user name

Use name as the user ID to sign. This option is silently ignored for the list commands, so that it can be used in an options file.

T;o)Mes

KMad
17.06.02, 09:06
#!/bin/sh
gpg -u USER_X --keyserver wwwkeys.de.pgp.net --recv-key 0x9e71ed29
crontab -u USER_X -r
crontab -u USER_X /home/antivirupd/crontab.txt

habe das mit dem -u schon in der richtung mit eingebaut gehabt. aber trotzdem die gleiche meldung wie oben.
Die sache mit der crontab.txt deshalb weil die ganze sache von einer diskette über ein install script installiert wird.

#!/bin/sh
USR=USER_X
useradd ${USR}
cp /mnt/floppy/* /home/${USR}/
chown -R ${USR} /home/${USR}/*
crontab -u ${USR} /home/${USR}/crontab2.txt
crontab /home/${USR}/crontab3.txt
ln -fs /tmp/fprotupd/fprot.sh /usr/local/bin/f-prot2

bis hier funktioniert noch alles.

#!/bin/bash
# Angeben der Programm Pfade
#
FPROT='/usr/local/f-prot/' # wo wurde fprot installiert
FPROTB='/usr/local/f-prot/backup/' # zusaetzliches verzeichnis fuer backup der DEF
UPDATE='/tmp/fprotupd/' # in welchem verzeichnis soll das update durchlaufen
USR='/home/USER_X/' # verzeichnis wo die modifizierte f-prot.sh liegt
#
# Angeben der Orte zum Download
#
DOWNDIR1='http://fprot.org/pub/macrdef2.zip'
DOWNDIR2='http://fprot.org/pub/fp-def.zip'
#
# Angeben der Logdateien
#
LOGWGET='wget1.log'
LOGWGET2='wget2.log'
LOGG='error.log'
#
# Angeben der Mailadresse fuer Report
#
MAIL="root@localhost"
#
# Anlegen der Pfade und wechsel in Verzeichniss
#
mkdir ${UPDATE}
cd ${UPDATE}
ZEIT=`date`
echo "Update gestartet ${Zeit}" >> ${LOGG}
#
# Downloaden der Files
#
wget -o ${LOGWGET} ${DOWNDIR1}
if [ $? -ge 1 ]
then
echo "DOWNLOAD macrdef2.zip gescheitert" >> ${LOGG}
cat ${LOGWGET} >> ${LOGG}
mail -s Antivir_upd ${MAIL} < ${LOGG}
exit
else
wget -o ${LOGWGET2} ${DOWNDIR2}
fi
if [ $? -ge 1 ]
then
echo "Download fp-def.zip gescheitert" >> ${LOGG}
cat ${LOGWGET2} >> ${LOGG}
mail -s Antivir_upd ${MAIL} < ${LOGG}
exit
else
#
# Dekomprimieren
#
unzip fp-def.zip
fi
if [ $? -ge 1 ]
then
echo "Entpacken von fp-def.zip fehlgeschlagen" >> ${LOGG}
mail -s Antivir_upd ${MAIL} < ${LOGG}
exit
else
unzip macrdef2.zip
fi
if [ $? -ge 1 ]
then
echo "Entpacken von macrdef2.zip fehlgeschlagen" >> ${LOGG}
mail -s Antivir_upd ${MAIL} < ${LOGG}
exit
else
#
# Benutzerrechte setzen
# Eigentuemer lesen+schreiben, Gruppe lesen, Rest lesen
#
chmod 644 SIGN.DEF
chmod 644 SIGN2.DEF
chmod 644 MACRO.DEF
#
# pruefen der SIGN.DEF und SIGN2.DEF
#
gpg --batch --no-tty --verify SIGN.ASC SIGN.DEF
fi
if [ $? -ge 1 ]
then
echo "Verifizierung von SIGN.DEF fehlgeschlagen" >> ${LOGG}
mail -s Antivir_upd ${MAIL} < ${LOGG}
exit
else
gpg --batch --no-tty --verify SIGN2.ASC SIGN2.DEF >> gpg.log
fi
if [ $? -ge 1 ]
then
echo "Verifizierung von SIGN2.DEF fehlgeschlagen" >> ${LOGG}
mail -s Antivir_upd ${MAIL} < ${LOGG}
exit
else
#
# test scan mit alten defs
#
f-prot -NOBOOT -NOMEM -NOSUB -ARCHIVE -PACKED "$1"| grep .DEF > ${UPDATE}gr1
#
# vorbereiten testscan mit neuen defs
#
cp ${USR}f-prot.sh ${UPDATE}
cp ${FPROT}f-prot ${UPDATE}
cp ${FPROT}ENGLISH.TX0 ${UPDATE}
#
# test scan mit neuen defs
#
TES1=
TES2=
TES3=
f-prot2 -NOBOOT -NOMEM -NOSUB -ARCHIVE -PACKED "$1" | grep .DEF > ${UPDATE}gr2
RETCODE=$?
fi
if test $RETCODE -eq 0
then
#
# pruefen ob es neue defs sind
#
test SIGN.DEF -nt ${FPROT}SIGN.DEF
TES1=$?
test SIGN2.DEF -nt ${FPROT}SIGN2.DEF
TES2=$?
test MACRO.DEF -nt ${FPROT}MACRO.DEF
TES3=$?
if test $TES1 -eq 0
then
#
# Backup anlegen wenn noetig (fuer jede DEF einzeln)
# die letzten 3 werden gesichert
#
mv ${FPROTB}SIGN.bu2 ${FPROTB}SIGN.bu3
mv ${FPROTB}SIGN.bu1 ${FPROTB}SIGN.bu2
mv ${FPROT}SIGN.DEF ${FPROTB}SIGN.DEF
mv ${FPROTB}SIGN.DEF ${FPROTB}SIGN.bu1
mv ${UPDATE}SIGN.DEF ${FPROT}SIGN.DEF
else
echo "Update von SIGN.DEF nicht noetig" >> ${LOGG}
fi
if test $TES2 -eq 0
then
mv ${FPROTB}SIGN2.bu2 ${FPROTB}SIGN2.bu3
mv ${FPROTB}SIGN2.bu1 ${FPROTB}SIGN2.bu2
mv ${FPROT}SIGN2.DEF ${FPROTB}SIGN2.DEF
mv ${FPROTB}SIGN2.DEF ${FPROTB}SIGN2.bu1
mv ${UPDATE}SIGN2.DEF ${FPROT}SIGN2.DEF
else
echo "Update von SIGN2.DEF nicht noetig" >> ${LOGG}
fi
if test $TES3 -eq 0
then
mv ${FPROTB}MACRO.bu2 ${FPROTB}MACRO.bu3
mv ${FPROTB}MACRO.bu1 ${FPROTB}MACRO.bu2
mv ${FPROT}MACRO.DEF ${FPROTB}MACRO.DEF
mv ${FPROTB}MACRO.DEF ${FPROTB}MACRO.bu1
mv ${UPDATE}MACRO.DEF ${FPROT}MACRO.DEF
else
echo "Update von MACRO.DEF nicht noetig" >> ${LOGG}
fi
else
echo "Es ist FEHLER NR $RETCODE aufgetreten" >> ${LOGG}
mail -s Antivir_upd ${MAIL} < ${LOGG}
exit
fi
#
# Endbericht erstellen und absenden
#
TES=`expr $TES1 + $TES2 + $TES3`
if
test $TES -eq 3
then
echo "Kein Update Durchgefuehrt" >> ${LOGG}
mail -s Antivir_upd ${MAIL} < ${LOGG}
exit
else
echo "" >> ${LOGG}
cat ${UPDATE}gr1 >> ${LOGG}
echo "" >> ${LOGG}
echo "Wurden durch" >> ${LOGG}
echo "" >> ${LOGG}
cat ${UPDATE}gr2 >> ${LOGG}
echo "" >> ${LOGG}
echo "ersetzt" >> ${LOGG}
echo "" >> ${LOGG}
echo "Update OK" >> ${LOGG}
echo "" >> ${LOGG}
echo "Backup angelegt" >> ${LOGG}
#
# REPORT SENDEN
#
mail -s Antivir_upd ${MAIL} < ${LOGG}
fi
#
# Loeschen des Update verzeichnisses
#
rm -f ${UPDATE}*
rmdir ${UPDATE}
exit

# pruefen der sign.def und sign2.def
ab dort geht nix mehr weiter.
weil das mit dem schlüssel importieren nicht funzt.

tomes
17.06.02, 10:13
der das Script ausfuehrt, ein anderer als wie mit -u angegeben ?
-----snip-----
gpg: you have to start GnuPG again, so it can read the new options file
must be privileged to use -u
-----snap-----
Du hast jetzt gpg zweimal zu laufen. Da gpg im Speicher nicht freigegeben wird, wenn es einmal laueft. Es kann also nicht die -u Option auswerten.

Also vielleicht in der Zeile
-----snip-----
# pruefen der SIGN.DEF und SIGN2.DEF
#
gpg --batch --no-tty --verify SIGN.ASC SIGN.DEF
-----snap-----
noch den User angeben, da es ja an dieser Stelle nicht mehr weiter geht ?

T;o)Mes

KMad
17.06.02, 11:05
das install script (listing2) wird von root ausgeführt
der rest durch USER_X bzw als cronjob von USER_X.

ich habe das auch schon als root am laufen gehabt da hat es tadellos gefunzt. hatte leider nen plattencrash mit 100% datenverlust und musste nochmal von vorne anfangen. als einziges was ich nicht neu machen musste waren 2 o. 3 von den scripten. habe jetzt aber sn der ganzen sache eine änderung vorgenommen der USER_X isn nicht in derlage sich anzumelden. Den habe ich einfach durch useradd USER_X angelegt. der aus dem alten test konnte sich aber einloggen. was ich aber nicht will.

ich habe von jemand anderen einen hinweis bekommen es mal über eine zuweisung von einer bash zu versuchen (also das ich irgendwo festlege welche bash er benutzen soll.). aber damit weis ich garnichts anzufangen.

KMad
18.06.02, 07:53
so jetzt habe ich das mit der bash ausprobiert, aber immernoch die gleichen fehlermeldungen. ich habe den USER_X auch in die gruppe root genommen. auch das bringt nix.

tomes
18.06.02, 09:39
dein Script zu lesen.
Wo ich gerade eine Denkpause habe ist:
-----snip-----
unzip macrdef2.zip
...
if [ $? -ge 1 ]; then
echo "Entpacken von macrdef2.zip fehlgeschlagen" >> ${LOGG}
mail -s Antivir_upd ${MAIL} < ${LOGG}
exit
else
#
# Benutzerrechte setzen
# Eigentuemer lesen+schreiben, Gruppe lesen, Rest lesen
#
chmod 644 SIGN.DEF
chmod 644 SIGN2.DEF
chmod 644 MACRO.DEF
#
# pruefen der SIGN.DEF und SIGN2.DEF
#
gpg --batch --no-tty --verify SIGN.ASC SIGN.DEF
fi
...
-----snap-----
1. Du fragst ob das Auspacken nicht geklappt hat.
2. Wenn es nicht geklappt, hat soll er Rechte an den Dateien setzen und sie ueberpruefen.
Sind die Dateien nicht in dem Paket ? Also wenn nicht ausgepackt, welche Dateien werden dann an der Stelle abgearbeitet ?

T;o)Mes

P.S.: Hast du das Script mal mit -n/-v durchlaufen lassen ?

KMad
18.06.02, 12:11
Da hast du dich verlesen. wenn das entpacken gescheitert ist wird das log gemailt und dann beendet. wenn das entpacken ok war werden die dateiberechtigungen geändert.

nein habe es noch nicht versucht mit -n/-v durchlaufen zulassen

tomes
20.06.02, 17:41
mein Fehler.

Die Optionen -n bzw -v geben jede abgearbeitet Zeile mit Kommentaren aus. Zum Debuggen von Shell Scripten.
Also:
# ./mein_script -n

Ansonsten kann ich mir nur vorstellen,dass die Rechte mit dem gpg aufgerufen wird nicht richtig sind.
In der Zeile nach dem aendern der Userrechte.
gpg --batch --no-tty --verify -u $USR SIGN.ASC SIGN.DEF
vielleicht ?

T;o)Mes