Bug 11646 - не регистриуется в wtmp
Summary: не регистриуется в wtmp
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: kdebase-kdm (show other bugs)
Version: unstable
Hardware: all Linux
: P2 major
Assignee: Nobody's working on this, feel free to take it
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-04-28 15:37 MSD by Anton Farygin
Modified: 2007-08-14 19:15 MSD (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Anton Farygin 2007-04-28 15:37:58 MSD
нет регистрации в wtmp, в итоге не видно что пользователь работает в иксах.

В логах мелькает только  gone - no logout для того пользователя, который зашёл в
систему через kdm
Comment 1 Andriy Stepanov 2007-05-10 16:49:31 MSD
Как воспроизвести ошибку:

1. Дождаться загрузки KDM

2. Перейти на консоль (Alt+Ctrl+F1), залогинится от root.
# who 
root     tty1         May 10 11:33 (localhost)

3. Переключится на kdm (Alt+Ctrl+F7) залогинится обычным пользвателем. Ничего не
трогать.

4. Обратно переключится на Alt+Ctrl+F1:

# who 
root     tty1         May 10 11:33 (localhost)

Т.е. _не_ видно что пользователь зашел в систему.

Причем, если сразу выполнить:
#last
Будет выдано что-то типа:
stanv    :0                            Thu May 10 14:43    gone - no logout 
stanv    :0                            Thu May 10 14:43 - 14:43  (00:00)

Когда заходит пользователь в систему через KDM
В файл /var/log/wtmp заносятся две не корректных записи. Хотя пользователь вошел
1 раз.

Разбор:
A)
С недавного времени в KDM встроена утилита sessreg (1). И по умолчанию при
каждом логине пользователя сам KDM регистрирует его. Данное поведение можно
отключить, указавши опцию в /etc/X11/kdm/kdmrc
UseSessReg=false
# Default is true

B)
Но, это не решит нашей проблемы.
Еще в мае 2005 было вот такое сообщение:
http://lists.altlinux.ru/pipermail/sisyphus/2005-May/060381.html
в котором сообщалось о странном поведении: "w/who/last".


На самом деле ошибка кроется вот здесь:
May 10 13:05:51 stanv kdm: :0[10990]: execute: /etc/X11/xdm/GiveConsole
May 10 13:05:51 stanv kdm: :0[10993]: execute: /etc/X11/xdm/TakeConsole

# cat /etc/X11/xdm/GiveConsole /etc/X11/xdm/TakeConsole 
#!/bin/sh
# Assign ownership of the console to the invoking user
# $XConsortium: GiveConsole,v 1.2 93/09/28 14:29:20 gildea Exp $
#
# By convention, both xconsole and xterm -C check that the
# console is owned by the invoking user and is readable before attaching
# the console output.  This way a random user can invoke xterm -C without
# causing serious grief.
#
chown $USER /dev/console
sessreg  -a -w "/var/log/wtmp" -u "/var/run/utmp" \
        -x "/etc/X11/xdm/Xservers" -l $DISPLAY -h "" $USER
#!/bin/sh
# Reassign ownership of the console to root, this should disallow
# assignment of console output to any random users's xterm
# $XConsortium: TakeConsole,v 1.2 93/09/28 14:30:29 gildea Exp $
#
chmod 622 /dev/console
chown root /dev/console
sessreg -d -w "/var/log/wtmp" -u "/var/run/utmp" \
        -x "/etc/X11/xdm/Xservers" -l $DISPLAY -h "" $USER


KDM выполняет скрипты: /etc/X11/xdm/GiveConsole, /etc/X11/xdm/TakeConsole
в которых выполняется уведомление о регистрации пользователя.

В /etc/X11/kdm/kdmrc:
Startup=/etc/X11/xdm/GiveConsole
Reset=/etc/X11/xdm/TakeConsole

$ rpm -qf /etc/X11/kdm/kdmrc
kde-settings-kdm-3.5.6-alt3

Причем, родные файлы Xstartup и Xreset вообще нигде не используются:
$grep -rn sessreg /etc/X11/kdm/
/etc/X11/kdm/Xstartup:13:exec sessreg -a -l $DISPLAY $USER
/etc/X11/kdm/Xreset:10:exec sessreg -d -l $DISPLAY $USER

В итоге два возможных решения:

1. Испольщовать встроеную в KDM sessreg:
тогда в шаблон kdmrc:
UseSessReg=true (по умолчанию kdm)
Startup="" (по умолчанию kdm)
Reset="" (по умолчанию kdm)

2.
Использовать внешню sessreg (1)
тогда в шаблон kdmrc:
UseSessReg=false
Startup=/etc/X11/kdm/Xstartup
Reset=/etc/X11/kdm/Xreset

После этого last (одна корректная запись):
stanv    :0                            Thu May 10 15:43   still logged in   

$w
stanv    :0        15:43   ?xdm?   8.19s  0.02s /usr/bin/wmii

$who
stanv    :0           2007-05-10 15:43
Comment 2 Artem Zolochevskiy 2007-05-13 22:31:31 MSD
как побочный эффект не работает спаривание (запрос пина) с bluetooth

засада с who. не работает kbluepin ибо kbluepin показывает окошко всем, кто 
есть в том who, который показывается ему. а в случае с kdm who показывает 
пустоту.
Comment 3 Sergey V Turchin 2007-08-14 19:15:51 MSD
исправлено в kde-settings-kdm-3.5.6-alt4