Выбор ответа Junior Потоки и пайпы обновлено

Почему sudo echo > файл не работает

Вопрос

Команда sudo echo "vm.swappiness=10" > /etc/sysctl.d/90-swap.conf падает с Permission denied. Почему?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Перенаправление делает текущий shell без root, sudo получает только echo. Shell обрабатывает до запуска команды и открывает файл со своими правами.

Варианты ответа

  1. echo встроен в shell, и sudo не может запустить его от root
  2. Нужно сначала выполнить sudo -i: без входа в сессию root sudo не пишет в файлы
  3. Перенаправление делает текущий shell без root, sudo получает только echoправильный ответ
  4. Каталог /etc/sysctl.d защищён атрибутом immutable от записи

Разбор

Shell обрабатывает > до запуска команды и открывает файл со своими правами. Под sudo запускается только echo. Правильно: echo ... | sudo tee /etc/sysctl.d/90-swap.conf или sudo sh -c 'echo ... > file'. echo через sudo запускать можно, атрибут immutable тут ни при чём.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме