Questão Bash "Permissão negada" questão ao tentar acrescentar a EOF


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

4


origem


ls -al /etc/php5/apache2/php.ini, quais são as configurações de permissão do arquivo? - Jin


Respostas:


Heredoc, ou "anexando a EOF", é não o problema.

Todos os redirecionamentos (incluindo >) estamos aplicada antes executando o comando real. Em outras palavras, seu shell primeiro tenta abrir /etc/php5/apache2/php.ini para escrever usando sua conta, então executa um completamente inútil sudo cat.

Uma maneira de contornar isso:

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

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


Em uma nota relacionada, usando > vai sobrescrever o antigo php.ini. Usar >> para anexar.


10



Obrigado grawity. Estou tendo problemas para executar o acima para arquivos ocultos. Eu recebo esse tipo de resposta: cl.ly/3K2J3Q2N1h2I3N364301 - onassar
@ ionassar: Se você abrir o heredoc com "EOF", você deve fechá-lo exatamente com o mesmo"EOF". Não com ".EOF"como você está fazendo atualmente. - grawity
este é o código que estou colando: cl.ly/1w3s1p2J3U1I3C1j0q1O na verdade, está apenas sendo processado incorretamente pelo meu terminal. - onassar
parece que as abas do meu código (caractere \ t) estavam jogando fora. Substituir aqueles com 4 espaços fez o truque. THX! - onassar


sudo su e então você tem uma casca adequada como root. Execute o comando lá, sem sudo prefixo. Depois, exit para retornar do shell de raiz.


0





Para expandir a resposta por @grawity, mostrando como usar 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.


0