В вашей команде перенаправление ввода / вывода > обрабатывается текущей оболочкой. Команда рассматривается интерпретатором как 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 на экране.