Niedziałające "who am i" pod Xami
Jacek Osiecki
joshua at hybrid.pl
Tue Sep 28 11:02:19 CEST 2010
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 at pingwin ~> who am i
joshua at pingwin ~> ssh localhost
Password:
Last login: Tue Sep 28 00:18:44 2010
joshua at pingwin ~> who am i
joshua pts/18 2010-09-28 10:46 (localhost)
joshua at 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 at ceti.pl GG:3828944
I don't want something I need. I want something I want.
More information about the pld-devel-pl
mailing list