使用c以编程方式更改正在运行的外部进程的uid和gid

时间:2012-04-05 10:27:09

标签: c ios macos unix process

如何使用c以编程方式更改正在运行的外部进程的uid和gid?

1 个答案:

答案 0 :(得分:2)

一个小例子,包括使用现有用户名和组名更改uid et gid的可能性:

#include <sys/types.h>
#include <unistd.h>
#include <pwd.h>
#include <grp.h>

// .. snip

// find user and group
struct passwd * pwd = getpwnam("new_user");
struct group * grp = getgrnam("new_group");

// not included : error checking

uid_t uid = pwd->pw_uid;
gid_t gid = grp->gr_gid;

setgid(gid);
setuid(uid);

修改:这仅适用于当前流程