有没有办法将kptr_restrict设置为0?

时间:2013-12-05 03:02:45

标签: linux linux-kernel perf

我目前无法运行linux perf,主要是因为/proc/sys/kernel/kptr_restrict目前设置为1。

但是,如果我通过回复0来尝试/proc/sys/kernel/kptr_restrict,如下所示......

echo 0 > /proc/sys/kernel/kptr_restrict

我收到了拒绝权限错误。我认为我也不能更改它的权限。

有没有办法直接设置这个?我是超级用户。我不认为如果没有设置,perf就会起到可接受的作用。

2 个答案:

答案 0 :(得分:20)

在您的示例中,echo以root身份运行,但您的shell正在以您的身份运行。

所以请尝试这个命令:

sudo sh -c " echo 0 > /proc/sys/kernel/kptr_restrict"

答案 1 :(得分:16)

位于/proc/sys的所有文件只能由root修改(实际上是99.9%的文件,请与ls -l一起检查)。因此,您必须使用sudo来修改这些文件(或以root身份执行命令的首选方式)。

修改/proc/sys中文件的正确方法是使用sysctl工具。请注意,yu应该用点(/)替换斜杠(.)并省略/proc/sys/前缀...阅读精细手册。

阅读当前值:

$ sysctl kernel.kptr_restrict 
kernel.kptr_restrict = 1

修改值:

$ sudo sysctl -w kernel.kptr_restrict=0
sysctl kernel.kptr_restrict=1

要使您的修改重新启动,您应该编辑/etc/sysctl.conf或在/etc/sysctl.d/50-mytest.conf中创建文件(以root身份或使用sudoedit编辑文件),其中包含:

kernel.kptr_restrict=1

在这种情况下,您应该执行此命令来重新加载配置:

$ sysctl -p /etc/sysctl.conf

P.S。可以直接写入虚拟文件。 https://stackoverflow.com/users/321730/cdyson37命令非常优雅:echo 0 | sudo tee /proc/sys/kernel/kptr_restrict