Inet-Admins mailing list archive (inet-admins@info.east.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [inet-admins] tac+ia-0.9 & 0.92 bug utmp/wtmp
>Hello Dmitriy Yermakov!
>> Столкнулся с такой проблемой, что при записи в utmp/wtmp
>> такакс обрезает username до 7 символов, что, как мне кажется,
>> не совсем правильно. Это приводит к тому, что если еще
>> используется демон _acctd_ by bwm для ведения счетчика времени,
>> то это время не вычитается и у пользователя получается
>> неограниченный доступ.
>>
>
>У меня в BSD/OS 2.1 UT_NAMESIZE = 16, то есть обрезает до 15. Очевидно, в
>Вашей системе оно 8.
да, FreeBSD 2.2.5
>
>> Вылечилось следующим образом
>>
>> diff do_acct.c.orig do_acct.c
>>
>> 140c140
>> < u.ut_name[UT_NAMESIZE-1] = '\0';
>> ---
>> > /* u.ut_name[UT_NAMESIZE-1] = '\0'; */
>>
>> P.S. другого решения я пока не придумал
>
>
>Решение нехорошее. Более того, фактически оно не работает. Этой строке
да, не совсем красивое. Странно, но работает :)
>предшествует strncpy, которая не должна копировать более UT_NAMESIZE
>символов. Если у вас имя >= 8, то теперь '\0' в конце у Вас не будет, и в
в том-то и дело, что ровно 8 символов
если я еще не совсем забыл С :) то как раз вместо 8-го символа
имени пользователя ( поскольку UT_NAMESIZE=8 ) запишется этот самый '\0'
странность еще в том, что родная программа login.c (из исходников
самой FreeBSD) не делает добавления '\0'.
судя по этому, как мне кажется, добавление этого символа в такаксе
является излишним :), во всяком случае для FreeBSD < 3.0
>дополнение к 8 символам имени есть большая вероятность получить в конце
>некоторый мусор (возможно, что это опять-таки зависит от системы, но в
>BSD/OS, на базе исходников которой построены whotac и lasttac,
>подразумевается, что в файл пишется структура со строковыми полями,
>заканчивающимися '\0')
>
>К сожалению, единственно правильным решением в таком случае будет замена
>описания UT_NAMESIZE и соответственно структуры utmp на свою. Очевидно
>(зависит от системы, я опять-таки базируюсь на исходниках BSD/OS), это можно
>сделать, перенеся (с требуемыми исправлениями) в файл libutil/own_wtmp.h
>полностью содержимое файла /usr/include/utmp.h, и исключа директиву #include
><utmp.h> из всех файлов пакета (в каталоге tac_plus она присутствует только
>в tac_plus.h).
>
>Если у Вас достаточно распространенная система, я могу попробовать сделать
>для нее патч на эту тему.
наверное игра не стоит свеч :)
>
>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Pavel N. Vladimirov pasa@pleskov.ru
> Administration of Pskov Region FIDO 2:5033/2
>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
Dmitriy Yermakov, CCS SUT
dyer@sut.ru
=============================================================================
"inet-admins" Internet access mailing list. Maintained by East Connection ISP.
Mail "unsubscribe inet-admins" to Majordomo@info.east.ru if you want to quit.
|