我使用prctl(pr_set_dumpable, 1)
之后调用setuid()
启用了coredumps生成。 我发现使用prctl(pr_set_dumpable, 1)
也改变了所有文件的所有者:/proc/(pid)
的位置,这是一个副作用还是预期?是否prctl(pr_set_dumpable,1)有可见的副作用?
0
A
回答
0
您确定它是prctl
而不是setuid
系统调用它改变/proc/self/
的所有权吗?我猜setuid
应该改变它....
2
为了记录在案,我只是绊倒了这个自己试图将核心转储关闭,和我没有使用setuid
。当我运行此程序:
#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;
}
我得到这个结果(删节):
$ ./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
1
是的,它是由dumpable完成。您可以通过查看
明白为什么和搜索 'dumpable'。 inode uids首先设置为GLOBAL_ROOT_UID,然后只有在任务可以抽取时才设置为所有者uid。
相关问题
- 1. auto_detect_line_endings - 是否有副作用?
- 2. 活动的副作用不再可见?
- 3. 在C#中使用`x + = 1`而不是`++ x`是否有任何副作用?
- 4. 除了对代码合同没有“可见的副作用”之外,[Pure]是否有其他含义?
- 5. Postgres - 没有实际的更新,是否有副作用?
- 6. 是否有可能知道JFrame是否完全可见?
- 7. 有没有办法确定JavaScript函数是否有副作用?
- 8. 是否有任何使用多个string.xml文件的副作用?
- 9. 创建和连接线程时的副作用的可见性
- 10. 查看是否有任何QTips可见?
- 11. 是否有可能创建管理员用户的副本
- 12. 使用许多静态函数是否有任何副作用?
- 13. 是否有可能使键盘不可见,而Chrome的地址栏不可见?
- 14. 正在更改IF EXIST(SELECT 1 FROM)到IF EXIST(SELECT TOP 1 FROM)是否有任何副作用?
- 15. 元素是否可见?
- 16. h:inputText -Field是否可见?
- 17. 确定是否点可见
- 18. 检查UIAlertView是否可见
- 19. 仅删除可见行的可见副本
- 20. ElasticSearch - 如何制作现有索引的1对1副本
- 21. sbcl在优化时是否考虑函数是否有副作用?
- 22. Android:是否可以制作视图的副本?
- 23. 是否有任何常见的C环境下EOF = -1或WEOF = -1
- 24. 以下Java代码是否有副作用?
- 25. Javascript自定义类,是否有副作用?
- 26. 是否有可能让孩子显示:没有元素可见?
- 27. 有没有办法看到元素是否可见,可点击?
- 28. 是否有可能WACH应用的见解本地
- 29. 是否有可能使透明div的内容完全可见?
- 30. memcache是否使用副本?
是的我相信,setuid不能改变/ proc/self所有权,而使用prctl(pr_set_dumpavlr,1)改变它。 –
我很确定'setuid'(或'seteuid'和其他类似的系统调用)正在改变它。否则,所有的'/ proc /'目录都属于根目录(因为所有进程都有'init'作为他们的祖先,但是'prctl'几乎从不使用),并且它们不会。 –
这就是我曾经的想法!但prctl(pr_set_dumpavlr,1)仅在/ proc/self /文件夹中相应地更改所有者:组。 –