首页 > 其他 > 详细

系统数据文件操作

时间:2021-05-17 21:42:26      阅读:10      评论:0      收藏:0      [点我收藏+]

系统数据文件操作

基于linux3.2.0

口令文件(/etc/passwd)

内容:morui:x:1000:1000:morui,,,:/home/morui:/bin/bash

x:加密口令

/home/morui:初始工作目录

/bin/bash:初始用户程序

struct passwd{
char * pw_name;	//用户名
char * pw_passwd;//加密口令
uid_t  pw_uid;		//数值用户ID
gid_t  pw_gid;		//数值组ID
char* pw_gecos; //注释字段
char* pw_dir;		//初始工作目录
char* pw_shell;  //初始用户程序
}

阴影口令(/etc/shadow)

存放加密口令(单向加密)的文件

struct spwd{
char* sp_namp;		//用户登陆名
char* sp_pwdp;		//加密口令
int 	sp_lstchg;		//上次更改口令到现在的时间
int 	sp_min;			//经多少天后允许修改
int		sp_max;			//要求更改剩余天数
int		warn;				//超期警告天数
int		sp_inact;		//用户不活动之前剩余天数
int		sp_expire;		//用户超期天数
unsigned int sp_flag;		//保留
}

组文件(/etc/group)

struct group{
char* gr_name;		//组名
char* gr_passwd;	//加密口令
int gr_gid;					//组ID
char** gr_mem;		//指向组成员名
}

主机(/etc/hosts)

网络(/etc/networks)

协议(/etc/protocols)

服务(/etc/services)

登陆账户记录

struct utmp{
char ut_line[8];		// tty_line
char ut_name[8];	//login name
long ut_time;		//second since Epoch
}

文件:

  • /var/run/utmp
  • /var/log/wtmp

系统标识

struct utsname{
char sysname[];
char nodename[];		//网络节点上的主机名字
char release[];
char version[];
char machine[];
}

阻止用户登陆

  • 更改初始用户程序为
  • /dev/null

  • /bin/false

  • /bin/true

接口

  • 口令文件操作

#include <pwd.h>

struct passwd* getpwuid(uid_t uid)

struct passwd* getpwnam(const char * name)

void setpwent(void)

struct passwd * getpwent(void)

void endpwent(void)

struct passwd* p;
setpwent();
while((p = getpwent()) != NULL)
{
***
}
endpwent();
  • 阴影口令文件操作

#include<shadow.h>

struct spwd* getspnam(const char* name)

struct spwd* getspent(void)

void setspent(void)

void endspent(void)

struct spwd* p;
setspent();
while((p = getspent()) != NULL)
{
***
}
endspent();
  • 组文件操作

#include<grp.h>

struct group* getgrgid(gid_t gr_gid)

struct group* getgrnam(const char* name)

s

struct group* getgrent(void)

void setgrent(void)

void endgrent(void)

  • 附属组ID操作

#include<unistd.h>

int getgroups(int gidsetsize, gid_t grouplist[])

说明:当gidsetsize为0时,返回附属组ID总数,而不修改grouplist[]

#include<grp.h>

int setgroups(int ngroups, gid_t grouplist[])

说明:需要root权限,给当前进程设置附属组

int initgroups(const char* username, gid_t basegid)

说明:basegid 是username在口令文件的组ID

  • 主机文件操作

#include<netdb.h>

  • 系统标识

#include<sys/utsname.h>

int uname(struct utsname*name)

系统数据文件操作

原文:https://www.cnblogs.com/blog-morui/p/14778065.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!