#include <stdio.h>
#include <pwd.h>
int main()
{
struct passwd * pw;
char *username = "apple";
pw = getpwnam(username);
if (!pw) {
printf("%s is not exist\n", username);
return -1;
}
printf("pw->pw_name = %s\n", pw->pw_name);
printf("pw->pw_passwd = %s\n", pw->pw_passwd);
printf("pw->pw_uid = %d\n", pw->pw_uid);
printf("pw->pw_gid = %d\n", pw->pw_gid);
printf("pw->pw_gecos = %s\n", pw->pw_gecos);
printf("pw->pw_dir = %s\n", pw->pw_dir);
printf("pw->pw_shell = %s\n", pw->pw_shell);
}
分享到:
相关推荐
本文将深入探讨三个重要的函数:getpw(), getpwnam(), 和 getpwuid(),它们用于从系统密码文件(通常位于/etc/passwd)中检索用户数据。 首先,我们来看`getpw()`函数。这个函数接受一个用户识别码(uid)作为参数...
if ( (ptr = getpwnam("stevens")) == NULL) err_sys("getpwnam error"); printf("pw_passwd = %s\n", ptr->pw_passwd == NULL || ptr->pw_passwd[0] == 0 ? "(null)" : ptr->pw_passwd); exit(0); }
1. **`getpwuid()` 和 `getpwnam()`**: 这两个函数用于获取系统中与用户ID或用户名关联的信息。`getpwuid()` 函数通过用户ID(uid_t 类型)查找并返回一个指向`passwd`结构体的指针,该结构体包含了用户的相关信息...
这需要使用`chown()`和`getpwnam()`来改变文件所有权。 提交内容: 1. 完整的源代码。 2. `makefile`:这个文件应该能够编译程序,生成`labBook`执行文件,并创建`labBook`目录,设置其权限。 3. `readme`:根据...
$pw = posix_getpwnam('nobody'); posix_setuid($pw['uid']); posix_setgid($pw['gid']); ``` 3. **保证排它性:**确保同一时间只有一个脚本实例在运行是非常重要的,特别是在后台运行时。可以使用`flock()`函数对...
gid = pwd.getpwnam('nginx').pw_gid; for d in paths: dstat = os.stat(d); if dstat.st_uid != uid: try: os.chown(d, uid, gid); except: logger(1, "chown(%s, nginx, nginx) failed\n" % (d)); ``` ...
1. 使用`getpwnam`函数获取指定用户名的用户信息。 2. 调用系统调用`ipcs`获取当前系统中所有的IPC资源信息。 3. 检查每个IPC资源的所有者是否与目标用户匹配。 4. 如果匹配,使用`ipcrm`命令(IPC资源管理器)删除...
在C语言中,通常使用`getpwnam()`和`getpwuid()`函数从`/etc/passwd`获取用户信息,而`getgrnam()`和`getgrgid()`则用于查询组信息。在Python等高级语言中,有如`pwd`和`grp`模块提供类似的接口。 **安全注意事项**...
getpw()、getpwent()、getpwnam()、getpwuid()等用于获取用户信息;getgr()、getgrent()、getgrgid()、getgrnam()等用于获取组信息。 数据结构及算法部分则涉及到C语言中一些复杂的数据结构操作,以及算法的实现,...
gid = pwd.getpwnam(user)[3] # 获取用户的GID groups = grp.getgrgid(gid)[0] # 根据GID获取组名 except KeyError as e: print('Failed to find primary group for user %s' % user) return group ``` 这里...
login程序的主要任务是验证用户密码,这涉及到getpwnam函数获取用户信息,getpass函数读取密码(不回显),以及crypt函数对密码进行加密比对。如果验证失败,login会调用exit函数返回错误代码,告知父进程(通常是...
POSIX.1定义了两个函数来获取口令文件的信息:`getpwuid()` 和 `getpwnam()`,它们根据用户ID或用户名返回相应的`passwd`结构体。 综上所述,第六章主要讲解了如何高效地处理和访问系统数据文件,特别是口令文件,...
6. **pwd**:这个目录与用户和组信息处理相关,比如`getpwuid`和`getpwnam`等函数,用于获取用户或组的信息。 7. **scripts**:包含了构建glibc时使用的脚本,这些脚本用于配置、编译和测试库。 8. **resolv**:这...
2. `getpwnam(const char *name)`:根据用户名返回对应的`passwd`结构体指针。 这两个函数提供了便捷的方式,让程序员可以轻松获取和操作用户的账户信息,无论口令文件的实际格式如何。 本章还涉及了其他系统数据...
用户组篇介绍了如何使用`getpwnam()`、`getpwuid()`获取用户信息,`getgrnam()`和`getgrgid()`获取组信息,以及`setuid()`和`setgid()`切换用户或组身份。 文件操作篇不仅包括基本的文件操作,还可能涵盖高级特性,...
struct passwd *getpwnam(const char *name); // 通过用户名查找 ``` 这些函数为开发者提供了方便,无需直接处理文本文件,提高了代码的可移植性。 总的来说,本章详细介绍了UNIX系统中的口令文件及其使用,不仅...
- getpwnam():通过用户名获取password结构。 - getpwent():获取下一个password条目。 - getpw():已经不推荐使用,等同于getpwent()。 - getgroups():获取指定进程的组ID集合。 - getgrnam():通过组名获取group...
* getpwnam(): 获取密码信息 * getpwuid(): 获取密码信息 * initgroups(): 初始化组信息 * setegid(): 设置当前进程的有效组 ID * seteuid(): 设置当前进程的有效用户 ID * setgid(): 设置当前进程的组 ID * set...