首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >警告:禁用地址空间随机化时出错:不允许操作

警告:禁用地址空间随机化时出错:不允许操作
EN

Stack Overflow用户
提问于 2016-03-08 14:29:46
回答 3查看 35K关注 0票数 86

我做错了什么(或没做什么)导致gdb不能为我正常工作?

代码语言:javascript
复制
root@6be3d60ab7c6:/# cat minimal.c 
int main()
{
  int i = 1337;
  return 0;
}
root@6be3d60ab7c6:/# gcc -g minimal.c -o minimal
root@6be3d60ab7c6:/# gdb minimal
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
.
.
.
Reading symbols from minimal...done.
(gdb) break main
Breakpoint 1 at 0x4004f1: file minimal.c, line 3.
(gdb) run
Starting program: /minimal 
warning: Error disabling address space randomization: Operation not permitted
During startup program exited normally.
(gdb) 
(gdb) print i   
No symbol "i" in current context.
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-10-11 06:20:40

如果你正在使用Docker,你可能需要--security-opt seccomp=unconfined选项(以及启用ptrace):

代码语言:javascript
复制
docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined
票数 160
EN

Stack Overflow用户

发布于 2016-03-08 14:35:38

无论出于什么原因,您的用户帐户都没有权限为该进程禁用内核的地址空间布局随机化。默认情况下,gdb会将其关闭,因为它使某些类型的调试变得更容易(特别是,这意味着每次运行程序时,堆栈对象的地址都是相同的)。阅读更多here

您可以通过使用set disable-randomization off禁用gdb的此功能来解决此问题。

至于让你的用户获得禁用ASLR所需的权限,这可能归结为拥有对/proc/sys/kernel/randomize_va_space的写权限。阅读更多here

票数 18
EN

Stack Overflow用户

发布于 2018-07-26 10:13:05

基于wisbucky's answer (谢谢!),下面是Docker compose的相同设置:

代码语言:javascript
复制
security_opt:
  - seccomp:unconfined
cap_add:
  - SYS_PTRACE

安全选项seccomp:unconfined修复了address space randomization警告。

能力SYS_PTRACE似乎没有明显的效果,即使Docker documentation声明SYS_PTRACE是一种“默认情况下不授予的能力”。也许我不知道该找什么。

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

https://stackoverflow.com/questions/35860527

复制
相关文章

相似问题

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