Почему перенаправление stdout sudo echo в файл не дает права root?

Я довольно плохо знаком с Linux, и я пытаюсь узнать больше о владении файлами и разрешениях. Одна вещь, на которую я наткнулся только что, была именно то, что написано в заголовке:

weee@my-server:~$ sudo echo "hello" > some-file.txt
weee@my-server:~$ ls -lh
total 4.0K
-rw-rw-r-- 1 weee weee 6 Dec  5 21:21 some-file.txt

Файл принадлежит мне, тогда как touch работает как можно было ожидать:

weee@my-server:~$ sudo touch other-file.txt
weee@my-server:~$ ls -lh
total 4.0K
-rw-r--r-- 1 root    root    0 Dec  5 21:22 other-file.txt

Как я могу заставить файл быть создан root? Должен ли я просто создать файл в моем домашнем каталоге, затем sudo chown root... а также sudo mv ... переместить его в /var где мне это нужно быть? Я надеялся, что будет один шаг для достижения этой цели.

2 ответа

Решение

Команда:

sudo [some command] > [some file]

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

sudo bash -c "[some command] > [some file]"

Если вам нужно, чтобы владелец файла был root, вы также можете переключить пользователей в root. (Если возможно и уместно):

su root
Другие вопросы по тегам