首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >prctl(pr_set_dumpable,1)有明显的副作用吗?

prctl(pr_set_dumpable,1)有明显的副作用吗?
EN

Stack Overflow用户
提问于 2011-12-01 15:55:12
回答 3查看 3.7K关注 0票数 0

我在setuid()调用之后使用prctl(pr_set_dumpable, 1)启用了核心转储生成。我发现使用prctl(pr_set_dumpable, 1)还会改变/proc/(pid)位置的所有文件的所有者:组,这是一个副作用还是预期的影响?

EN

回答 3

Stack Overflow用户

发布于 2012-02-03 06:37:00

需要说明的是,我自己在尝试关闭核心转储时被这个问题给绊倒了,而且我也没有使用setuid。当我运行这个程序时:

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <sys/prctl.h>
#include <unistd.h>

int main(int argc, char *argv[]) {
  char ls_cmd[64];
  snprintf(ls_cmd, sizeof(ls_cmd), "/bin/ls -ld /proc/%d/fd", getpid());

  system(ls_cmd);

  if (0 > prctl(PR_SET_DUMPABLE, 0)) {
    perror("can't prctl(PR_SET_DUMPABLE)");
    return 1;
  }

  system(ls_cmd);

  return 0;
}

我得到了这个结果(编辑后):

代码语言:javascript
复制
$ ./prctl-and-proc
dr-x------ 2 myuname mygroup 0 Feb  2 17:08 /proc/23999/fd
dr-x------ 2 root root 0 Feb  2 17:08 /proc/23999/fd
票数 3
EN

Stack Overflow用户

发布于 2014-04-12 06:06:05

是的,它是由dumpable完成的。您可以通过查看以下内容了解原因

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/fs/proc/base.c?id=refs/tags/v3.14

然后搜索“dumpable”。inode uid首先设置为GLOBAL_ROOT_UID,然后仅当任务可转储时才设置为所有者uid。

票数 1
EN

Stack Overflow用户

发布于 2011-12-01 17:02:03

您确定是prctl而不是setuid系统调用更改了/proc/self/的所有权吗?我猜setuid应该改变它……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8338065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档