Давненько я не пользовался с нашим локальным CVS. С тех пор пару раз сервер переставлял, но файлы репозитария заботливо сохранял в надежде когда-нибудь вернуться к вопросу. И вот оно наступило.
Поставил себе TortoseCVS, скачал главно последнюю версию - и ни фига не работает.
Ну и ладно. нужно просто по шагам реанимировать, - подумал я
Кому интересен итог - читать конец
Кому интересен весь процесс читать сначала.
Кому неинтересно - не читать!!!
1. Первым делом проверил xinet на предмет запускаемости. Прогнал своим сканером порты сервера - но порт 2401 не отображался.
Долго я бился над этим, пока понял что мой сканер сканирует только стандартные порты. Исправил - порт появился, но в чём тогда дело?
2. Потом я грешил на файрвол/selinux ещё что-нибудь, но я был просто шокирован, когда узнал что один из наших программеров нормально работает с CSV !! Офигеть O_O
3. Потом грешил на новую версию TortoiseCVS, т.к. старая работала(!!) Но я поставил себе старую версию - ноль эмоций!
а ещё я заметил, что при попытке зайти любым пользователем клиент потом спрашивает пароль, а при заходе мной - отрубает сразу!
4. Решил проверить весь трафик сниффером
Тест первый - несуществующий юзер
BEGIN AUTH REQUEST
/mnt/saturn/MainCVS
asdasd
AyZeyZe
END AUTH REQUEST
[/CODE]
ответ:
code:
E Fatal error, aborting.
error 0 asdasd: no such user
Попробовал существующим, это с начала
code:
BEGIN AUTH REQUEST
/mnt/saturn/MainCVS
ghost
A
END AUTH REQUEST
Получил ответ O_O
code:
I HATE YOU
Попробовал существующим, а это клиент уже пытается слать пароль.
code:
BEGIN AUTH REQUEST
/mnt/saturn/MainCVS
ghost
A
END AUTH REQUEST
Но пароль неправильный и соответственно отлуп
code:
I HATE YOU
А когда я захожу собой? Думаете пошлёт? или чо?
code:
BEGIN AUTH REQUEST
/mnt/saturn/MainCVS
marat
A
END AUTH REQUEST
А вот чо:
code:
error 0: root not allowed
Откуда он взял что я рут??
Качаю исходники CVS и гляжу:
server.c
code:
pw = getpwnam (username);
if (pw == NULL)
{
/* bla-bla */
printf ("E Fatal error, aborting.\n\error 0 %s: no such system user\n", username);
/* bla-bla */
error_exit ();
}
if (pw->pw_uid == 0)
{
#ifdef HAVE_SYSLOG_H
/* bla-bla */
syslog (LOG_DAEMON | LOG_ALERT,
"attempt to root from account: %s", cvs_username
);
#endif
printf("error 0: root not allowed\n");
error_exit ();
}
Что такое getpwnam - если что можно спросить у гугла, я так и сделал.
Пипец ребята! Честно, мамой клянусь, не рут я!
code:
[root@caesar MainCVS]# cat /etc/passwd|grep marat
marat:x:501:501::/home/marat:/bin/bash
С чего оно взяло??
Короче завёл нового пользователя и теперь работаю в удовольствие, но вопросы остались