|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Eugene Grosbein 2:5006/1 23 Apr 2004 20:51:12 To : Gleb Smirnoff Subject : ftpd и euid -------------------------------------------------------------------------------- AS>>>>> http://www.unixfaq.ru/index.pl?req=qs&id=252 EG>>>> Hе могу найти подтверждения этому в /usr/src/sys :-( GS>>> А почему ищещь в "sys"? 8) EG>> Потому что информация о привилегиях хранится в kernel space. GS> Hужно смотреть в исходники ftpd что бы увидеть, что bind делается перед GS> seteuid. EG>> Я верю unixfaq в этом вопросе, просто не могу найти реализацию этого. GS> Ясное дело, этот вопрос написал майнтейнер ftpd :) Ты знаешь, у меня возникли сомнения по поводу этого майнтейнера ;-) и утверждения на unixfaq.ru. bind(), похоже, совсем непричем. А причем, похоже, совсем даже socket()... А ему привилегии вовсе и не нужны рутовые. Вот с этим патчем все работает-то как надо. Интересно, почему это изначально не так? Кому не лень, посмотрите. А то и протолкнем патч? - --- ftpd.c.orig Fri Apr 23 20:42:47 2004 +++ ftpd.c Fri Apr 23 20:43:23 2004 @@ -1792,7 +1792,6 @@ if (data >= 0) return (fdopen(data, mode)); - (void) seteuid((uid_t)0); s = socket(data_dest.su_family, SOCK_STREAM, 0); if (s < 0) @@ -1802,6 +1801,7 @@ /* anchor socket to avoid multi-homing problems */ data_source = ctrl_addr; data_source.su_port = htons(dataport); + (void) seteuid((uid_t)0); for (tries = 1; ; tries++) { if (bind(s, (struct sockaddr *)&data_source, data_source.su_len) >= 0) Eugene -- "Люди забыли эту истину," - сказал Лис, - "но ты не забывай" --- slrn/0.9.8.0 (FreeBSD) * Origin: Svyaz Service JSC (2:5006/1@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/26093b1542aed.html, оценка из 5, голосов 10
|