我想在自己的电脑上关闭 ASLR。但是每次我输入“sudo echo 0 > /proc/sys/kernel/randomize_va_space”时,系统都会显示“权限被拒绝”。我该怎么做呢?顺便说一下,我的操作系统内核是 2.6.30。
希望有人能帮助我。
问候。
答案1
这是 sudo 和 shell 重定向的常见问题。“sudoness”不会传播到重定向之外。解决此问题的一种方法是
sudo bash -c "echo 0 > /path/to/file"
答案2
在您的命令中,I/O 重定向>
由当前 shell 处理。解释器将该命令视为 3 个部分:
sudo echo 0
>
/proc/sys/kernel/randomize_va_space
使用超级用户权限执行echo
,而当前 shell(具有普通用户权限)尝试写入/proc/sys/kernel/randomize_va_space
,从而触发Permission denied
错误。
有几种方法可以解决这个问题。第一种方法是使用超级用户权限运行 shell,并使用开关将命令传递给 shell -c
:
sudo sh -c "echo 0 > /proc/sys/kernel/randomize_va_space"
(您可以将其用于sh
POSIX shell 和bash
Bash)
另一种方法是使用tee
命令。该tee
命令将内容从标准输入复制到标准输出(通常指“屏幕”)以及列出的文件。因此,以下命令将字符打印A
到标准输出以及文件output1.txt
和output2.txt
。
echo A | tee output1.txt output2.txt
在您的问题中,写入/proc/sys/kernel/randomize_va_space
需要超级用户权限,而echo
-ing则0
不需要。因此,解决方案是:
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space >/dev/null
最后的重定向/dev/null
阻止0
打印到屏幕上。
答案3
只sudo
适用于您的 echo 命令(而不是管道之后)。
你可以试试:
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space