Bash "Permissão negada" problema ao tentar anexar a EOF

4

Ao tentar empurrar algumas linhas para o final de um arquivo, recebo um problema de permissão. Eu entendo porque estou recebendo o erro, mas não consigo pensar em uma maneira de resolvê-lo. Qualquer ajuda seria apreciada.

sudo cat > /etc/php5/apache2/php.ini << EOF
    # extensions
    extension=”memcached.so”
    extension=”apc.so”
EOF
    
por onassar 26.09.2011 / 19:57

3 respostas

10

O uso do Heredoc, ou "acrescentar ao EOF", não é o problema.

Todos os redirecionamentos (incluindo > ) são aplicados antes de executar o comando atual. Em outras palavras, seu shell primeiro tenta abrir /etc/php5/apache2/php.ini para escrever usando sua conta e executando um sudo cat completamente inútil.

Uma maneira de contornar isso:

sudo bash -c "cat >> /etc/php5/apache2/php.ini" <<EOF

(Você pode executar um shell interativo via sudo -s ou usar dd ou tee para gravar no arquivo.)

Em uma nota relacionada, usar > substituirá o arquivo php.ini antigo. Use >> para acrescentar.

    
por 26.09.2011 / 20:13
0

sudo su e, em seguida, você tem um shell adequado como root . Execute o comando lá, sem sudo prefixo. Depois, exit para retornar do shell raiz.

    
por 26.09.2011 / 20:00
0

Para expandir a resposta por @grawity, mostrando como usar o tee:

sudo tee /etc/php5/apache2/php.ini >/dev/null <<EOF
    # extensions
    extension=”memcached.so”
    extension=”apc.so”
EOF

ou use a opção "-a" do tee para anexar em vez de sobrescrever.

    
por 13.02.2017 / 13:29