[prev in list] [next in list] [prev in thread] [next in thread] 

List:       shadow
Subject:    Again:bug in login: wrong pid in utmprecord.
From:       Stef Bon <stef () bononline ! tk>
Date:       2005-10-30 21:04:33
Message-ID: 200510302204.33769.stef () bononline ! tk
[Download RAW message or body]

Hello again,

i've posted earlier about what I think is a bug.
I think that in the utmpdatabase the wrong pid is stored by 'login' and 'su'.

Maybe it was a little bit complicated to understand. I'll try again:

First I'm in my kdm-session. From konsole I get:

> > who -u
sbon	:0		Oct 30 21:18	?		3117
> > ps aux
.....
root	2951  0.0  0.6  3692 1692 ?        S    21:17   0:00	-:0
sbon	3117  0.0  0.5  4880 1344 ?        Ss   21:18  0:00	/bin/sh \
                /opt/kde-3.5/bin/startkde
.....
So far no problem. In the utmpdatabase the pid of the process of user sbon is \
stored:3117.

When I open a root console, and then do from the first konsole:

> > who -u
sbon	:0		Oct 30 21:18	?		3117
> > ps aux
.....
root	2951  0.0  0.6  3692 1692 ?        S    21:17   0:00 -:0
sbon	3117  0.0  0.5  4880 1344 ?        Ss   21:18   0:00 /bin/sh \
                /opt/kde-3.5/bin/startkde
.....
sbon	3425  0.2  5.1 29608 13112 ?       S    21:35   0:00 konsole [kdeinit] --type su
root	3428  0.0  0.6  5468 1752 pts/1    Ss   21:35   0:00 su -
root	3429  0.0  0.6  4672 1576 pts/1    S+   21:35   0:00 -bash
.....

I can't understand! In the utmpdatabase the pid of the process su is not stored. The \
user root is logged in right!

I go futher: In the su-konsole, I do 
root@localhost:> login

After entering my credebtials as user sbon, I do again on my konsole:

> > who -u
sbon	:0		Oct 30 21:18	?		3117
sbon     pts/1        	Oct 30 21:39   	.          		3445
> > ps aux
sbon	3425  0.1  5.1 29608 13116 ?       S    21:35   0:00 konsole [kdeinit] --type su
root	3428  0.0  0.6  5456 1736 pts/1    Ss   21:35   0:00 su -
root	3429  0.0  0.6  4672 1584 pts/1    S    21:35   0:00 -bash
root	3445  0.0  0.7  5576 1884 pts/1    S    21:39   0:00 login
sbon	3490  0.0  0.7  5396 1960 pts/1    S+   21:39   0:00 -bash

Again I do not understand:
The pid of the parent process, login, is stored in the new record in the \
utmpdatabase, 3445. I think it should be: 3490, and that's the pid of the process of \
what the new user(sbon) is doing: bash.

When I exit the loginsession I started at the su-konsole, I get:

> > who -u
sbon	:0           	Oct 30 21:18   	?          		3117
sbon	pts/1        	Oct 30 21:39   	.          		3445

This is wrong! I've closed the loginsession but the record is still in the \
utmpdatabase!

> > last -f /var/run/utmp
sbon     pts/1                         	Sun Oct 30 21:39    gone - no logout
sbon     :0                            	Sun Oct 30 21:18   still logged in
reboot   system boot                   	Sun Oct 30 20:38          (01:20)

utmp begins Sun Oct 30 20:38:13 2005


So this looks like some bugs to me in the handling of the utmp records:
- su does not store any utmprecord
- login does create a utmprecord, but with a wrong pid. That's the reason this record \
remains in the utmpdatabase and commands like who give wrong information about who is \
logged in. I could use  the command 'w', but that's not my point. 

Any comments? Is this normal behaviour for handling utmprecords? Does not looks like \
it  to me.

Stef Bon
_______________________________________________
shadow mailing list
shadow@pld.org.pl
http://mail.pld.org.pl/mailman/listinfo/shadow


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic