Saya menjalankan server Debian dan beberapa hari yang lalu rsyslog saya mulai bertingkah sangat aneh, daemon berjalan tetapi sepertinya tidak melakukan apa-apa. Banyak orang menggunakan sistem tetapi saya satu-satunya dengan akses root (legal).
Saya menggunakan konfigurasi rsyslogd default (jika menurut Anda relevan, saya akan melampirkannya, tetapi ini adalah paket yang disertakan).
Setelah saya memutar semua file log, mereka tetap kosong:
# ls -l /var/log/*.log
-rw-r--r-- 1 root root 0 Jun 27 00:25 /var/log/alternatives.log
-rw-r----- 1 root adm 0 Jun 26 13:03 /var/log/auth.log
-rw-r----- 1 root adm 0 Jun 26 13:03 /var/log/daemon.log
-rw-r--r-- 1 root root 0 Jun 27 00:25 /var/log/dpkg.log
-rw-r----- 1 root adm 0 Jun 26 13:03 /var/log/kern.log
-rw-r----- 1 root adm 0 Jun 26 13:03 /var/log/lpr.log
-rw-r----- 1 root adm 0 Jun 26 13:03 /var/log/mail.log
-rw-r----- 1 root adm 0 Jun 26 13:03 /var/log/user.log
Upaya apa pun untuk memaksa penulisan log tidak berpengaruh:
# logger hey
# ls -l /var/log/messages
-rw-r----- 1 root adm 0 Jun 26 13:03 /var/log/messages
Lsof menunjukkan bahwa rsyslogd tidak membuka file log:
# lsof -p 1855
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd 1855 root cwd DIR 202,0 4096 2 /
rsyslogd 1855 root rtd DIR 202,0 4096 2 /
rsyslogd 1855 root txt REG 202,0 342076 21649 /usr/sbin/rsyslogd
rsyslogd 1855 root mem REG 202,0 38556 32153 /lib/i386-linux-gnu/i686/cmov/libnss_nis-2.13.so
rsyslogd 1855 root mem REG 202,0 79728 32165 /lib/i386-linux-gnu/i686/cmov/libnsl-2.13.so
rsyslogd 1855 root mem REG 202,0 26456 32163 /lib/i386-linux-gnu/i686/cmov/libnss_compat-2.13.so
rsyslogd 1855 root mem REG 202,0 297500 1061058 /usr/lib/rsyslog/imuxsock.so
rsyslogd 1855 root mem REG 202,0 42628 32170 /lib/i386-linux-gnu/i686/cmov/libnss_files-2.13.so
rsyslogd 1855 root mem REG 202,0 22784 1061106 /usr/lib/rsyslog/imklog.so
rsyslogd 1855 root mem REG 202,0 1401000 32169 /lib/i386-linux-gnu/i686/cmov/libc-2.13.so
rsyslogd 1855 root mem REG 202,0 30684 32175 /lib/i386-linux-gnu/i686/cmov/librt-2.13.so
rsyslogd 1855 root mem REG 202,0 9844 32157 /lib/i386-linux-gnu/i686/cmov/libdl-2.13.so
rsyslogd 1855 root mem REG 202,0 117009 32154 /lib/i386-linux-gnu/i686/cmov/libpthread-2.13.so
rsyslogd 1855 root mem REG 202,0 79980 17746 /usr/lib/libz.so.1.2.3.4
rsyslogd 1855 root mem REG 202,0 18836 1061094 /usr/lib/rsyslog/lmnet.so
rsyslogd 1855 root mem REG 202,0 117960 31845 /lib/i386-linux-gnu/ld-2.13.so
rsyslogd 1855 root 0u unix 0xebe8e800 0t0 640 /dev/log
rsyslogd 1855 root 3u FIFO 0,5 0t0 2474 /dev/xconsole
rsyslogd 1855 root 4u unix 0xebe8e400 0t0 645 /var/spool/postfix/dev/log
rsyslogd 1855 root 5r REG 0,3 0 4026532176 /proc/kmsg
Saya sangat frustrasi bahkan menginstal ulang paket rsyslog, tetapi masih menolak untuk login apa pun:
# apt-get remove --purge rsyslog
# apt-get install rsyslog
Saya pikir seseorang telah meretas sistem, jadi jalankan rkhunter, chkrootkit, sembunyikan dalam upaya menemukan proses menyembunyikan / port dan nmap di host jarak jauh untuk membandingkan dengan port yang ditunjukkan oleh netstat. Dan saya tahu ini tidak berarti apa-apa, tetapi semua terlihat baik-baik saja. Sistem ini juga memiliki firewall iptables yang sangat ketat dengan koneksi masuk / keluar.
Ini membuatku gila, tahu apa yang sedang terjadi di sini?
[EDIT - info ruang disk]
# df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 24G 22G 629M 98% /
/dev/root 24G 22G 629M 98% /
devtmpfs 10M 112K 9.9M 2% /dev
tmpfs 76M 48K 76M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 151M 40K 151M 1% /tmp
tmpfs 151M 0 151M 0% /run/shm
[EDIT - info strace]
Strace terlihat oke untukku
[pid 28824] access("/var/log/auth.log", F_OK) = 0
[pid 28824] access("/var/log/syslog", F_OK) = 0
[pid 28824] access("/var/log/daemon.log", F_OK) = 0
[pid 28824] access("/var/log/kern.log", F_OK) = 0
[pid 28824] access("/var/log/lpr.log", F_OK) = 0
[pid 28824] access("/var/log/mail.log", F_OK) = 0
[pid 28824] access("/var/log/user.log", F_OK) = 0
[pid 28824] access("/var/log/mail.info", F_OK) = 0
[pid 28824] access("/var/log/mail.warn", F_OK) = 0
[pid 28824] access("/var/log/mail.err", F_OK) = 0
[pid 28824] access("/var/log/news/news.crit", F_OK) = 0
[pid 28824] access("/var/log/news/news.err", F_OK) = 0
[pid 28824] access("/var/log/news/news.notice", F_OK) = 0
[pid 28824] access("/var/log/debug", F_OK) = 0
[pid 28824] access("/var/log/messages", F_OK) = 0
Log strace lengkap dapat diunduh dari sini
Jawaban:
Kemungkinan besar itu masalah kepemilikan file. rsyslog mulai berjalan sebagai root tetapi kemudian menjatuhkan hak istimewa dan berjalan sebagai syslog pengguna (direktif konfigurasi $ PrivDropToUser ).
file syslog (auth.log, daemon.log, dll.) pada awalnya dimiliki oleh syslog: adm tetapi jika Anda mengubah kepemilikan menjadi root (seperti yang terlihat dari daftar file Anda) maka tidak masalah jika Anda HUP (mis. reload) rsyslog atau restart itu, bahwa itu akan ditolak untuk membuka file-file itu karena kurangnya hak istimewa.
Jika perubahan kepemilikan terjadi setelah rotasi log, maka periksa
create
opsi konfigurasi logrotate Anda. Baik mengkonfigurasinya seperticreate 0644 syslog adm
di/etc/logrotate.d/rsyslog
atau bahkan lebih baik, mendefinisikannya secara global dengan/etc/logrotate.conf
menghilangkan mode, pemilik dan grup, cukup seperti inicreate
(yang merupakan konfigurasi default dengan cara), dalam hal ini nilai yang sama dari file akan digunakan. Konsultasikanman logrotate
untuk detail selengkapnya.Beberapa versi rsyslog menyertakan $ omfileForceChown direktif sebagai solusi untuk perubahan eksternal kepemilikan file, tetapi tidak disarankan. Cara yang disarankan adalah mengonfigurasi kepemilikan dan izin dengan benar. Informasi lebih lanjut tentang masalah ini dapat ditemukan mengikuti tautan itu.
sumber
Saya memiliki masalah ini karena / var / log saya berada di ramdisk untuk mengurangi keausan pada SSD saya dan saya ingin memindahkannya ke HDD jadi saya memiliki lebih banyak sejarah daripada hanya boot saat ini.
Lucunya, karena itu adalah ramdisk, saya tidak punya satu untuk menyalin dari dalam mode pengguna tunggal, jadi saya tidak tahu apa yang seharusnya izin dan kepemilikan! Duh.
Cerpen, dengan lokasi baru Anda:
Rsyslog sekarang dapat menulis ke / var / log karena dijalankan sebagai pengguna 'syslog', grup 'syslog'.
sumber
Jika semua izin file baik dan logrotate dikonfigurasi dengan benar, langkah Anda selanjutnya adalah melihat panggilan sistem rsyslog.
Segera setelah kesalahan ketik saya diperbaiki pada file ini
/etc/rsyslog.d/50-default.conf
, syslog mulai menulis ke / var / log / syslog lagi!sumber