SOLVED: world viewable /var/log/mail.info

Giorgos Keramidas keramida at ceid.upatras.gr
Thu Sep 14 06:37:31 EEST 2006


On 2006-09-13 20:29, Nick Demou <ndemou at gmail.com> wrote:
> 2 μέρες μετά κοιτάω τα log files και το πολυπόθυτο r-- στο others έχει
> εμφανιστεί χωρίς να κάνω τίποτα περισότερο από τα προαναφερόμενα. Δεν
> ξέρω βέβαια γιατί το r-- δεν εμφανίστικε χτές (δεδομένου ότι την
> αλλαγή την έκανα προχθες). Πάντως τώρα δουλεύει.
> 
> Δυστηχώς ποτέ δεν καταλαβα από που έπέρνε μέχρι πρότινως τις οδηγείες
> για το rotation του mail.info το σύστημα μου :-(

<brisidia>

Θα κρατηθώ και δε θα βρίσω πολύ το Linux σήμερα, αλλά δες αυτό το σχόλιο
που έχει το `/etc/logrotate.d/sendmail' σε ένα Debian (κάτι που κάποια
στιγμή αναγκάστηκα να το μάθω κι εγώ):

% root at pong:/etc/logrotate.d# cat -n sendmail | head    
%      1  # Sample Logrotate file for sendmail
%      2  #
%      3  #               C A V E A T    E M P T O R
%      4  #
%      5  # If you're using the stock syslog package, do *NOT* enable anything
%      6  # in this file, doing so may result in dual rotations of the logfiles
%      7  # and/or loss of logged data.  The syslog package, by default, will
%      8  # rotate standard log files based upon various critera !!!
%      9  #
%     10  #/var/log/mail/mail.alert {
% root at pong:/etc/logrotate.d#

Αν εξαιρέσεις το τυπογραφικό `critera', που είναι ελαφρώς ενοχλητικό,
αυτό μπορεί να σε οδηγήσει να διαβάσεις το manpage του syslogd,
ψάχνοντας για αυτά τα `various criteria'.

Αμ δε... σιγά που θα έλεγε τίποτα το manpage για τα κριτήρια :P

Με λίγο ακόμα ψάξιμο, κι αν δεν έχεις αρχίσει ήδη να κατεβάζεις το
FreeBSD, θα βρεις ότι σε ένα σχετικά "μοντέρνο Debian"[1], τα καθημερινά
cron scripts, περιέχουν και το εξής:

% root at igloo:/etc# find . -type f | xargs fgrep savelog
% ./cron.daily/aide:[ -f "$LOGDIR/$LOGFILE" ] && savelog -t -g adm -m 640 -u root -c 7 "$LOGDIR/$LOGFILE" > /dev/null
% ./cron.daily/aide:[ -f "$LOGDIR/$ERRORLOG" ] && savelog -t -g adm -m 640 -u root -c 7 "$LOGDIR/$ERRORLOG" > /dev/null
% ./cron.daily/aptitude:          savelog -c 7 aptitude.pkgstates > /dev/null
% ./cron.daily/netkit-inetd:        savelog -m 644 inetd.conf.bak >/dev/null
% ./cron.daily/sysklogd:      savelog -g adm -m 640 -u root -c 7 $LOG >/dev/null
% ...

Ολο χαρά ανοίγεις το `/etc/cron.daily/sysklogd' και ανακαλύπτεις ότι το
Linux έχει για άλλη μία φορά εφεύρει τον τροχό σε σχήμα ισοσκελούς
τριγώνου με spikes και χαίρεται, έτσι απλά επειδή "μπορεί":

% root at pong:/etc/cron.daily# more sysklogd
% #! /bin/sh
% 
% # sysklogd      Cron script to rotate system log files daily.
% #
% #               If you want to rotate other logfiles daily, edit
% #               this script.  An easy way is to add files manually,
% #               to add -a (for all log files) to syslogd-listfiles and
% #               add some grep stuff, or use the -s pattern argument to
% #               specify files that must not be listed.
% #
% #               This is a configration file.  You are invited to edit
% #               it and maintain it on your own.  You'll have to do
% #               that if you don't like the default policy
% #               wrt. rotating logfiles (i.e. with large logfiles
% #               weekly and daily rotation may interfere).  If you edit
% #               this file and don't let dpkg upgrade it, you have full
% #               control over it.  Please read the manpage to
% #               syslogd-listfiles.
% #
% #               Written by Martin Schulze <joey at debian.org>.
% #               $Id: cron.daily,v 1.12 2004-03-31 16:18:15 joey Exp $
% 
% test -x /usr/sbin/syslogd-listfiles || exit 0
% test -x /sbin/syslogd || exit 0
% test -f /usr/share/sysklogd/dummy || exit 0
% 
% set -e
% 
% cd /var/log
% for LOG in `syslogd-listfiles`
% do 
%    if [ -s $LOG ]; then
%       savelog -g adm -m 640 -u root -c 7 $LOG >/dev/null
%    fi
% done
% ...

Δεν υπάρχει τίποτα στο logrotate, γιατί πολύ απλά, ακόμα και στημένο να
είναι το logrotate, το Debian το γράφει επιδεικτικά στα παπάρια του και
κάνει rotate `με το χέρι', τρέχοντας το savelog(8) σειριακά[2], για
κάθε log file που βρίσκει το `μαγικό' `syslogd-listfiles' utility.

Να ξεράσω τώρα ή το πιάσατε ήδη το υπονοούμενο;

Για ψάξε λίγο.  Ολο και κάποιο άλλο ενδιαφέρον σχήμα τροχού θα βρεις :-)

------------------------------------------------------------------------
[1] Αν μπορεί κανείς να βάλει δηλαδή τις λέξεις "μοντέρνο" και
    "Debian" στην ίδια πρόταση :-P

[2] Επειδή είναι ΒΛΑΚΑΣ εκείνος ο developer που έφτιαξε το
    logrotate και το newsyslog με δυνατότητα για παράλληλη
    περιστροφή και συμπίεση πολλών log files μαζί.  Έτσι...

</brisidia>




More information about the Linux-greek-users mailing list