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"
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.
La 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"
Autres conseils
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