В вашей команде перенаправление ввода / вывода >
обрабатывается текущей оболочкой. Команда рассматривается интерпретатором как 3 части:
sudo echo 0
>
/proc/sys/kernel/randomize_va_space
echo
выполняется с использованием привилегии суперпользователя, в то время как текущая оболочка (с привилегиями обычного пользователя) пытается записать в /proc/sys/kernel/randomize_va_space
и, таким образом, вызывает ошибку «Отказ в Permission denied
.
Есть несколько способов преодолеть это. Первый способ - запустить оболочку с привилегиями суперпользователя и передать команду в оболочку с помощью ключа -c
:
sudo sh -c "echo 0 > /proc/sys/kernel/randomize_va_space"
(Вы можете использовать sh
для оболочки POSIX и bash
для Bash)
Другой способ - использовать команду tee
. Команда tee
копирует содержимое из стандартного ввода в стандартный вывод (обычно означает "экран"), а также перечисленные файлы. Поэтому следующая команда выводит символ A
на стандартный вывод, а также файлы output1.txt
и output2.txt
.
echo A | tee output1.txt output2.txt
В вашей проблеме запись в /proc/sys/kernel/randomize_va_space
требует привилегии суперпользователя, а echo
-ing 0
- нет. Итак, решение:
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space >/dev/null
Окончательное перенаправление на /dev/null
предотвращает печать 0
на экране.