【发布时间】:2012-04-05 10:27:09
【问题描述】:
如何使用 c 以编程方式更改正在运行的外部进程的 uid 和 gid?
【问题讨论】:
-
这在 iOS 上的实现方式与在 unix 系统上的方式相同吗?如果不是,则应删除 iOS 标签。如果是这样,哇,那太棒了!
如何使用 c 以编程方式更改正在运行的外部进程的 uid 和 gid?
【问题讨论】:
一个小例子,包括使用现有用户和组名更改 uid 和 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);
编辑:这只适用于当前进程
【讨论】: