5

Я хочу отключить ASLR на своем ПК. Но каждый раз, когда я набираю «sudo echo 0> /proc /sys /kernel /randomize_va_space», система показывает "Отказано в доступе". Как я могу заставить это работать? Кстати, ядро моей ОС - 2.6.30.

Надеюсь, кто-нибудь может мне помочь.

С уважением.

3 ответа3

11

Это распространенная проблема с перенаправлением sudo и shell. "Судонство" не распространяется за пределы перенаправления. Один из способов обойти это

sudo bash -c "echo 0 > /path/to/file"
11

В вашей команде перенаправление ввода / вывода > обрабатывается текущей оболочкой. Команда рассматривается интерпретатором как 3 части:

  1. sudo echo 0
  2. >
  3. /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 на экране.

3

sudo работает только для вашей команды echo (не после pipe).

Ты можешь попробовать:

echo 0 | sudo tee /proc/sys/kernel/randomize_va_space

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .