Per impostazione predefinita, /var/log/messages* vengono creati con autorizzazioni di lettura-scrittura solo per l'utente "root". Potrebbe essere necessario rendere leggibili i file di registro, ad esempio per consentire a un'applicazione di leggere ed elaborare i dati in esso contenuti. La modifica delle autorizzazioni su tali file utilizzando "chmod" potrebbe essere una soluzione temporanea poiché verranno ricreate con l'autorizzazione originale durante il prossimo lavoro cron logrotate. Questo post ti aiuterà a capire come impostare autorizzazioni personalizzate (ad es. 644) su /var/log/messages in modo permanente.
Per CentOS/RHEL 4 e 5 (usando syslogd)
1. Il "crea xxxx ” in /etc/logrotate.d/syslog config file controlla i permessi dei file di registro gestiti dal demone syslogd.
2. L'esempio seguente mostra come modificare l'autorizzazione su /var/log/messages in 644 (leggibile in tutto il mondo). Poiché l'intenzione è di modificare SOLO i permessi su un singolo file di log (ad es. /var/log/messages), stiamo creando una nuova sezione di configurazione in /etc/logrotate.d/syslog specificatamente per le modifiche su /var/log/messages.
Autorizzazioni attuali:
# ls -l /var/log/messages -rw-------. 1 root root 424848 June 22 09:18 /var/log/messages
3. Innanzitutto, rimuovi /var/log/messages dalla sezione principale nel file /etc/logrotate.d/syslog,
# vi /etc/logrotate.d/syslog /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron { ### Remove /var/log/messages from main section sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true /bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true endscript }
e Crea una nuova sezione per /var/log/messages come mostrato di seguito e aggiungila allo stesso file.
/var/log/messages { ### add /var/log/messages to a sub-section sharedscripts create 0644 ### This directive will change the permission on /var/log/messages* to 644 postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true /bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true endscript }Nota :syslogd non cambierà automaticamente i permessi su nessun file già esistente. Copia o sposta i file originali e forza una rotazione immediata affinché le modifiche abbiano effetto.
4. Ruota manualmente il syslog per vedere la modifica delle autorizzazioni.
# logrotate --force /etc/logrotate.d/syslog
# ls -l /var/log/messages -rw-r--r--. 1 root root 231 June 22 09:19 /var/log/messages
Tutti i file di registro successivi verranno creati con l'autorizzazione "644".
Per CentOS/RHEL 6 e 7 (usando rsyslogd versione>3)
La Modalità $FileCreate direttiva e $umask direttiva in /etc/rsyslog.conf file di configurazione consente di specificare la modalità di creazione con cui rsyslogd crea nuovi file. Per impostazione predefinita, la direttiva $FileCreateMode è compilata come 0644, che idealmente dovrebbe creare file gestiti da rsyslog con l'autorizzazione 644, ma poiché l'autorizzazione effettiva dipende dal processo umask di rsyslogd, tutti i file vengono creati con 600 autorizzazioni. Per risolvere questo problema, modifica /etc/rsyslog.conf e aggiungi "$umask 0000" proprio all'inizio del file che deve essere modificato.
L'esempio seguente mostra come modificare l'autorizzazione su /var/log/messages in 644 (leggibile dal mondo)
1. Controlla le autorizzazioni correnti del file /va/log/messages:
# ls -l /var/log/messages -rw-------. 1 root root 424848 June 22 09:18 /var/log/messages
2. Modificare il file di configurazione /etc/rsyslog.conf e la direttiva “$umask 0000” nella parte superiore del file.
# vi /etc/rsyslog.conf .. $umask 0000 ### Add this to reset the umask# $FileCreateMode 0644 ### This line can be omitted as the compiled in default is already set to 644. Modify this value if you need to set permissions other than 644# *.info;mail.none;authpriv.none;cron.none /var/log/messages $umask 0077 ### Add this to set umask back to default, otherwise all files managed by rsyslogd (/eg /var/log/secure) will be created as world readable (644)Nota :rsyslogd non cambierà automaticamente i permessi su nessun file già esistente. Dovresti eliminare o spostare il file e ricaricare rsyslogd per rendere effettive le nuove autorizzazioni.
3. Sposta il file /var/log/messages corrente in un'altra posizione. Questo ci consentirà di creare un nuovo file di messaggi con le nostre autorizzazioni appena definite.
# mv /var/log/messsages /tmp/
4. Riavviare il servizio rsyslog per generare un nuovo file /var/log/messages.
# service rsyslog restart ### CentOS/RHEL 6 # systemctl restart rsyslog ### CentOS/RHEL 7
5. Controlla di nuovo l'autorizzazione del file.
# ls -l /var/log/messages -rw-r--r--. 1 root root 231 June 22 09:19 /var/log/messages
Questo è tutto. Tutti i file di registro successivi verranno ora creati con l'autorizzazione "644".