1

Можно использовать sudo для выполнения одной команды с привилегиями суперпользователя:

sudo echo "hi"

Но когда я использую каналы с командой:

sudo echo "hi" > /a.txt

Привилегия суперпользователя не распространяется на часть канала (> /a.txt), и я получаю ошибку для отказа в разрешении:

bash: /a.txt: в доступе отказано

Мой вопрос:

Существует ли синтаксис, в котором я могу расширить область действия sudo выше, для работы с частью конвейера?

1 ответ1

6

Запустите команду в оболочке с повышенными правами root, и перенаправление ввода-вывода также будет выполнено с правами root:

sudo bash -c 'echo "hi" > /a.txt'

Если вы не хотите создавать подоболочку для этого, вот обходной путь с tee:

echo "hi" | sudo tee /a.txt > /dev/null

Дополнительные ресурсы:

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