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;
};
修改用户描述
#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>
void test_getpwent()
{
struct passwd *pw;
setpwent();
while ((pw = getpwent()) != NULL) {
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();
}
void test_getpwnam()
{
struct passwd *pw;
pw = getpwnam("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();
pw = getpwuid(target_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);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!