linux passwd文件

passwd结构体

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;      /* 用户登录后使用的shell */  
};

修改用户描述

#usermod -c "this is user" testpwd
#cat /etc/passwd|grep testpwd
testpwd:x:1001:1001:this is user:/home/testpwd:/bin/sh

getpwent、getpwnam和getpwuid函数

函数名 入参 解释
getpwent 无入参 读取Passwd文件中的某一行
getpwnam const char *name 读取指定用户名的用户信息
getpwuid uid_t uid 读取指定用户id的用户信息
#include <stdio.h>  
#include <pwd.h>  
#include <unistd.h> // 用于获取当前用户ID  
  
void test_getpwent()
{
      struct passwd *pw;  
    setpwent(); // 重置passwd文件的读取位置到开始  
  
    while ((pw = getpwent()) != NULL) {  // 遍历passwd文件中的所有用户
        printf("Username: %s\n", pw->pw_name);  
        printf("User ID: %d\n", pw->pw_uid);  
        printf("Group ID: %d\n", pw->pw_gid);  
	printf("Commit : %s\n", pw->pw_gecos);
        printf("Home Directory: %s\n", pw->pw_dir);  
        printf("Shell: %s\n", pw->pw_shell);  
        printf("\n");  
    }  
  
    endpwent(); // 关闭passwd文件 
}
void test_getpwnam()
{
    struct passwd *pw;  
    pw = getpwnam("username"); // 将"username"替换为你要查询的用户名  
  
    if (pw != NULL) {  
        printf("Username: %s\n", pw->pw_name);  
        printf("User ID: %d\n", pw->pw_uid);  
        printf("User gecos: %s\n", pw->pw_gecos);  
        // ... 可以打印其他字段  
    } else {  
        printf("User not found.\n");  
    }  
}

void test_getpwuid(int target_uid)
{
struct passwd *pw;  
    uid_t uid = getuid(); // 获取当前用户的ID  
    pw = getpwuid(target_uid);  //获取指定uid的用户信息
  
    if (pw != NULL) {  
        printf("Username: %s\n", pw->pw_name);  
        printf("User ID: %d\n", pw->pw_uid);  
        printf("User gecos: %s\n", pw->pw_gecos);  
        // ... 可以打印其他字段  
    } else {  
        printf("User not found.\n");  
    }  
}


int main() {  
     test_getpwuid(1001);// 打印uid为1001的用户的信息
    return 0;  
}
posted @ 2024-04-20 22:14  菠萝超级酸  阅读(33)  评论(0编辑  收藏  举报