• linux用户信息


    1.用户登录Linux系统的时候,需要一个用户名和密码,登录成功后,进入一个shell,得到一个uid,这是一个整数,相当于一个人的身份证号码。
        获取uid:uid_t getuid();
        获取登录名: char* getlogin()
    2.在/etc/passwd包含一个用户账号的数据库,每一行代表一个用户的信息,格式如下
    用户名:加密口令:用户标识符:组标识符:全名:家目录:默认shell

    3.标准的用户信息接口
    (1)根据uid号码获取信息:struct passwd* getpwuid(uid_t uid);
    (2)根据登录名获取信息:struct passwd* getpwnam(const char* name);
    struct passwd的成员如下:
    char* pw_name 用户登录名
    uid_t pw_uid    用户UID
    gid_t pw_gid    GID号
    char* pw_dir    用户家目录
    char* pw_gecos 用户全名
    char* pw_shell    用户默认shell

    4.扫描密码文件中的所有信息
    void endpwent(); 终止读取
    struct passwd* getpwent(); 返回读取到的信息
    void setpwent(); 重新设置读取的位置到开头
    getpwend返回每个用户信息

    这三个函数的行为有点类似于opendir,readdir,closedir;

    1. //下面这个程序读取密码文件所有的信息,只打印登录名字
    2. #include
    3. #include
    4. #include
    5. #include
    6. int main()
    7. {
    8. struct passwd* ptr = NULL;
    9. while( (ptr = getpwent()))
    10. {
    11. printf("%s\n",ptr->pw_name);
    12. }
    13. return 0;
    14. }
    1. //下面这个程序的功能与上面相差不多,首先将指针设置在文件开头,在遍历结束后,关闭指针
    2. #include
    3. #include
    4. #include
    5. #include
    6. int main()
    7. {
    8. setpwent();
    9. struct passwd* ptr = NULL;
    10. while( (ptr = getpwent()))
    11. {
    12. printf("%s\n",ptr->pw_name);
    13. }
    14. endpwent();
    15. return 0;
    16. }

  • 相关阅读:
    application.yml与bootstrap.yml的区别
    netty自定义channel id
    25.4 MySQL 函数
    Cesium从零开始开发
    RPA技术介绍与应用价值
    【Java面试】@Resource 和 @Autowired 的区别
    设计模式之适配器模式(五)
    elasticsearch(RestHighLevelClient API操作)(黑马)
    SpringMVC之CRUD(增删改查)
    ssh终端工具推荐-WindTerm
  • 原文地址:https://blog.csdn.net/weixin_42581560/article/details/127815558