Portál AbcLinuxu, 10. května 2025 06:55
Dobry den, napsal jsem si v C aplikaci na editaci souboru wtmp, ta funguje asi takto:
./wtmclean -u root
... vymaze veskere zaznamy tykajici se roota z wtmp souboru. Problem, je ze kdyz nyni dam prikaz last, tak ten na konci vypise:
wtmp begins Thu Jan 1 01:00:00 1970
misto puvodnoho data. Nevite proc k tomuto dochazi nebo jak vratit puvodni datum? Soubor edituju takto:
// reads record from u/wtmp file while (fread((char *)&uwtmp_tmp, sizeof(uwtmp_tmp), 1, uwtmp_file) > 0) { // is that record concerning specified user? if (strcmp(uwtmp_tmp.ut_name, user) == 0) { // rewind back one structure fseek(uwtmp_file, -sizeof(uwtmp_tmp), SEEK_CUR); // fill our tmp struct with zeros bzero(&uwtmp_tmp, sizeof(uwtmp_tmp)); // rewrite record fwrite((char *)&uwtmp_tmp, sizeof(uwtmp_tmp), 1, uwtmp_file); count++; } }
ut_tv
položka - ak je vynulovaná, tak zodpovedá času "Jan 1 00:00:00 1970" plus časový posun pre time-zonu - takže tipujem, že odtiaľ to ide.
Ešte 3 veci musím okomentovať:
chmod -i /var/log/wtmp
?
Ano to presne delam, ja ale prepisi napr pouze jednu tuto strukturu. Takovychto struktur je tam vice. Proc by se tedy zrovna hledelo na to datum u struktury, kterou jsem prave prepsal? Neni proste na nejake definovane pozici v tom souboru wtmp ono datum ulozeno?
Soubor mam otevreny jako "r+", nejsem si vedom zadnych komplikaci co by to melo zpusobit. fwrite je normalni binarni zapis - s koncem souboru nic nedela.
Ano zaznamy nemazu, ale prepisuju. Je to jednodussi nez kdybych struturu zcela smazal a zbytek souboru posunul o sizeof(struct utmp) nahoru a svuj ucel to plni.
chmod -i alespon u me na systemu hlasi neplatny option, zkutecne jste chtel napsat toto?
Proc by se tedy zrovna hledelo na to datum u struktury, kterou jsem prave prepsal?Možno sa len zoberie hodnota z prvého záznamu v poradí - ten asi "last" považuje za najstarší, nie? Skús tam zapísať nejaký reálny časový údaj a uvidíme čo to spraví.
Ano zaznamy nemazu, ale prepisuju. Je to jednodussiNie je potom
last
z toho trocha vedľa?
chmod -i alespon u me na systemu hlasi neplatny option, zkutecne jste chtel napsat toto?Sorry. Mal som na mysli
chattr
a 'immutable flag'.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.