Как использовать перенаправление с помощью 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

Ошибки / исключения ACPI, почему они спам, как их узнать и исправить?

Как избежать / usr / bin / env помечается в журналах systemd как исполняемый файл

Выход lsblk не отсортирован

Как просмотреть последние 5 строк из последнего созданного / измененного файла?

доступ к Linux и окнам в одно и то же место размещения

Как определить, какие дисплеи включены / отключены

Рабочая станция Fedora 25 не по умолчанию не использует wayway, используя nouveau на карте nvidea с gnome

Установите разрешение по умолчанию для новых папок и файлов в Linux

Когда Linux отправляет корневую почту и как ее принудительно использовать для целей тестирования?

Сбросить менеджер пакетов emacs

Какой смысл добавлять новую строку в конец файла?

Заблокировать пакет для удаления в APT

Отключить пусковую установку Ubuntu и панели при использовании полного экрана vmware

Как установить, какой загрузчик GRUB использовать после двойной загрузки двух ОС Linux?

Как разбить RX и TX байты по процессу?

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