Linux 仅为我自己禁用并重新启用地址空间布局随机化

Linux 仅为我自己禁用并重新启用地址空间布局随机化,linux,bash,aslr,virtual-address-space,sysctl,Linux,Bash,Aslr,Virtual Address Space,Sysctl,我想在我的系统(Ubuntu Gnu/Linux 2.6.32-41-server)上禁用地址空间布局随机化(ASLR),但是,如果我使用 sysctl -w kernel.randomize_va_space=0 我想,这一变化会影响系统上的所有用户。(这是真的吗?) 顺便说一句,我看到我的系统的当前(默认)设置是 kernel.randomize_va_space = 2 为什么是2而不是1或3?在哪里可以找到有关/proc/sys设置的数值、范围和含义的文档?谢谢 内核源代码树中有随机

我想在我的系统(Ubuntu Gnu/Linux 2.6.32-41-server)上禁用地址空间布局随机化(ASLR),但是,如果我使用

sysctl -w kernel.randomize_va_space=0
我想,这一变化会影响系统上的所有用户。(这是真的吗?)

顺便说一句,我看到我的系统的当前(默认)设置是

kernel.randomize_va_space = 2

为什么是2而不是1或3?在哪里可以找到有关/proc/sys设置的数值、范围和含义的文档?谢谢

内核源代码树中有
随机化空间
sysctl设置的文档。基本上

0-关闭进程地址空间随机化

1-使mmap基、堆栈和VDSO页的地址随机化

2-另外启用堆随机化


在基于Linux的系统上本地禁用ASLR的最佳方法是使用进程个性标志。操纵个性标志的命令为

-R
-addr no randomize

禁用虚拟地址空间的随机化(启用ADDR\u NO\u RANDOMIZE)

以下是如何继续:

$> setarch $(uname -m) -R /bin/bash
此命令运行已禁用ASLR的shell。此过程的所有后代都将继承父亲的人格标志,因此具有禁用的ASLR。打破标志继承性的唯一方法是调用setuid程序(支持这种特性会违反安全性)


请注意,
uname-m
用于不硬编码平台的体系结构,并使此命令可移植。

谢谢!这确实解决了我上面的第二个(“顺便说一句”)问题,但我仍然看不到将sysctl的效果限制在单个帐户或shell会话的方法。我想这一定是不可能的-/是的,设置是全局的。快速的grep显示,在“个性”代码(处理多个abi)中有一些(可能是残留的)代码可以做相反的事情。在任务结构的个性字段上设置ADDR_NO_RANDOMIZE标志将禁用该行为,即使该行为已全局启用。但这可能比你想处理的更多。表示
setarch$(uname-m)-rlbash
必须工作||