• 七、用户组


    1、endgrent

    表头文件  #include<grp.h>

          #include<sys/types.h>

    定义函数  void endgrent(void);

    函数说明  endgrent()用来关闭由getgrent()所打开的密码文件。

    返回值   无

    附加说明  无 

    2、endpwent

    表头文件  #include<pwd.h>

          #include<sys/types.h>

    定义函数  void endpwent(void);

    函数说明  endpwent()用来关闭由getpwent()所打开的密码文件。

    返回值   无

    附加说明  无 

    3、endutent

    表头文件  #include<utmp.h>

    定义函数  void endutent(void);

    函数说明  endutent()用来关闭由getutent所打开的utmp文件。

    返回值   无

    附加说明  无 

    4、fgetgrent

    表头文件  #include<grp.h>

          #include<stdio.h>

          #include<sys/types.h>

    定义函数  struct group * fgetgrent(FILE * stream);

    函数说明  fgetgrent()会从参数 stream指定的文件读取一行数据,然后以 group结构将该数据返回。参数stream所指定的文件必须和、etc/group相同的格式。group结构定义请参考getgrent()。

    返回值   返回group结构数据,如果返回NULL则表示已无数据,或有错误发生。

    附加说明  无 

    5、fgetpwent

    表头文件  #include<pwd.h>

          #include<stdio.h>

          #include<sys/types.h>

    定义函数  struct passwd * fgetpwent(FILE *stream);

    函数说明  fgetpwent()会从参数stream 指定的文件读取一行数据,然后以passwd 结构将该数据返回。参数stream 所指定的文件必须和/etc/passwd相同的格式。passwd结构定义请参考getpwent()。

    返回值   返回passwd 结构数据,如果返回NULL 则表示已无数据,或有错误发生。

    附加说明  无 

    6、getegid

    表头文件  #include<unistd.h>

          #include<sys/types.h>

    定义函数  gid_t getegid(void);

    函数说明  getegid()用来取得执行目前进程有效组识别码。有效的组识别码用来决定进程执行时组的权限。

    返回值   返回有效的组识别码。

    附加说明  无 

    7、geteuid

    表头文件  #include<unistd.h>

          #include<sys/types.h>

    定义函数  uid_t geteuid(void)

    函数说明  geteuid()用来取得执行目前进程有效的用户识别码。有效的用户识别码用来决定进程执行的权限,借由此改变此值,进程可以获得额外的权限。

    倘若执行文件的setID 位已被设置,该文件执行时,其进程的euid 值便会设成该文件所有者的uid。例如,执行文件/usr/bin/passwd的权限为-r-s--x--x,其s位即为setID(SUID)位,

    而当任何用户在执行passwd 时其有效的用户识别码会被设成passwd所有者的uid值,即root 的uid值(0)。

    返回值   返回有效的用户识别码。

    附加说明  无 

    8、getgid

    表头文件  #include<unistd.h>

          #include<sys/types.h>

    定义函数  gid_t getgid(void);

    函数说明  getgid()用来取得执行目前进程的组识别码。

    返回值   返回组识别码

    附加说明  无 

    9、getgrent

    表头文件  #include<grp.h>

          #include<sys/types.h>

    定义函数  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结构。

    10、getgrgid

    表头文件  #include<grp.h>

          #include<sys/types.h>

    定义函数  strcut group * getgrgid(gid_t gid);

    函数说明  getgrgid()用来依参数gid指定的组识别码逐一搜索组文件,找到时便将该组的数据以group结构返回。group结构请参考getgrent( )。

    返回值   返回group结构数据,如果返回NULL则表示已无数据,或有错误发生。

    附加说明  无 

    11、getgrnam

    表头文件  #include<grp.h>

          #include<sys/types.h>

    定义函数  strcut group * getgrnam(const char * name);

    函数说明  getgrnam()用来逐一搜索参数那么指定的组名称,找到时便将该组的数据以group结构返回。group结构请参考getgrent()

    返回值   返回group结构数据,如果返回NULL则表示已无数据,或有错误发生。

    附加说明  无 

    12、getgroups

    表头文件  #include<unistd.h>

          #include<sys/types.h>

    定义函数  int getgroups(int size,gid_t list[]);

    函数说明  getgroup()用来取得目前用户所属的组代码。参数size为list〔〕所能容纳的gid_t 数目。如果参数size 值为零,此函数仅会返回用户所属的组数。

    返回值   返回组识别码,如有错误则返回-1。

    附加说明  无 

    错误代码  EFAULT 参数list数组地址不合法。

          EINVAL 参数size值不足以容纳所有的组

    13、getpw

    表头文件  #include<pwd.h>

          #include<sys/types.h>

    定义函数  int getpw(uid_t uid,char *buf);

    函数说明  getpw()会从/etc/passwd中查找符合参数uid所指定的用户账号数据,找不到相关数据就返回-1。所返回的buf字符串格式如下:账号:密码:用户识别码(uid):组识别码(gid):全名:根目录:shell

    返回值   返回0 表示成功,有错误发生时返回-1。

    附加说明  1. getpw()会有潜在的安全性问题,请尽量使用别的函数取代。 

          2. 使用shadow 的系统已把用户密码抽出/etc/passwd,因此使用getpw()取得的密码将为“x”

    14、getpwent

    表头文件  #include<pwd.h>

          #include<sys/types.h>

    定义函数  strcut passwd * getpwent(void);

    函数说明  getpwent()用来从密码文件(/etc/passwd)中读取一项用户数据,该用户的数据以passwd 结构返回。第一次调用时会取得第一位用户数据,之后每调用一次就会返回下一项数据,直到已无任何数据时返回NULL。    

          passwd结构定义如下:
            struct passwd{
            char * pw_name; /*用户账号*/
            char * pw_passwd; /*用户密码*/
            uid_t pw_uid; /*用户识别码*/
            gid_t pw_gid; /*组识别码*/
            char * pw_gecos; /*用户全名*/
            char * pw_dir; /*家目录*/
            char * pw_shell; /* 所使用的shell路径*/
          };

    返回值   返回passwd 结构数据,如果返回NULL 则表示已无数据,或有错误发生。

    附加说明  getpwent()在第一次调用时会打开密码文件,读取数据完毕后可使用endpwent()来关闭该密码文件。

    错误代码  ENOMEM 内存不足,无法配置passwd结构。 

    15、getpwnam

    表头文件  #include<pwd.h>

          #include<sys/types.h>

    定义函数  struct passwd * getpwnam(const char * name);

    函数说明  getpwnam()用来逐一搜索参数name 指定的账号名称,找到时便将该用户的数据以passwd 结构返回。passwd 结构请参考getpwent()。

    返回值   返回passwd 结构数据,如果返回NULL 则表示已无数据,或有错误发生。

    附加说明  无 

    16、getpwuid

    表头文件  #include<pwd.h>

          #include<sys/types.h>

    定义函数  struct passwd * getpwuid(uid_t uid);

    函数说明  getpwuid()用来逐一搜索参数uid 指定的用户识别码,找到时便将该用户的数据以passwd 结构返回。passwd 结构请参考getpwent()。

    返回值   返回passwd 结构数据,如果返回NULL 则表示已无数据,或者有错误发生。

    附加说明  无 

    17、getuid

    表头文件  #include<unistd.h>

          #include<sys/types.h>

    定义函数  uid_t getuid(void);

    函数说明  getuid()用来取得执行目前进程的用户识别码。

    返回值   用户识别码

    附加说明  无 

    18、getutent

    表头文件  #include<utmp.h>

    定义函数  struct utmp *getutent(void);

    函数说明  getutent()用来从utmp 文件(/var/run/utmp)中读取一项登录数据,

          该数据以utmp 结构返回。第一次调用时会取得第一位用户数据,

          之后每调用一次就会返回下一项数据,直到已无任何数据时返回

          NULL。

          utmp结构定义如下:

          

    struct utmp
    {
    short int ut_type; /*登录类型*/
    pid_t ut_pid; /*login进程的pid*/
    char ut_line[UT_LINESIZE];/*登录装置名,省略了“/dev/”*/
    char ut_id[4]; /* Inittab ID*/
    char ut_user[UT_NAMESIZE];/*登录账号*/
    char ut_host[UT_HOSTSIZE];/*登录账号的远程主机名称*/
    struxt exit_status ut_exit;/* 当类型为DEAD_PROCESS时进程的结
    束状态*/
    long int ut_session; /*Sessioc ID*/
    struct timeval ut_tv; /*时间记录*/
    int32_t ut_addr_v6[4]; /*远程主机的网络地址*/
    char __unused[20]; /* 保留未使用*/
    };

    ut_type有以下几种类型:
    EMPTY 此为空的记录。
    RUN_LVL 记录系统run-level的改变
    BOOT_TIME 记录系统开机时间
    返回值
    附加说明
    范例
    NEW_TIME 记录系统时间改变后的时间
    OLD_TINE 记录当改变系统时间时的时间。
    INIT_PROCESS 记录一个由init衍生出来的进程。
    LOGIN_PROCESS 记录login进程。
    USER_PROCESS 记录一般进程。
    DEAD_PROCESS 记录一结束的进程。
    ACCOUNTING 目前尚未使用。

    exit_status结构定义:
    struct exit_status
    {
    short int e_termination; /*进程结束状态*/
    short int e_exit; /*进程退出状态*/
    };
    timeval的结构定义请参考gettimeofday()。
    相关常数定义如下:
    UT_LINESIZE 32
    UT_NAMESIZE 32
    UT_HOSTSIZE 256

    返回值   返回utmp 结构数据,如果返回NULL 则表示已无数据,或有错误发生。

    附加说明  getutent()在第一次调用时会打开utmp 文件,读取数据完毕后可使用endutent()来关闭该utmp文件。 

    19、getutid

    表头文件  #include<utmp.h>

    定义函数  strcut utmp *getutid(strcut utmp *ut);

    函数说明  

    getutid()用来从目前utmp 文件的读写位置逐一往后搜索参数ut
    指定的记录,如果ut->ut_type 为RUN_LVL,BOOT_TIME,
    NEW_TIME,OLD_TIME 其中之一则查找与ut->ut_type 相符的记
    录;若ut->ut_type 为INIT_PROCESS, LOGIN_PROCESS,
    USER_PROCESS或DEAD_PROCESS其中之一,则查找与ut->ut_id
    相符的记录。找到相符的记录便将该数据以utmp 结构返回。utmp
    结构请参考getutent()。

    返回值   返回utmp 结构数据,如果返回NULL 则表示已无数据,或有错误发生。

    附加说明  无 

    20、getutline 

    表头文件  #include<utmp.h>

    定义函数  struct utmp * getutline (struct utmp *ut);

    函数说明  

    getutline()用来从目前utmp文件的读写位置逐一往后搜索ut_type
    为USER_PROCESS 或LOGIN_PROCESS 的记录,而且ut_line 和
    ut->ut_line 相符。找到相符的记录便将该数据以utmp 结构返回,
    utmp结构请参考getutent()。

    返回值   返回utmp 结构数据,如果返回NULL 则表示已无数据,或有错误发生。

    附加说明  无 

  • 相关阅读:
    Android学习笔记(四十):Preference的使用
    我的Android笔记(十一)——使用Preference保存设置
    Vim简明教程【CoolShell】
    普通人的编辑利器——Vim
    终端shell显示当前git分支_修订版
    代码规范须知_V1.0_20140703
    Android 4.4源码编译过程
    一个帖子学会Android开发四大组件
    什么是软件质量?
    软件配置管理的作用?软件配置包括什么?
  • 原文地址:https://www.cnblogs.com/Malphite/p/11439837.html
Copyright © 2020-2023  润新知