Команда tee
при передаче несуществующего файла как параметр, создаст этот файл перед записью в него вывода. Добавляя к этой команде sudo
, вы просите оболочку запустить команду tee
от имени root
. Вследствие этого файл, созданный tee
, принадлежит пользователю, запускающему команду: root
, и, следовательно, доступен только для чтения для других пользователей. Вы можете убедиться в этом сами, запустив ls -l
и посмотрев на столбцы пользователь
и группа
.
$ rm -f writeProtectedFile # Removing the file in case it already exists
$ echo $text | sudo tee writeProtectedFile
yourtext
$ ls -l
total 4
-rw-r--r-- 1 root root 9 22.07.2015 14:26 writeProtectedFile
Есть несколько способов преодолеть это:
Создайте файл от имени обычного пользователя, прежде чем запрашивать tee
записать в него. tee
затем либо усечет, либо просто - добавит к нему
, не меняя владельца:
$ touch writeProtectedFile # создает файл как стандартный пользователь
$ echo $ текст | sudo tee writeProtectedFile
$ rm writeProtectedFile
Измените владельца файла перед попыткой его удаления:
$ echo $ text | sudo tee writeProtectedFile
$ sudo chown $ (whoami) writeProtectedFile # `whoami` возвращает текущее имя пользователя
$ rm writeProtectedFile
Сообщите rm
пользователю игнорируйте тот факт, что файл защищен от записи, используя -f, --force
:
$ echo $ text | sudo tee writeProtectedFile
$ rm --force writeProtectedFile