【问题标题】:Programmatically change the uid and gid of a running external process using c使用 c 以编程方式更改正在运行的外部进程的 uid 和 gid
【发布时间】:2012-04-05 10:27:09
【问题描述】:

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

【问题讨论】:

  • 这在 iOS 上的实现方式与在 unix 系统上的方式相同吗?如果不是,则应删除 iOS 标签。如果是这样,哇,那太棒了!

标签: c ios macos unix process


【解决方案1】:

一个小例子,包括使用现有用户和组名更改 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);

编辑:这只适用于当前进程

【讨论】:

  • 对不起,更新刚才的问题,我想要的是改变正在运行的外部进程的uid和gid,而不是它本身。
  • 那不公平 :) 无论如何,恐怕这通常是不可行的。
  • 是的,似乎有点不公平,但我认为它可以解决我的问题:)
猜你喜欢
  • 2017-08-29
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 2013-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多