Is there a way to set kptr_restrict to 0?

☆樱花仙子☆ 提交于 2019-12-04 09:08:38

问题


I am currently having trouble running linux perf, mostly because /proc/sys/kernel/kptr_restrict is currently set to 1.

However, if I try to /proc/sys/kernel/kptr_restrict by echoing 0 to it as follows...

echo 0 > /proc/sys/kernel/kptr_restrict

I get a permission denied error. I don't think I can change permissions on it either.

Is there a way to set this directly somehow? I am super user. I don't think perf will function acceptably without this being set.


回答1:


In your example, echo is running as root, but your shell is running as you.

So please try this command:

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



回答2:


All the files located in /proc/sys can only be modified by root (actually 99.9% files, check with ls -l). Therefore you have to use sudo to modify those files (or your preferred way to execute commands as root).

The proper way to modify the files in /proc/sys is to use the sysctl tool. Note that yu should replace the slashes (/) with dots (.) and omit the /proc/sys/ prefix... read the fine manual.

Read the current value:

$ sysctl kernel.kptr_restrict 
kernel.kptr_restrict = 1

Modify the value:

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

To make your modifications reboot persistent, you should edit /etc/sysctl.conf or create a file in /etc/sysctl.d/50-mytest.conf (edit the file as root or using sudoedit), containing:

kernel.kptr_restrict=1

In which case you should execute this command to reload your configuration:

$ sysctl -p /etc/sysctl.conf

P.S. it is possible to directly write in the virtual file. https://stackoverflow.com/users/321730/cdyson37 command is quite elegant: echo 0 | sudo tee /proc/sys/kernel/kptr_restrict



来源:https://stackoverflow.com/questions/20390601/is-there-a-way-to-set-kptr-restrict-to-0

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!