GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So ändern Sie die Standardberechtigung von /var/log/messages in CentOS/RHEL

Standardmäßig werden /var/log/messages* nur mit Lese- und Schreibberechtigungen für den Benutzer „root“ erstellt. Es kann erforderlich sein, die Protokolldateien allgemein lesbar zu machen, damit beispielsweise eine Anwendung die darin enthaltenen Daten lesen und verarbeiten kann. Das Ändern der Berechtigungen für solche Dateien mit „chmod“ könnte eine vorübergehende Lösung sein, da sie beim nächsten Logrotate-Cron-Job mit der ursprünglichen Berechtigung neu erstellt werden. Dieser Beitrag hilft zu verstehen, wie man benutzerdefinierte Berechtigungen (z. B. 644) für /var/log/messages dauerhaft einstellt.

Für CentOS/RHEL 4 und 5 (unter Verwendung von syslogd)

1. Die „xxxx erstellen ”-Direktive in /etc/logrotate.d/syslog config-Datei steuert die Berechtigung von Protokolldateien, die vom syslogd-Daemon verwaltet werden.

2. Das folgende Beispiel zeigt, wie die Berechtigung für /var/log/messages auf 644 (weltlesbar) geändert wird. Da beabsichtigt ist, die Berechtigung NUR für eine einzelne Protokolldatei (z. B. /var/log/messages) zu ändern, erstellen wir einen neuen Konfigurationsabschnitt in /etc/logrotate.d/syslog speziell für Änderungen an /var/log/messages.

Aktuelle Berechtigungen:

# ls -l /var/log/messages
-rw-------. 1 root root 424848 June 22 09:18 /var/log/messages

3. Entfernen Sie zuerst /var/log/messages aus dem Hauptabschnitt in der Datei /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
}

und Erstellen Sie einen neuen Abschnitt für /var/log/messages wie unten gezeigt und hängen Sie ihn an dieselbe Datei an.

/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

}
Hinweis :syslogd ändert nicht automatisch die Berechtigungen für bereits vorhandene Dateien. Kopieren oder verschieben Sie die Originaldatei(en) und erzwingen Sie eine sofortige Rotation, damit die Änderungen wirksam werden.

4. Rotieren Sie das Syslog manuell, um die Änderung der Berechtigungen anzuzeigen.

# 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

Alle nachfolgenden Protokolldateien werden mit der Berechtigung „644“ erstellt.

Für CentOS/RHEL 6 und 7 (mit rsyslogd Version>3)

Der $FileCreateMode Direktive und $umask Direktive in /etc/rsyslog.conf Konfigurationsdatei erlaubt es, den Erstellungsmodus anzugeben, mit dem rsyslogd neue Dateien erstellt. Standardmäßig wird die $FileCreateMode-Direktive als 0644 kompiliert, was idealerweise Dateien erstellen sollte, die von rsyslog mit der Berechtigung 644 verwaltet werden, aber da die tatsächliche Berechtigung vom Prozess umask von rsyslogd abhängt, werden alle Dateien mit 600-Berechtigungen erstellt. Um dies zu beheben, bearbeiten Sie /etc/rsyslog.conf und fügen Sie „$umask 0000“ direkt am Anfang der Datei hinzu, die geändert werden muss.

Das folgende Beispiel zeigt, wie die Berechtigung für /var/log/messages auf 644 (weltlesbar) geändert wird

1. Überprüfen Sie die aktuellen Berechtigungen der Datei /va/log/messages:

# ls -l /var/log/messages
-rw-------. 1 root root 424848 June 22 09:18 /var/log/messages

2. Bearbeiten Sie die Konfigurationsdatei /etc/rsyslog.conf und die Direktive „$umask 0000“ am Anfang der Datei.

# 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)
Hinweis :rsyslogd ändert nicht automatisch die Berechtigungen für bereits vorhandene Dateien. Sie müssten die Datei löschen oder verschieben und rsyslogd neu laden lassen, damit die neuen Berechtigungen wirksam werden.

3. Lassen Sie uns die aktuelle Datei /var/log/messages an einen anderen Ort verschieben. Dadurch können wir eine neue Nachrichtendatei mit unseren neu definierten Berechtigungen erstellen.

# mv /var/log/messsages /tmp/

4. Starten Sie den rsyslog-Dienst neu, um eine neue /var/log/messages-Datei zu generieren.

# service rsyslog restart        ### CentOS/RHEL 6
# systemctl restart rsyslog      ### CentOS/RHEL 7

5. Überprüfen Sie erneut die Berechtigung der Datei.

# ls -l /var/log/messages
-rw-r--r--. 1 root root 231 June 22 09:19 /var/log/messages

Das ist alles. Alle nachfolgenden Protokolldateien werden nun mit der Berechtigung „644“ erstellt.


Cent OS
  1. Unterschied zwischen /var/log/messages, /var/log/syslog und /var/log/kern.log?

  2. So ändern Sie das Standardprotokollverzeichnis (/var/log) in Rsyslog für CentOS/RHEL 6,7

  3. So ändern Sie den Pfad der auditd-Protokolldatei /var/log/audit/audit.log

  4. So ändern Sie die Standardberechtigungen für die Datei /var/log/audit/audit.log in CentOS/RHEL

  5. Systemprotokolldatei /var/log/messages wird automatisch gelöscht oder gekürzt (CentOS/RHEL)

So ändern Sie den Hostnamen in RHEL 8 / CentOS 8

So ändern Sie den aktuellen/Standard-Runlevel in CentOS 8 / RHEL 8

So ändern Sie die Standard-Sudo-Protokolldatei in Linux

So ändern Sie den aktuellen Runlevel in RHEL 8 / CentOS 8

So ändern Sie den Hostnamen in CentOS/RHEL 8

So ändern Sie den Hostnamen in CentOS/RHEL 7