O comando:
sudo [some command] > [some file]
simplesmente executa o comando como root
, mas redireciona a saída como o usuário atual. Para conseguir o que você está procurando, tente:
sudo bash -c "[some command] > [some file]"
Sou muito novo no uso intenso do Linux e estou tentando aprender mais sobre propriedade e permissões de arquivos. Uma coisa que eu tropecei agora foi exatamente o que o título diz, correndo:
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
O arquivo é de minha propriedade, enquanto touch
funciona como se esperaria:
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
Como posso forçar o arquivo a ser criado pelo root? Eu simplesmente tenho que criar o arquivo no meu homedir, então sudo chown root...
e sudo mv ...
movê-lo para /var
onde eu preciso que ele seja? Eu estava esperando que houvesse um único passo para conseguir isso.
Se você precisar que a propriedade de um arquivo seja raiz, também poderá alternar usuários para raiz. (Se possível e apropriado):
su root