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