如何在 Ubuntu 9.10 中关闭 ASLR

Sum*_*Tea 5 linux

我想在我自己的 PC 上关闭 ASLR。但是每次我输入“sudo echo 0 > /proc/sys/kernel/randomize_va_space”时,系统都会显示?“权限被拒绝”。我怎样才能让它工作?顺便说一下,我的操作系统内核是 2.6.30。

希望任何人都可以帮我一把。

问候。

jan*_*neb 11

这是 sudo 和 shell 重定向的常见问题。“sudoness”不会通过重定向传播。绕过它的一种方法是

sudo bash -c "echo 0 > /path/to/file"
Run Code Online (Sandbox Code Playgroud)


Siu*_*ji- 11

在您的命令中,I/O 重定向>由当前 shell 处理。解释器将命令视为 3 部分:

  1. sudo echo 0
  2. >
  3. /proc/sys/kernel/randomize_va_space

echo是使用超级用户权限,而电流壳(与正常用户权限)尝试写入执行/proc/sys/kernel/randomize_va_space,并且因此触发一个Permission denied错误。

有几种方法可以克服这个问题。第一种方法是使用超级用户权限运行 shell,并使用-cswitch将命令传递给 shell :

sudo sh -c "echo 0 > /proc/sys/kernel/randomize_va_space"
Run Code Online (Sandbox Code Playgroud)

(您可以sh用于 POSIX shell 和bashBash)

另一种方法是使用tee命令。该tee命令将内容从标准输入复制到标准输出(通常表示“屏幕”)以及列出的文件。因此,以下命令将字符打印A到标准输出以及文件output1.txtoutput2.txt.

echo A | tee output1.txt output2.txt
Run Code Online (Sandbox Code Playgroud)

在您的问题中,写入/proc/sys/kernel/randomize_va_space需要超级用户权限,而echo-ing0不需要。所以,解决办法是:

echo 0 | sudo tee /proc/sys/kernel/randomize_va_space >/dev/null
Run Code Online (Sandbox Code Playgroud)

最后重定向以/dev/null防止0打印到屏幕。