Wyjście Rsyslog do niestandardowego pliku dziennika

13

Czy ktoś może mi powiedzieć, co zrobiłem tutaj źle?

Oto ostateczne pytanie:

Dlaczego, gdy używam polecenia logger, nie mogę uzyskać jego danych wyjściowych do niestandardowego pliku dziennika /var/log?

W moim skrypcie:

logger -i -t ANM -p local7.info "This is a local 7 test"

W rsyslog.confI dołączyłem na końcu pliku:

local7.* /var/log/anm.log

Ponadto skrypt ma uprawnienia do /var/log/anm.logpliku

* AKTUALIZACJA *

Zapomniałem zrestartować usługi rejestrowania. Próbowałem zrestartować komputer i service rsyslog restartwciąż nie ma zmian. Tekst testowy nie pojawia się w, /var/log/anm.logale pojawia się w/var/log/syslog

* AKTUALIZACJA *

Jakie uprawnienia są /var/log/"yourlogfilehere"potrzebne? Owner, Group, rwx?

Próbowałem ustawić grp i own na root i na nazwę użytkownika uruchamiającą komendę logger. Z żadną zmianą.

Próbowałem także utworzyć pliki dziennika w niestandardowym katalogu w /var/log. tj. /var/log/anm/anm.logi ustawienie obu typów uprawnień do katalogu.

* AKTUALIZACJA *

rsyslogd jest uruchomiony

syslog     598  0.0  0.1  31060  1292 ?        Sl   03:02   0:02 rsyslogd -c5

a oto dane wyjściowe z mojego /etc/rsyslog.confpliku

#  /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

Próbowałem także zainstalować /etc/rsyslog.d/50-default.conf(korzystam z 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

* AKTUALIZACJA *

Cóż, w końcu to rozgryzłem. Chciałbym, żeby ktoś mi na to odpowiedział. Zajęło mi kilka dni, aby dowiedzieć się, co było nie tak, ale wydaje mi się, że nie ma zbyt wielu osób na superużytkowniku.

Problem dotyczył uprawnień do pliku niestandardowego pliku dziennika, tak jak pierwotnie teoretyzowałem. Myślałem, że mam prawidłowe uprawnienia, ale okazuje się, że właścicielem musi być syslogi grupa adm. Ustaliłem to, porównując do user.logpliku. Po zmodyfikowaniu i ponownym przetestowaniu uprawnień wszystko działa idealnie! Mam nadzieję, że pomoże to komuś innemu szybciej niż byłem w stanie znaleźć odpowiedź.

Atomiklan
źródło
1
Widziałem identyczny post na SF - proszę nie krzyżować.
Journeyman Geek
Wszyscy mówili mi, żebym przesunął mój post. Chyba powinienem usunąć pozostałe?
Atomiklan
1
tak. Możesz także oflagować własne posty, aby poprosić moderatora o przeniesienie go również w przyszłości
Journeyman Geek
„Proszę o natychmiastową pomoc” również nie jest bardzo pomocnym tytułem pytania. Osobiście uważam, że twoje pytanie jest trudne do odczytania; gdzie jest prawdziwe pytanie? Jedyne prawdziwe pytanie, jakie widzę, to „jakich uprawnień potrzebują / var / log / somefile?” odpowiedź na to powinna brzmieć: „niech syslogd sobie z tym poradzi”. Poza tym było to wiele aktualizacji temu i prawdopodobnie nie ma już znaczenia.
CVn
Możesz opublikować swoje rozwiązanie jako odpowiedź, aby inne osoby mające ten sam problem mogły je zobaczyć.
gronostaj

Odpowiedzi:

6

Cóż, w końcu to rozgryzłem. Chciałbym, żeby ktoś mi na to odpowiedział. Zajęło mi kilka dni, aby dowiedzieć się, co było nie tak, ale wydaje mi się, że nie ma zbyt wielu osób na superużytkowniku.

Problem dotyczył uprawnień do pliku niestandardowego pliku dziennika, tak jak pierwotnie teoretyzowałem. Myślałem, że mam prawidłowe uprawnienia, ale okazuje się, że właścicielem musi być „syslog”, a grupa „adm”. Ustaliłem to, porównując z plikiem user.log. Po zmodyfikowaniu i ponownym przetestowaniu uprawnień wszystko działa idealnie! Mam nadzieję, że pomoże to komuś innemu szybciej niż byłem w stanie znaleźć odpowiedź.

Oto ostateczne uprawnienia

-rw-r--r-- 1 syslog adm 0 Aug  3 05:09 anm.log
Atomiklan
źródło
„Myślałem, że mam prawidłowe uprawnienia” oznacza, że ​​sam utworzyłeś plik. Dlaczego po prostu nie pozwoliłeś, aby demon syslog go utworzył?
CVn
Pytanie brzmiało: dlaczego kiedy używam polecenia logger, nie mogę dostać go do wyjścia do niestandardowego pliku dziennika w / var / log? Właśnie próbowałem pozwolić syslogowi utworzyć plik i nie działam. Tak czy inaczej jest w porządku. Nie mam nic przeciwko temu, aby mój skrypt instalacyjny utworzył plik i ustawił uprawnienia.
Atomiklan
1
Wydaje się,
Cześć @Atomiklan Dzięki za twoje pytanie rozwiązuje dokładnie ten sam problem. Zastanawiam się jednak, dlaczego plik automatycznie utworzony przez rsyslog znajduje się w katalogu root / root zamiast prawidłowego syslog / adm? Czy masz pojęcie dlaczego?
Yudong Li
dzięki! najwyraźniej twój wysiłek właśnie mnie uratował od 2 dni debugowania syslogu :) I z niejasnych komentarzy @ MichaelKjörlinga i @YudongLi pomyślałem, że demon sam tworzy plik zgodnie ze ścieżką w regule config. Po service restartzapoznaniu się z regułą i przy pierwszym odpowiednim wywołaniu z loggertworzy plik z ustawionymi prawidłowymi uprawnieniami.
xealits
1

@Atomiklan wspomniał, że musiał zmienić właściciela / grupę swojego pliku niestandardowego na syslog / adm. Próbowałem tego i zadziałało ...

Ale komentarz @ MichaelKjörling również wydawał się słuszny: dlaczego nie pozwolić, aby demon syslog utworzył plik?

Kluczem w moim przypadku (i sugeruję OP) jest to, że użytkownik syslog nie miał uprawnień do zapisu w katalogu mojego dziennika niestandardowego . Zrobiłem chmod o+w, zrestartowałem rsyslog, a mój plik dziennika z radością pojawił się tam, gdzie powinien ... ze syslog / adm jako użytkownik / grupa.

Dan H.
źródło
1
#$ModLoad imudp
#$UDPServerRun 514

musi być:

$ModLoad imudp
$UDPServerRun 514

uruchomić zdalne logowanie!

rsyslog
źródło