Question

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.

Was it helpful?

Solution

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"

OTHER TIPS

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top