Как добавить в файл как sudo?

Возможный дубликат:
Sudo невозможно записать в / etc / profile

Я хочу делать:

echo "something" >> /etc/config_file

Но, поскольку только пользователь root имеет право на запись в этот файл, я не могу этого сделать. Но следующее также не работает.

 sudo echo "something" >> /etc/config_file 

Есть ли способ добавить к файлу в этой ситуации, не открывая его сначала с помощью редактора sudo 'd, а затем добавляя новый контент вручную?

  • Как написать скрипт для sudo последней команды
  • Sudo запрашивает пароль по ssh
  • Добавление строки в файл hosts, получение разрешения отклонено при использовании sudo - Mac
  • Как WinSCP может предоставить пользователю sudo для выполнения scp?
  • Потерянное разрешение на использование команд sudo
  • Запустить rsync с правами root на удаленной машине
  • Как запретить пользователям sudo запускать определенные команды?
  • Почему sudo curl игнорирует настройки прокси-сервера?
  • 8 Solutions collect form web for “Как добавить в файл как sudo?”

    Правильный инструмент для правильной задачи: ' tee '

     tee - read from standard input and write to standard output and files 

    Таким образом, ваша

     % echo "output" | sudo tee -a file 

    Преимущество tee над выполнением Bash с административными разрешениями:

    • Вы не выполняете Bash с правами администратора
    • Только часть «писать в файл» работает с расширенными разрешениями
    • Цитирование сложной команды намного проще

    Перенаправление выполняется в текущей оболочке. Чтобы выполнить перенаправление с повышенными привилегиями, вы должны запустить оболочку с повышенными привилегиями:

     sudo bash -c "somecommand >> somefile" 

    Попросите sudo создать суб-оболочку:

     sudo sh -c "echo 'JAVA_HOME=/usr/lib/jvm/java-6-sun' >> /etc/profile" 

    В этом примере sudo запускает «sh», а остальные – в качестве аргументов.

    (Это показано в качестве примера на странице sudo man)

    Там может быть проблема с sudo здесь и перенаправление. Вместо этого используйте текстовый редактор, чтобы добавить строку.

     sudo nano /etc/profile 

    Или, вы могли бы попробовать su вместо

     su echo 'JAVA_HOME=/usr/lib/jvm/java-6-sun' >> /etc/profile exit 

    На мой взгляд, лучшим в этом случае является dd:

     sudo dd of=/etc/profile <<< END JAVA_HOME=/usr/lib/jvm/java-6-sun END 

    Я обычно использую shell HERE document с sudo tee -a . Что-то вроде:

     sudo tee -a /etc/profile.d/java.sh << 'EOF' # configures JAVA JAVA_HOME=/usr/lib/jvm/java-8-oracle export JAVA_HOME export PATH=$PATH:$JAVA_HOME/bin EOF 

    Это не сработает, вы пытаетесь перенаправить (используя >> ) вывод sudo. То, что вы действительно хотите сделать, – перенаправить вывод echo . Я предлагаю вам просто использовать ваш любимый редактор и добавить эту строку вручную в /etc/profile . Это дает дополнительное преимущество, которое вы можете проверить, уже установлен ли /etc/profile JAVA_HOME .

    Использовать ex -way:

     sudo ex +'$put =\"FOO\"' -cwq /etc/profile 

    И замените FOO на вашу переменную для добавления.

    В некоторых системах (например, OS X) файл /etc/profile имеет 444 разрешения, поэтому, если вы все еще получаете отказ в доступе, сначала проверьте и исправьте разрешение:

     sudo chmod 644 /etc/profile 

    Затем повторите попытку.

    Interesting Posts

    Установка чувствительности мыши на устройство в Windows 7?

    Преобразование веб-страниц в один файл для ebook

    Ограничение списка удаленных IP-адресов брандмауэра Windows Firewall

    Как заставить Windows 10 видеть сеть как приватную?

    RAMDISK OS? Установка Windows 10 на ramdisk

    Слияние / синхронизация двух установок Thunderbird

    Firefox NoScript: как заблокировать только один конкретный домен?

    Преобразование DisplayPort и / или HDMI в DVI-D?

    Как создать пользовательские сочетания клавиш в vim?

    Можете ли вы совместно использовать принтер LAN из домашней группы Windows 7 в домен Windows Vista?

    Как выполнить сетевой петлевой тест с использованием TTCP или IPERF?

    Журнал всех приложений, которые запускаются или запускаются вручную на ПК с временем начала и окончания

    Сделать команды OS X Terminal I type BOLD

    Привод DVD-RW не будет читать DVD-диски

    Как монтировать удаленный SSHFS через промежуточную машину? Туннелирование?

    Давайте будем гением компьютера.