Подтвердить что ты не робот

Разрешение отклонено при попытке добавить файл в файл root с sudo

Это команда оболочки, в результате которой "Permission denied", когда я пытаюсь добавить данные в файл в другой файл с помощью sudo:

sudo cat add_file >> /etc/file

Файл в /etc/file принадлежит root (то есть me), а его разрешения rw-r--r--. Должен ли я стать root на какое-то время, чтобы заставить его работать или есть обходное решение для sudo?

4b9b3361

Ответ 1

Запустите bash как sudo:

$ sudo bash -c "cat add_file >> /etc/file"

$ whoami;sudo bash -c "whoami";whoami
iiSeymour
root
iiSeymour

Ответ 2

Попробуйте сделать это вместо:

sudo tee -a /etc/file < add_file

Это легче, чем запуск bash или sh -c command

Ответ 3

Смешной вариант - использовать ed (стандартный редактор):

sudo ed -s /etc/file <<< $'r add_file\nwq'

Я знаю, что мне не понравится этот замечательный ответ, но я хотел включить его здесь в любом случае (потому что это смешно). Готово!

Ответ 4

Вы пытаетесь записать результат команды sudo cat add_file в файл /etc/file. И, видимо, у вас нет такого права.

man sudo дает следующий пример:

   To make a usage listing of the directories in the /home partition.  Note
   that this runs the commands in a sub-shell to make the cd and file
   redirection work.

    $ sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"

Итак, вы должны попробовать:

sudo sh -c "cat add_file >> /etc/file"

Ответ 5

Аналогичный подход к @gniourf_gniourf отвечает, но используя ex:

sudo ex +"r in.txt" -cwq out.txt

что эквивалентно vi/vim Ex-mode (-e).

Этот пример редактирования на месте - это простой, безопасный и удобный подход, поскольку он не использует никаких оболочек оболочки, FIFO или оболочки внутри обходных решений оболочки.

Чтобы повысить производительность для сценариев, рассмотрите режим молчания (-s).

Ответ 6

попробуйте

sudo bash -c 'cat add_file >> /etc/file'

или

cat add_file | sudo tee -a /etc/file > /dev/null