Как использовать перенаправление с помощью sudo

Возможный дубликат:
Перенаправление stdout в файл, на который у вас нет разрешения на запись

Да, я мог (и, вероятно, будет) просто перерасти в корне, но я хотел бы знать, почему это не работает?

sudo cat .mplayer/config >> /home/griff/.mplayer/config zsh: permission denied: /home/griff/.mplayer/config 

sudo настроен на выполнение любой команды, я не налагал на нее никаких ограничений.

3 Solutions collect form web for “Как использовать перенаправление с помощью sudo”

Как уже было сказано msw раньше , это происходит потому, что >> происходит до фактического выполнения команды и не запускается с повышенными привилегиями sudo .

Альтернативный способ сделать это – обернуть всю команду в другую командную оболочку bash:

 sudo bash -c "cat .mplayer/config >> /home/griff/.mplayer/config" 

Это запустит новую оболочку bash с привилегиями sudo и закроет ее после выполнения команды.

Это не удается, потому что перенаправление >> всегда выполняется до выполнения команды независимо от команды.

В этом случае оболочка работает как вы (не root) и пытается добавить в файл .../config используя ваши текущие разрешения, а не root, и не удается до запуска sudo.

Общей метафорой для выполнения вашей команды является:

 sudo tee --append /home/griff/.mplayer/config < .mplayer/config 

(при условии, что у вас есть разрешение на чтение для .mplayer/config ). Поскольку /home/griff/... открывается tee в корневом контексте sudo, у него есть права root для записи этого файла.

Я не .mplayer/config этом подходе, так как он копирует содержимое .mplayer/config в стандартный вывод – вместе с добавлением его в файл griff, но он действительно работает.

От

sudo способен выполнять любую команду

вы имеете в виду, что концептуально sudo может быть настроен на выполнение любой команды или что вы настроили sudo на рассматриваемую систему, как, грубо говоря, <user> <host(s)>=<opt(s)> ALL ?

Вы пробовали sudo -u 0 cat ... ? Это заставит sudo выполнить команду как root, при условии, что ваш идентификатор пользователя разрешен.

Что делает sudo -l печать?

Interesting Posts

Как читать веб-камеру, которая уже используется фоном?

почему в Debian нет исторического журнала ваших обновлений, понижений и чистых пакетов?

Gentoo Linux portage USE flags: в чем разница между удалением по умолчанию и отсутствием значения по умолчанию, как сравнивать значения по умолчанию, no-multilib?

Кросс-компиляционный пакет, в котором используется кросс-скомпилированная библиотека

Уменьшение числа с помощью sed

Поиск файла в каталоге через скрипт bash

Функциональность Mac Command + Up arrow в терминалах Linux?

Могу ли я использовать команду find для передачи аргументов perl?

Дисковая утилита Red Hat работает только для root, no sudoer?

После обновления Chromium больше не видит никаких моих расширений

арифметические операции в столбце с awk или sed

Что такое приложение sfp для графического интерфейса по умолчанию в Debian?

Почему цитаты сохраняются в строковых переменных, когда они окружены одинарными кавычками?

Необходимо передавать URL-адреса в кавычках

Как получить sysfs devpath USB-накопителя с учетом соответствующего раздела sysfs path?

Linux и Unix - лучшая ОС в мире.