我想我的系统上禁用地址空间布局随机化(ASLR)(Ubuntu的GNU / Linux的2.6.32-41服务器),但是,如果我用
sysctl -w kernel.randomize_va_space=0
的变化将影响到所有用户的系统上,我相信。 (这是真的吗?)我怎么可以限制禁用ASLR对自己作为唯一的,或仅在其中我调用命令禁用shell会话的用户的影响?
顺便说一句,我看到我的系统的电流(默认)设置为
sysctl -w kernel.randomize_va_space=0
为什么2,而不是1或3? 我在哪里可以找到有关的/ proc / sys目录设置,其范围的数值,其含义文档? 谢谢!
对于文档randomize_va_space
sysctl的设置是在Documentation/sysctl/kernel.txt
在内核源代码树。 基本上,
0 - 关闭进程的地址空间随机化关闭。
1 - 让MMAP基地的地址,栈和VDSO页随机。
2 - 另外启用堆随机化。
本地禁用基于Linux系统上的ASLR的最好方法是使用过程中的个性标志。 操纵个性标志的命令是setarch
与
-R
, --addr-no-randomize
禁用虚拟地址空间(打开ADDR_NO_RANDOMIZE)的随机化。
下面是如何进行的:
$> setarch $(uname -m) -R /bin/bash
此命令运行中的ASLR已被禁用的外壳。 这个过程中的所有后代将继承父亲的个性标志,因而具有禁用ASLR。 打破标志的遗产将是调用setuid程序的唯一方法(这将是一个安全漏洞,以支持这种功能)。
请注意, uname -m
是在这里没有硬编码平台的体系结构,使这个命令便携。