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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (103)

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.
提问于
用户回答回答于

无论出于什么原因,用户帐户都没有权限禁用内核的地址空间布局随机化。

默认情况下,gdb会关闭它,因为它使某些类型的调试更容易(特别是,这意味着每次运行程序时堆栈对象的地址都是相同的)。

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

至于获得禁用aslr所需的权限,可能可以归结为拥有对/proc/sys/kernel/randomize_va_space

用户回答回答于

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

docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined

扫码关注云+社区