Por que o redirecionamento do stdout “sudo echo” para um arquivo não fornece a propriedade root?

0

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.

    
por orokusaki 06.12.2012 / 03:24

2 respostas

3

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]"
    
por 06.12.2012 / 03:39
0

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
    
por 06.12.2012 / 04:32