У вашій команді переадресація вводу / виводу >обробляється поточною оболонкою. Перекладач розглядає команду як 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суперпользователя, а в той час - 0немає. Отже, рішення таке:
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space >/dev/null
Остаточне перенаправлення, щоб /dev/nullзапобігти 0друку на екран.