Kann mir jemand sagen, was ich hier falsch gemacht habe?
Hier ist die ultimative Frage:
Warum kann ich den Befehl logger nicht in eine benutzerdefinierte Protokolldatei ausgeben lassen /var/log
?
In meinem Drehbuch:
logger -i -t ANM -p local7.info "This is a local 7 test"
Im rsyslog.conf
Folgenden habe ich an das Ende der Datei Folgendes angehängt:
local7.* /var/log/anm.log
Das Skript hat auch die Berechtigung für die /var/log/anm.log
Datei
* UPDATE *
Also habe ich vergessen, die Protokollierungsdienste neu zu starten. Ich habe versucht, neu zu starten und " service rsyslog restart
" noch keine Änderung. Der Testtext wird nicht in /var/log/anm.log
angezeigt, aber in/var/log/syslog
* UPDATE *
Welche Berechtigungen sind /var/log/"yourlogfilehere"
erforderlich? Owner
, Group
, rwx
?
Ich habe versucht, grp und own auf root und auf den Benutzernamen einzustellen, unter dem der Logger-Befehl ausgeführt wird. Keine Änderung mit.
Ich habe auch versucht, Protokolldateien in einem benutzerdefinierten Verzeichnis zu erstellen /var/log
. dh /var/log/anm/anm.log
und Festlegen beider Arten von Berechtigungen für das Verzeichnis.
* UPDATE *
rsyslogd läuft
syslog 598 0.0 0.1 31060 1292 ? Sl 03:02 0:02 rsyslogd -c5
und hier ist die Ausgabe aus meiner /etc/rsyslog.conf
Datei
# /etc/rsyslog.conf Configuration file for rsyslog.
#
# For more information see
# /usr/share/doc/rsyslog-doc/html/rsyslog_conf.html
#
# Default logging rules can be found in /etc/rsyslog.d/50-default.conf
#################
#### MODULES ####
#################
$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
#$ModLoad immark # provides --MARK-- message capability
# provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514
# provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514
###########################
#### GLOBAL DIRECTIVES ####
###########################
#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# Filter duplicated messages
$RepeatedMsgReduction on
#
# Set the default permissions for all log files.
#
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog
#
# Where to place spool files
#
$WorkDirectory /var/spool/rsyslog
#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf
local7.* /var/log/anm.log
Ich habe auch versucht, es einzubauen /etc/rsyslog.d/50-default.conf
(ich verwende Ubuntu 12.04 LTS)
# Default rules for rsyslog.
#
# For more information see rsyslog.conf(5) and /etc/rsyslog.conf
#
# First some standard log files. Log by facility.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
#daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
#lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
#user.* -/var/log/user.log
local7.* /var/log/anm.log
* UPDATE *
Nun, ich habe es endlich herausgefunden. Ich wünschte, jemand hätte das für mich beantwortet. Es hat einige Tage gedauert, um herauszufinden, was los war, aber ich glaube, es gibt nicht sehr viele Leute, die Superuser haben.
Das Problem war mit den Dateiberechtigungen der benutzerdefinierten Protokolldatei, wie ich ursprünglich vermutet hatte. Ich dachte, ich hätte die richtigen Berechtigungen, aber es stellt sich heraus, dass der Besitzer syslog
und die Gruppe sein müssen adm
. Ich habe dies durch einen Vergleich mit der user.log
Datei festgestellt . Sobald die Berechtigungen geändert und erneut getestet wurden, funktioniert alles einwandfrei! Ich hoffe, das hilft jemand anderem da draußen schneller, als ich eine Antwort finden konnte.
Antworten:
Nun, ich habe es endlich herausgefunden. Ich wünschte, jemand hätte das für mich beantwortet. Es hat einige Tage gedauert, um herauszufinden, was los war, aber ich glaube, es gibt nicht sehr viele Leute, die Superuser haben.
Das Problem war mit den Dateiberechtigungen der benutzerdefinierten Protokolldatei, wie ich ursprünglich vermutet hatte. Ich dachte, ich hätte die richtigen Berechtigungen, aber es stellt sich heraus, dass der Besitzer "syslog" und die Gruppe "adm" sein muss. Ich habe dies durch einen Vergleich mit der Datei user.log festgestellt. Sobald die Berechtigungen geändert und erneut getestet wurden, funktioniert alles einwandfrei! Ich hoffe, das hilft jemand anderem da draußen schneller, als ich eine Antwort finden konnte.
Hier sind die endgültigen Berechtigungen
quelle
service restart
es die Regel kennt und beim ersten entsprechenden Aufruf auslogger
die Datei mit den richtigen Berechtigungen erstellt hat.@Atomiklan erwähnte, dass er den Besitzer / die Gruppe seiner benutzerdefinierten Datei in syslog / adm ändern musste. Ich habe es versucht und es hat funktioniert ...
Aber der Kommentar von @ MichaelKjörling schien auch richtig zu sein: Warum nicht einfach den Syslog-Daemon die Datei erstellen lassen?
Der Schlüssel in meinem Fall (und ich schlage die OPs vor) ist, dass der Syslog-Benutzer keine Schreibberechtigung für das Verzeichnis meines benutzerdefinierten Protokolls hatte . Ich habe ein
chmod o+w
rsyslog neu gestartet und meine Protokolldatei ist glücklich dort erschienen, wo sie sein sollte ... mit syslog / adm als Benutzer / Gruppe.quelle
muss sein:
Remote-Protokollierung ausführen!
quelle