linux 函数 增加用户,linux常用c函数用户组有哪些?

endgrent(关闭组文件)  相关函数 getgrent,setgrent  表头文件 #include  #include  定义函数 void endgrent(void);  函数说明 endgrent()用来关闭由getgrent()所打开的密码文件。

返回值  附加说明  范例 请参考getgrent()与setgrent()。  endpwent(关闭密码文件)  相关函数 getpwent,setpwent  表头文件 #include

#include  定义函数 void endpwent(void);  函数说明 endpwent()用来关闭由getpwent()所打开的密码文件。

返回值  附加说明  范例 请参考getpwent()与setpwent()。  endutent(关闭utmp 文件)  相关函数 getutent,setutent  表头文件 #include  定义函数 void endutent(void);  函数说明 endutent()用来关闭由getutent所打开的utmp文件。

返回值  附加说明  范例 请参考getutent()。  fgetgrent(从指定的文件来读取组格式)  相关函数 fgetpwent  表头文件 #include  #include  #include  定义函数 struct group * getgrent(FILE * stream);  函数说明 fgetgrent()会从参数stream指定的文件读取一行数据,然后以group结构将该数据返回。

参数stream所指定的文件必须和、etc/group相同的格式。group结构定义请参考getgrent()。  返回值 返回group结构数据,如果返回NULL则表示已无数据,或有错误发生。  范例 #include   #include  #include  main()  {  struct group *data;  FILE *stream;  int i;  stream = fopen("/etc/group", "r");  while((data = fgetgrent(stream))!=0){  i=0;  printf("%s :%s:%d :", data->gr_name,data->gr_passwd,data->gr_gid);  while (data->gr_mem[i])printf("%s,",data->gr_mem[i++]);  printf("\n");  }  fclose(stream);  }  执行 root:x:0:root,  bin:x:1:root,bin,daemon  daemon:x:2:root,bin,daemon  sys:x:3:root,bin,adm  adm:x:4:root,adm,daemon  tty:x:5  disk:x:6:root  lp:x:7:daemon,lp  mem:x:8  kmem:x:9  wheel:x:10:root  mail:x:12:mail  news:x:13:news  uucp:x:14:uucp  man:x:15  games:x:20  gopher:x:30  dip:x:40:  ftp:x:50  nobody:x:99:  fgetpwent(从指定的文件来读取密码格式)  相关函数 fgetgrent  表头文件 #include

#include  #include  定义函数 struct passwd * fgetpwent(FILE *stream);  函数说明 fgetpwent()会从参数stream指定的文件读取一行数据,然后以passwd结构将该数据返回。

参数stream所指定的文件必须和/etc/passwd相同的格式。passwd结构定义请参考getpwent()。  返回值 返回passwd结构数据,如果返回NULL则表示已无数据,或有错误发生。  范例 #include

#include  main()  {  struct passwd *user;  FILE *stream;  stream = fopen("/etc/passwd", "r");  while((user = fgetpwent(stream))!=0){   printf("%s:%d:%d:%s:%s:%s\n",user->pw_name,user->pw_uid,user->pw_gid,user->pw_gecos,user->pw_dir,user->pw_shell);  }  }  执行 root:0:0:root:/root:/bin/bash  bin:1:1:bin:/bin:  daemon:2:2:daemon:/sbin:  adm:3:4:adm:/var/adm:  lp:4:7:lp:/var/spool/lpd:  sync:5:0:sync:/sbin:/bin/sync  shutdown:6:0:shutdown:/sbin:/sbin/shutdown  halt:7:0:halt:/sbin:/sbin/halt  mail:8:12:mail:/var/spool/mail:  news:9:13:news:var/spool/news  uucp:10:14:uucp:/var/spool/uucp:  operator:11:0:operator :/root:  games:12:100:games:/usr/games:  gopher:13:30:gopher:/usr/lib/gopher-data:  ftp:14:50:FTP User:/home/ftp:  nobody:99:99:Nobody:/:  xfs:100:101:X Font Server: /etc/Xll/fs:/bin/false  gdm:42:42:/home/gdm:/bin/bash  kids:500:500: : /home/kids:/bin/bash  getegid(取得有效的组识别码)  相关函数 getgid,setgid,setregid  表头文件 #include  #include  定义函数 gid_t getegid(void);  函数说明 getegid()用来取得执行目前进程有效组识别码。

有效的组识别码用来决定进程执行时组的权限。返回值返回有效的组识别码。  范例 main()  {  printf("egid is %d\n",getegid());  }  执行 egid is 0 /*当使用root身份执行范例程序时*/  geteuid(取得有效的用户识别码)  相关函数 getuid,setreuid,setuid  表头文件 #include  #include  定义函数 uid_t geteuid(void)  函数说明 geteuid()用来取得执行目前进程有效的用户识别码。

有效的用户识别码用来决定进程执行的权限,借由此改变此值,进程可以获得额外的权限。倘若执行文件的setID位已被设置,该文件执行时,其进程的euid值便会设成该文件所有者的uid。例如,执行文件/usr/bin/passwd的权限为 -r-s--x--x,其s 位即为setID(SUID)位,而当任何用户在执行passwd 时其有效的用户识别码会被设成passwd 所有者的uid 值,即root的uid 值(0)。

返回值 返回有效的用户识别码。  范例 main()  {  printf ("euid is %d \n",geteuid());  }  执行 euid is 0 /*当使用root身份执行范例程序时*/  getgid(取得真实的组识别码)  相关函数 getegid,setregid,setgid  表头文件 #include  #include  定义函数 gid_t getgid(void);  函数说明 getgid()用来取得执行目前进程的组识别码。

返回值 返回组识别码  范例 main()  {  printf(“gid is %d\n”,getgid());  }  执行 gid is 0 /*当使用root身份执行范例程序时*/  getgrent(从组文件中取得账号的数据)  相关函数 setgrent,endgrent  表头文件 #include  #include   定义函数 struct group *getgrent(void);  函数说明 getgrent()用来从组文件(/etc/group)中读取一项组数据,该数据以group 结构返回。

第一次调用时会取得第一项组数据,之后每调用一次就会返回下一项数据,直到已无任何数据时返回NULL。  struct group{  char *gr_name; /*组名称*/  char *gr_passwd; /* 组密码*/  gid_t gr_gid; /*组识别码*/  char **gr_mem; /*组成员账号*/  }  返回值 返回group结构数据,如果返回NULL则表示已无数据,或有错误发生。

附加说明 getgrent()在第一次调用时会打开组文件,读取数据完毕后可使用endgrent()来关闭该组文件。  错误代码 ENOMEM 内存不足,无法配置group结构。

范例 #include  #include  main()  {  struct group *data;  int i;  while((data= getgrent())!=0){  i=0;  printf(“%s:%s:%d:”,data->gr_name,data->gr_passwd,data->gr_gid);  while(data->gr_mem[i])printf(“%s,”,data->gr_mem[i++]);  printf(“\n”);  }。

全部

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值