当前位置:  技术问答>linux和unix

lastlog文件的问题。

    来源: 互联网  发布时间:2015-09-09

    本文导语:  loastlog是记录最后进入系统的用户的信息,包括登录的时间、登录是否成功等信息。 为什么我用ultraEdit打开,只有 0E A0 F8 41 3A 30 以后就全是00了,没有任何数据保存。 但是我在linux下用lastlog 命令,就能看到很多...

loastlog是记录最后进入系统的用户的信息,包括登录的时间、登录是否成功等信息。
为什么我用ultraEdit打开,只有 0E A0 F8 41 3A 30 以后就全是00了,没有任何数据保存。
但是我在linux下用lastlog 命令,就能看到很多用户登陆的信息,请问这是怎么回事??

|
如果你除了root还有其他用户登录过机器的话,比如说guest, uid是500,那么在文件
的500*sizeof(lastlog)=146000处的lastlog的结构里保存着guest的最后一次登录信息。
否则全是零

|
参考:http://w3studi.informatik.uni-stuttgart.de/~bergerfx/studies/unix-programming.html 中的Sparse File部分。

下面的代码在RH7.3下编译运行通过:
==================================================

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

const char* LASTLOG_FILE = "/var/log/lastlog";

static void print_one(const char* uname, const struct lastlog* log)
{
printf("%s", uname);
if (!log->ll_line[0] && !log->ll_host[0]){
printf(" ** NEVER logged in **n");
}else{
printf(" logged in from %s at %s on %sn",
log->ll_line, log->ll_host, ctime(&log->ll_time));
}
}

static void usage(const char* prog)
{
printf("Usage:%s usernamen", prog);
exit(0);
}

int main(int argc, char* argv[])
{
int user_id;
struct lastlog log;
struct stat statbuf;
FILE* fp;
struct passwd* passwd;
// calculate the offset
if (argc != 2)
usage(argv[0]);

passwd = getpwnam(argv[1]);
if (passwd == NULL){
printf("User [%s] not foundn", argv[1]);
return -1;
}

off_t offset = passwd->pw_uid *sizeof(log);

fp = fopen(LASTLOG_FILE, "rb");
if (fp == NULL) {perror("fopen"); return -1;}

if (fstat (fileno(fp), &statbuf)) {
perror("fstat");
return -1;
}

// check if the file is large enough
if (offset >= statbuf.st_size)
return -1;

// seek to the offset
fseek (fp, offset, SEEK_SET);

// read in the struct
if (fread ((char *) &log, sizeof(lastlog), 1, fp) == 1)
print_one(argv[1], &log);
else
perror (LASTLOG_FILE);

return 0;
}



    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3