Niedziałające "who am i" pod Xami

Jacek Osiecki joshua w hybrid.pl
Wto, 28 Wrz 2010, 11:02:19 CEST


Witam,

Raz pisałem na pld-users-pl ale bez odzewu (tzn. bez rozwiązania ;)
Teraz zebrałem więcej danych i ślę tutaj - może ktoś z obecnych domyśli 
się co się dzieje?

Od razu zaznaczam, że problemem nie jest to że nie mogę sobie zobaczyć 
"who am i", tylko to że prawdopodobnie przez to nie da się np. zrobić "su"
bez podawania hasła bo pam_wheel głupieje...

Dla przypomnienia: pod konsolą "who am i" działa, nie działa tylko pod 
Xami. Dzieje się tak niezależnie od terminala - aterm, urxvt, xterm itd.
Przykład:

joshua w pingwin ~> who am i
joshua w pingwin ~> ssh localhost
Password:
Last login: Tue Sep 28 00:18:44 2010
joshua w pingwin ~> who am i
joshua   pts/18       2010-09-28 10:46 (localhost)
joshua w pingwin ~>

Wkurzyłem się i postanowiłem odpalić strace'a - spod roota, żeby mnie nic 
nie zablokowało.
Pliki strace'a różniły się nieznacznie - nie wklejam tu tego, co moim 
zdaniem nie ma znaczenia (inne adresy alokowane w pamięci itp). Plik "<" 
to ten prawidłowy, po "ssh localhost", który podaje wynik. Plik ">" to 
strace bezpośrednio z konsoli w Xach, który nic nie zwraca.

Na początku "who am i" odpalone z ssh ma więcej zmiennych (ale to pewnie 
nieistotne), natomiast zastanawia mnie to że ten odpalony z konsoli po 
odczytaniu że "/proc/self/fd/0" jest linkiem do "/dev/pts/1" - już nic 
więcej nie robi. Coś jest nie tak z /dev/pts/1, czy co?

Poniżej diff strace'ów.

< execve("/usr/bin/who", ["who", "am", "i"], [/* 29 vars */]) = 0
---
> execve("/usr/bin/who", ["who", "am", "i"], [/* 27 vars */]) = 0

< readlink("/proc/self/fd/0", "/dev/pts/17", 4095) = 11
< stat64("/dev/pts/17", {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 17), 
...}) = 0
< time(NULL)                              = 1285663300
< open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = 3
< fstat64(3, {st_mode=S_IFREG|0644, st_size=26928, ...}) = 0
< mmap2(NULL, 26928, PROT_READ, MAP_SHARED, 3, 0) = 0xb739f000
< close(3)                                = 0
< open("/etc/localtime", O_RDONLY)        = 3
< fstat64(3, {st_mode=S_IFREG|0644, st_size=2679, ...}) = 0
< fstat64(3, {st_mode=S_IFREG|0644, st_size=2679, ...}) = 0
< mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb739e000
< read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\n\0\0\0\n\0\0\0\0"..., 4096) = 2679
< _llseek(3, -28, [2651], SEEK_CUR)       = 0
< read(3, "\nCET-1CEST,M3.5.0,M10.5.0/3\n", 4096) = 28
< close(3)                                = 0
< munmap(0xb739e000, 4096)                = 0
< fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 17), ...}) = 0
< mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb739e000
< write(1, "root     pts/17       2010-09-28"..., 51) = 51
---
> readlink("/proc/self/fd/0", "/dev/pts/1", 4095) = 10
204d185
< munmap(0xb739e000, 4096)                = 0





-- 
Jacek Osiecki joshua w ceti.pl GG:3828944
I don't want something I need. I want something I want.


Więcej informacji o liście dyskusyjnej pld-devel-pl