Bug 12564 - minilogd создает /dev/log ограниченного доступа
: minilogd создает /dev/log ограниченного доступа
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/service)
: unstable
: all Linux
: P2 normal
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2007-08-14 18:57 by
Modified: 2012-01-27 01:31 (History)


Attachments
Logger program (298 bytes, text/plain)
2007-08-15 09:45, enp
no flags Details
strace for absent log messages (2.38 KB, text/plain)
2007-08-15 09:46, enp
no flags Details
strace for success logging (2.43 KB, text/plain)
2007-08-15 09:46, enp
no flags Details


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2007-08-14 18:57:24
Воспроизводится на нескольких машинах с branch-4.0. Спустя несколько часов
после
загрузки в /var/log/messages перестают появляться новые сообщения, не все, но
большинство. Если перезапустить syslog, потерянные сообщения придут с
датой/временем перезапуска.
------- Comment #1 From 2007-08-14 19:38:15 -------
Не наблюдаю ничего подобного.
Попробуйте strace'ить приложения, от которых не доходят логи.
------- Comment #2 From 2007-08-14 23:40:19 -------
(In reply to comment #1)
> Не наблюдаю ничего подобного.
> Попробуйте strace'ить приложения, от которых не доходят логи.

попробую

попутный вопрос: почему мне перестали приходить письма от багзиллы?
------- Comment #3 From 2007-08-15 00:29:43 -------
Обязательно попробуйте.

Ответ на попутный вопрос: у домена altlinux.* сломался MX.
------- Comment #4 From 2007-08-15 09:45:31 -------
Created an attachment (id=2146) [details]
Logger program
------- Comment #5 From 2007-08-15 09:46:14 -------
Created an attachment (id=2147) [details]
strace for absent log messages
------- Comment #6 From 2007-08-15 09:46:40 -------
Created an attachment (id=2148) [details]
strace for success logging
------- Comment #7 From 2007-08-15 09:48:32 -------
Попробовал, программа и результаты strace приложены. Кстати, сейчас первое
потерянное сообщение вообще не пришло.
------- Comment #8 From 2007-08-15 09:56:31 -------
Как только сообщения перестанут писаться снова, погляжу на /dev/log, сейчас он
выглядит так:

# ls -l /dev/log
srw-rw-rw- 1 root root 0 Aug 15 09:40 /dev/log
------- Comment #9 From 2007-08-15 10:32:41 -------
Какое ядро, если ovz то HN или VE?
------- Comment #10 From 2007-08-15 13:24:27 -------
ядра std и wks
------- Comment #11 From 2007-08-16 00:04:25 -------
это называется напугал :(

раньше для воспроизведения было достаточно нескольких часов после рестарта
сислога, теперь не могу воспроизвести ни на одной машине ...
------- Comment #12 From 2007-08-17 11:19:24 -------
Итак, воспроизводится, /dev/log выглядит так:

# ls -l /dev/log
srwxr-xr-x 1 root root 0 Aug 17 02:03 /dev/log
------- Comment #13 From 2007-08-17 11:24:44 -------
> # ls -l /dev/log
> srwxr-xr-x 1 root root 0 Aug 17 02:03 /dev/log
 
Вопрос теперь в том, кто может менять права таким образом? За руку поймать
можно? Да, по ночам с машины снимается бэкап, при этом делается service udevd
umount и service udevd start, но этот глюк проявляется независимо: может до
umount/start, а может и после umount/start не появится.
------- Comment #14 From 2007-08-17 12:09:53 -------
Надо найти процесс, который портит /dev/log.
Повесьте на ежеминутный крон что-нибудь такое:
[ -w /dev/log ] || ps afxuww
------- Comment #15 From 2007-08-17 13:47:06 -------
Сделал

Но так ведь можем и не поймать того, кто уложится быстрее чем за минуту между
запусками крона
------- Comment #16 From 2007-08-17 14:14:40 -------
Можно ещё service acct start сделать.
------- Comment #17 From 2007-08-17 14:41:02 -------
Хм... Я что-то сделал не так?

[root@pbx ~]# service acct start
Turning on process accounting:                                                 
                                                       [ DONE ]
[root@pbx ~]# mcedit /var/account/pacct 

[root@pbx ~]# last-acct 
alexsis  pts/1        192.168.0.149    Fri Aug 17 14:35 - 14:35  (00:00)
alexsis  pts/1        192.168.0.149    Fri Aug 17 14:27 - 14:32  (00:04)
*** buffer overflow detected ***: last-acct terminated
======= Backtrace: =========
/lib64/libc.so.6(__chk_fail+0x2f)[0x2aec798214ff]
/lib64/libc.so.6[0x2aec79820ab9]
/lib64/libc.so.6(_IO_default_xsputn+0x8e)[0x2aec797bd69e]
/lib64/libc.so.6(_IO_vfprintf+0x14d2)[0x2aec79796802]
/lib64/libc.so.6(__vsprintf_chk+0x9d)[0x2aec79820b5d]
/lib64/libc.so.6(__sprintf_chk+0x80)[0x2aec79820aa0]
last-acct[0x4012ba]
last-acct[0x4016a9]
last-acct[0x401975]
last-acct[0x4020f6]
/lib64/libc.so.6(__libc_start_main+0xf4)[0x2aec79772c14]
last-acct[0x400e29]
======= Memory map: ========
00400000-00405000 r-xp 00000000 09:00 197033                            
/usr/bin/last-acct
00604000-00605000 rw-p 00004000 09:00 197033                            
/usr/bin/last-acct
00605000-00626000 rw-p 00605000 00:00 0                                  [heap]
2aec7953c000-2aec79554000 r-xp 00000000 09:00 144329                    
/lib64/ld-2.5.so
2aec79554000-2aec79557000 rw-p 2aec79554000 00:00 0 
2aec79559000-2aec7955a000 rw-p 2aec79559000 00:00 0 
2aec79753000-2aec79754000 r--p 00017000 09:00 144329                    
/lib64/ld-2.5.so
2aec79754000-2aec79755000 rw-p 00018000 09:00 144329                    
/lib64/ld-2.5.so
2aec79755000-2aec79884000 r-xp 00000000 09:00 144335                    
/lib64/libc-2.5.so
2aec79884000-2aec79a83000 ---p 0012f000 09:00 144335                    
/lib64/libc-2.5.so
2aec79a83000-2aec79a86000 r--p 0012e000 09:00 144335                    
/lib64/libc-2.5.so
2aec79a86000-2aec79a88000 rw-p 00131000 09:00 144335                    
/lib64/libc-2.5.so
2aec79a88000-2aec79a8e000 rw-p 2aec79a88000 00:00 0 
2aec79a8e000-2aec79a9b000 r-xp 00000000 09:00 144386                    
/lib64/libgcc_s.so.1
2aec79a9b000-2aec79c9b000 ---p 0000d000 09:00 144386                    
/lib64/libgcc_s.so.1
2aec79c9b000-2aec79c9c000 rw-p 0000d000 09:00 144386                    
/lib64/libgcc_s.so.1
7fff31559000-7fff3156e000 rw-p 7fff31559000 00:00 0                      [stack]
ffffffffff600000-ffffffffffe00000 ---p 00000000 00:00 0                  [vdso]
john     pts/3        10.0.0.1.don Fri Aug 17 11:17 Aborted
------- Comment #18 From 2007-08-17 14:45:19 -------
last-acct, похоже, не работает, но это совсем другая история.
Вам нужен lastcomm.
------- Comment #19 From 2007-08-20 08:54:45 -------
Вообще-то проблема с правами четко воспроизводится так:

# ls -l /dev/log
srw-rw-rw- 1 root root 0 Aug 20 08:48 /dev/log

# service udevd umount
Stopping udevd service:                                                        
                                                       [ DONE ]
Removing udev device nodes:                                                    
                                                       [ DONE ]

# ls -l /dev/log
ls: /dev/log: No such file or directory

# service udevd start
Starting udevd service:                                                        
                                                       [ DONE ]
Populating /dev:                                                               
                                                       [ DONE ]

# ls -l /dev/log
srwxr-xr-x 1 root root 0 Aug 20 08:48 /dev/log

# service syslogd restart
Stopping system logger service:                                                
                                                       [ DONE ]
Starting system logger service:                                                
                                                       [ DONE ]

# ls -l /dev/log
srw-rw-rw- 1 root root 0 Aug 20 08:49 /dev/log

И раньше я это прозевал наверное потому, что приложения, уже открывшие
/dev/log,
продолжали работать и слать сообщения.

Такое поведение udevd нормально или вешать баг?
------- Comment #20 From 2007-08-20 19:56:56 -------
Непонятно, почему udevd после этой процедуры вообще создаёт /dev/log, тем более
с такими правами доступа.
------- Comment #21 From 2007-08-21 09:03:04 -------
Такая процедура - следствие лени (лень отдельно держать бэкап /dev/ и при
необходимости накатывать 2 бэкапа, хотя, конечно, и это обходится, если
бэкапить
не сразу в архив, а использовать rsync). Есть смысл расследовать это поведение
или забить?
------- Comment #22 From 2007-08-21 14:39:29 -------
Портить права в данном случае может minilogd, запускаемый из initlog (пакет
service) при отсутствии /dev/log; в коде minilogd не видно вызовов umask() или
chmod().

Для бэкапа лучше использовать mount --bind / /куда/нибудь - вызов service udevd
umount при работающей системе чреват разнообразными неприятностями.
------- Comment #23 From 2010-10-31 00:52:23 -------
Так что, перевешиваем на `rpm -qf /sbin/minilogd` (service) или NOTABUG?
------- Comment #24 From 2010-11-01 07:58:44 -------
(В ответ на комментарий №23)
> Так что, перевешиваем на `rpm -qf /sbin/minilogd` (service) или NOTABUG?

перевесил

однако я давно поборол лень и сделал архив /dev при выключенном udev и теперь
больше его никогда не трогаю
------- Comment #25 From 2012-01-26 02:32:22 -------
(In reply to comment #22)
> Портить права в данном случае может minilogd, запускаемый из initlog (пакет
> service) при отсутствии /dev/log; в коде minilogd не видно вызовов umask() или
> chmod().

OK, давайте рискнем сделать в minilogd права на /dev/log 0666.
------- Comment #26 From 2012-01-27 01:31:01 -------
service-0.5.22-alt1 -> sisyphus:

* Thu Jan 26 2012 Dmitry V. Levin <ldv@altlinux> 0.5.22-alt1
- start-stop-daemon: implemented support of /proc/%d/exe pointing
  to names with " (deleted)" prefix.
- minilogd: changed to create /dev/log socket world writable
  (closes: #12564).
- init.d/functions (UnmountFilesystems): implemented mountpoints
  decoding to match getmntent(3) behaviour (closes: #17118).
- init.d/functions (start_daemon):
  + added --background option (closes: #26529);
  + added --check option.
- service.8: imported from Fedora (closes: #22166).