sziasztok!
jelenseg a kovetkezo" deb/lenny alatt: egy nss: compat+mysql modon beallitott gep eseten (lasd /etc/nsswitch.conf) nehany terminal (pl. xfce4-terminal) non-login inditasa eseten a shell promptban "i have no name!" jelenik meg a felhasznalo loginja helyett. mondjuk az esetek 70-80%-aban, teljesen random modon. mas terminal, pl xterm eseten mindig jo. a `whoami`, az `id`, a $USER shell valtozo viszont ezesetben is jol mutatja a felhasznalo valo's loginja't. persze az erintett felhasznalo NSS dolgait mysql-bol szedi. a google azt mondta erre nagy bolcsen hogyha 1. chroot-olunk 2. nem elerheto(?!) az /etc/passwd akkor jelentkezik hasonlo problema. itt ezutobbi nyilvan elmebetegseg, elobbi meg nem all fent, tehat ez kb hasznalhatatlan.
valami otlet? erdekesseg: a problema megoldhato egy
PS1='\u@\h:\w$ '
=>
PS1='${USER}@\h:\w$ '
csere'vel, csak most nincs kedvem soktucatnyi juzerne'l kezzel atirni ezeket...:]
a.
- 1665 megtekintés
Hozzászólások
Nem is kell ÁTírni, ha strapásnak tűnik (szvsz nem az), elég egy ciklus az inkriminált fájlokra és mindegyikbe echo "export PS1..." >>.
- A hozzászóláshoz be kell jelentkezni
ja, vegul ez lett, egy kis sed-eze's. remeljuk most mar menni fog a tobbi felhasznalonak is (nekem azert nem tunt fel mint mezei felhasznalo, mert xterm-et hasznalok... de furcsa hogy miert csak az xfce4-terminalnal jott elo... eh, hulye dolog ez az egesz)
- A hozzászóláshoz be kell jelentkezni
Másik disztrib (xubuntu 10.10) furcsasága:
hza@hza-laptop:~$ nano
Error opening terminal: unknown.
hza@hza-laptop:~$ sudo -s
root@hza-laptop:~# nano
Error opening terminal: unknown.
root@hza-laptop:~#
- A hozzászóláshoz be kell jelentkezni
export TERM=xterm/vt100/screen/whatever
és menni fog.
Persze azt kéne inkább kideríteni, hogy miért is nincs az a TERM változó beállítva.... hogy indult az az első shell? su? sudo? xterm? ssh?
- A hozzászóláshoz be kell jelentkezni
Valahol az nss-ben elveszik a getpwnam. Ha nem mindig, nem mindenkinél, akkor én valami időzítési/kesselési problémára gyanakodnék.
- A hozzászóláshoz be kell jelentkezni
igen, egy getpwuid() hivas elhasalasa utan teszi bele valahova hogy "i have no name!". de ilyen hivassal -- mmint getpwuid() es getpwnam() -- tele van a a shell. amit egyebkent nem is nagyon ertek, hogy miert nem az elejen 1x keri le az uid-hez tartozo adatokat. valoszinuleg ebbol az egyik elhasal, de a tobbi (az $USER valtozo beallitasa, pl) meg megy. najo, most nem fogok bash-t debuggolni ;] a.
- A hozzászóláshoz be kell jelentkezni
Ez csak egy tipp, de szerintem a LOGNAME/USER változókat a getty (akármi, ami bejelentkeztet) állítja be, és azt már csak örökli tőle a bash.
- A hozzászóláshoz be kell jelentkezni
annyira nem kell elbonyolitani a dolgot elvileg, mert minden processnek megvan a maga pidje (getpid(), rendszerhivas, eleg alacsony szinten), es utana ma'rcsak a getpwuid()-del meg kell keresni a megfelelo" nss-rekordot. csak a bash ezt egy kicsit elbonyolitja, jobban a kelletenel. es ezenfelul hogy a getpwnam()-ot miert is hivja meg egyatalan, azt sem ertem. login alapjan megmondani az uid-et? hol van erre szukseg a shell-ben?
- A hozzászóláshoz be kell jelentkezni
Mindenhol szükség van rá, ugyanis noha sok *x-rendszer nem szereti, de gyakorlatilag mindegyik lehetővé teszi, hogy ugyanazzal az UID-del több különböző loginname-nel rendelkező felhasználó legyen a rendszerben. Márpedig a getpid alapján uidot ugyan ki tudsz bányászni, de hogy abból helyes logname is legyen ahhoz már az utmp(x)-t kellene bogarászni - no ennél sokkal egyszerűbb, ha a login mechanizmus maga átadja ezt az USER/LOGNAME nevű környezeti változóban.
- A hozzászóláshoz be kell jelentkezni
"If bash cannot read the /etc/passwd file it will put the string "I have no name" in the environment variable."
Asszem anno nekem is volt emiatt ilyen probelmam.
- A hozzászóláshoz be kell jelentkezni
igen, de ez olvashato es megneztem a bash forrasat, es ott is egy (a sok kozuli) getpwuid() hivas utan irja ki... szoval erdekes. mindegy, kozben mar haxolva a problema, csak kicsit furcsa...
- A hozzászóláshoz be kell jelentkezni
Az baromira nem normális viselkedés, hogy a getpwuid/getpwnam hívások időnként random mód hibára futnak. Ennek szokott az lenni a vége, hogy pl. levelek néha visszapattannak (no such user), meg a login nem enged be.
Ha a dolog következetes (azaz pl. xy program mindig ezt csinálja), akkor az simán lehet jogosultságproblémák miatt is (pl. a nem root felhasználó nem tudja olvasni azt a konfig fájlt, amiből az nss_* modul a saját adatbázisához szükséges jelszót/egyebeket olvasná ki, vagy esetleg az iptables nem engedi konnektálni az adatbázishoz egyes usereket).
- A hozzászóláshoz be kell jelentkezni
A megoldás:
apt-get install nscd
Noha nem tudom egészen pontosan, hogy mi okozza a jelenséget, de én is belefutottam már, és nálam az nscd (Name Service Cache Daemon) telepítése oldotta meg a problémát.
A munkahelyi gépemen Ubuntu 10.04 fut, nálam a gép tartományba léptetése után jött elő ez a probléma, de ahogy telepítettem az nscd-t, rögtön meg is oldódott.
- A hozzászóláshoz be kell jelentkezni
igen, ez egy nehez kerdes, nscd-be ezen rendszer keretein belul ma'r sikerult belefutni :/
- A hozzászóláshoz be kell jelentkezni