2013-11-28 34 views
5

Sklonowałem moje repozytorium git do zdalnego serwera, używając ssh do komunikowania się z nim. Korzystanie git fetch remote działa, ale gdy wpisuję git push remote uzyskać ten wynik:Błąd git "nie można wyszukać bieżącego użytkownika w pliku passwd: brak takiego użytkownika" - co to oznacza?

Counting objects: 242, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (184/184), done. 
Writing objects: 100% (215/215), 238.00 KiB | 0 bytes/s, done. 
Total 215 (delta 58), reused 0 (delta 0) 
fatal: unable to look up current user in the passwd file: no such user 
fatal: The remote end hung up unexpectedly 
fatal: The remote end hung up unexpectedly 

Serwer Admin mówi, że moja ssh użytkownik jest skonfigurowany wewnątrz chroot-więzienia. Co można zrobić, aby rozwiązać ten błąd?

Odpowiedz

2

Ten komunikat o błędzie jest zwracany przez wrapper.c:

struct passwd *xgetpwuid_self(void) 
{ 
     struct passwd *pw; 

     errno = 0; 
     pw = getpwuid(getuid()); 
     if (!pw) 
       die(_("unable to look up current user in the passwd file: %s"), 
       errno ? strerror(errno) : _("no such user")); 
     return pw; 
} 

To oznacza funkcję common library getpwuid nie znajdzie wprowadzenia hasła w pliku/etc/passwd dla konta użytkownika, w ramach którego proces git nazywa

To tak, jakby nscd service nie wiedział, jak rozwiązać niektóre usługi.

Poproś administratora, aby dokładnie sprawdził katalog więzienia kont (nazwijmy go: $D), jak pokazano na this article. Szczególnie jego folder $D/etc:

cp -fv /etc/{group,prelink.cache,services,adjtime,shells,gshadow,shadow,hosts.deny,localtime,nsswitch.conf,nscd.conf,prelink.conf,protocols,hosts,passwd,ld.so.cache,ld.so.conf,resolv.conf,host.conf} $D/et 
+0

Dzięki za odpowiedź. Administrator zrobił to wszystko, ale wciąż nie działa. Czy istnieje plik dziennika informujący, który użytkownik jest w ogóle potrzebny, aby mógł umieścić tego użytkownika w/etc/passwd? –

+0

@ C.S. po stronie klienta można nacisnąć z aktywowanym śledzeniem, aby uzyskać więcej wskazówek: 'GIT_TRACE = 1 git push'. Po stronie serwera zależy to od adresu URL używanego przez zdalnego: https lub ssh. Ale pomocna może być również analiza logów serwera (Apache lub sshd). – VonC

+7

Ta metoda używana do wypełnienia domyślnej tożsamości użytkownika, aby tego uniknąć, możesz ustawić swoją tożsamość ręcznie: 'git config --global user.email" [email protected] "' 'git config --global user.name" Twoje imię "' Mam ten problem, gdy miałem uwierzytelnionego użytkownika przez zdalny LDAP, więc nie miałem wpisu w pliku passwd – Eugene