Ve výchozím nastavení jsou /var/log/messages* vytvořeny s oprávněními pro čtení a zápis pouze pro uživatele „root“. Může existovat požadavek, aby byl svět protokolových souborů čitelný, např. aby aplikace mohla číst a zpracovávat data v něm. Změna oprávnění u takových souborů pomocí „chmod“ může být dočasným řešením, protože budou znovu vytvořeny s původním oprávněním během další úlohy logrotate cron. Tento příspěvek vám pomůže pochopit, jak trvale nastavit vlastní oprávnění (např. 644) pro /var/log/messages.
Pro CentOS/RHEL 4 a 5 (pomocí syslogd)
1. Tlačítko „vytvořit xxxx ” v /etc/logrotate.d/syslog konfigurační soubor řídí oprávnění souborů protokolu spravovaných démonem syslogd.
2. Níže uvedený příklad ukazuje, jak změnit oprávnění pro /var/log/messages na 644 (čitelné ve světě). Protože záměrem je změnit oprávnění POUZE u jednoho souboru protokolu (např. /var/log/messages), vytváříme novou konfigurační sekci v /etc/logrotate.d/syslog speciálně pro změny na /var/log/messages.
Aktuální oprávnění:
# ls -l /var/log/messages -rw-------. 1 root root 424848 June 22 09:18 /var/log/messages
3. Nejprve odstraňte /var/log/messages z hlavní části souboru /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 }
a Vytvořte novou sekci pro /var/log/messages, jak je uvedeno níže, a připojte ji ke stejnému souboru.
/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 }Poznámka :syslogd automaticky nezmění oprávnění k žádnému souboru, který již existuje. Zkopírujte nebo přesuňte původní soubor (soubory) a vynuťte okamžité otočení, aby se změny projevily.
4. Ručně otočte syslog, abyste viděli změnu oprávnění.
# 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
Všechny následující soubory protokolu budou vytvořeny s oprávněním „644“.
Pro CentOS/RHEL 6 a 7 (pomocí rsyslogd verze>3)
$FileCreateMode direktiva a $umask direktiva v /etc/rsyslog.conf konfigurační soubor umožňuje specifikovat režim vytváření, se kterým rsyslogd vytváří nové soubory. Ve výchozím nastavení je direktiva $FileCreateMode zkompilována jako 0644, což by v ideálním případě mělo vytvářet soubory spravované rsyslog s oprávněním 644, ale protože skutečné oprávnění závisí na umask procesu rsyslogd, všechny soubory se vytvoří s oprávněními 600. Chcete-li to opravit, upravte /etc/rsyslog.conf a přidejte „$umask 0000“ hned na začátek souboru, který vyžaduje úpravu.
Níže uvedený příklad ukazuje, jak změnit oprávnění pro /var/log/messages na 644 (čitelné ve světě)
1. Zkontrolujte aktuální oprávnění souboru /va/log/messages:
# ls -l /var/log/messages -rw-------. 1 root root 424848 June 22 09:18 /var/log/messages
2. Upravte konfigurační soubor /etc/rsyslog.conf a direktivu “$umask 0000” v horní části souboru.
# 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)Poznámka :rsyslogd automaticky nezmění oprávnění k žádnému souboru, který již existuje. Aby se nová oprávnění projevila, museli byste soubor odstranit nebo přesunout a znovu načíst rsyslogd.
3. Přesuňte aktuální soubor /var/log/messages na jiné místo. To nám umožní vytvořit nový soubor zpráv s našimi nově definovanými oprávněními.
# mv /var/log/messsages /tmp/
4. Restartujte službu rsyslog, aby se vygeneroval nový soubor /var/log/messages.
# service rsyslog restart ### CentOS/RHEL 6 # systemctl restart rsyslog ### CentOS/RHEL 7
5. Znovu zkontrolujte oprávnění souboru.
# ls -l /var/log/messages -rw-r--r--. 1 root root 231 June 22 09:19 /var/log/messages
To je vše. Všechny následující soubory protokolu budou nyní vytvořeny s oprávněním „644“.