O comando tee , quando passou um arquivo não existente como parâmetro, criará esse arquivo antes de gravar a saída nele. Ao prefixar esse comando com sudo , você está pedindo ao shell para executar o comando tee como root . A consequência é que o arquivo criado por tee é de propriedade do usuário que está iniciando o comando: root e, portanto, é somente leitura para outros usuários. Você mesmo poderá ver isso se executar ls -l e examinar as colunas user e group .
$ 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
Existem várias opções para superar isso:
-
Crie o arquivo como um usuário padrão antes de solicitar que
teegrave nele.teetruncará ou simplesmente--append, sem alterar a propriedade:$ touch writeProtectedFile # creates the file as standard user $ echo $text | sudo tee writeProtectedFile $ rm writeProtectedFile -
Altere a propriedade do arquivo antes de tentar excluí-lo:
$ echo $text | sudo tee writeProtectedFile $ sudo chown $(whoami) writeProtectedFile # 'whoami' returns the current user name $ rm writeProtectedFile -
Diga a
rmpara ignorar o fato de que o arquivo está protegido contra gravação, usando-f, --force:$ echo $text | sudo tee writeProtectedFile $ rm --force writeProtectedFile