Redirecionando saída de comando para arquivo com sudo
Todos sabem que não é nem um pouco aconselhável utilizar a conta do super-usuário (root) para suas atividades cotidianas, sendo assim ativei sudo para minha conta de usuário comum e sempre que preciso executar algum comando com permissão especial utilizo-o ao invés do su (login como root).
Pois bem, algo que me atormentava era, ao tentar redirecionar a saída de um comando para dentro de um arquivo onde somente o root pode escrever, receber mensagem de permissão de escrita negada.
Vamos tomar como exemplo prático a tentativa de escrita no arquivo /etc/resolv.conf, onde armazena-se a lista dos servidores DNS que a máquina local deverá consultar para resolver nomes.
O problema ocorre porque a permissão de super-usuário é concebida somente para o comando echo, o redirecionamento da saída do comando gera um novo processo, que é criado sob o bash atual, que tem como dono o usuário comum que executou o sudo, e este não possui as devidas permissões de escrita sobre o arquivo.
Para resolver o problema basta invocar um bash-root e executar o comando por completo dentro dele:
[2] Comentário enviado por fabio em 03/01/2009 - 19:00h
Hmm, ótima adição don't believe! Essa é uma das maravilhas do Linux, você pode juntar o conhecimento para criar uma variedade enorme de soluções para cada tipo de problema. Nunca havia imaginado usar o tee para fazer isso.
[3] Comentário enviado por volcom em 25/08/2009 - 12:45h
Em um script que montei gostaria de direcionar a saída o echo para dois locais diferentes: LOG e Terminal que vou rodar o script para acompanhar o andamento, por exemplo:
Tenho a seguinte linha no me script:
echo "Desabilitando o Firewall..." >> $RSYNC_LOG
Quando executo o script, não aparece no terminal, mas é enviado para o arquivo de log.