我想在我自己的 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 部分:
sudo echo 0
>
/proc/sys/kernel/randomize_va_space
的echo
是使用超级用户权限,而电流壳(与正常用户权限)尝试写入执行/proc/sys/kernel/randomize_va_space
,并且因此触发一个Permission denied
错误。
有几种方法可以克服这个问题。第一种方法是使用超级用户权限运行 shell,并使用-c
switch将命令传递给 shell :
sudo sh -c "echo 0 > /proc/sys/kernel/randomize_va_space"
Run Code Online (Sandbox Code Playgroud)
(您可以sh
用于 POSIX shell 和bash
Bash)
另一种方法是使用tee
命令。该tee
命令将内容从标准输入复制到标准输出(通常表示“屏幕”)以及列出的文件。因此,以下命令将字符打印A
到标准输出以及文件output1.txt
和output2.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
打印到屏幕。