Tenha acesso root, ainda permissão negada ao usar o comando cat

Tenha acesso root, ainda permissão negada ao usar o comando cat

Eu estava tentando instalar o certificado SSL (GoDaddy), seguindo as instruções para nginx no Centos. O zip que baixei do GoDaddy contém 3 arquivos – um certificado primário, um certificado intermediário e um arquivo PEM.
Eu tenho acesso root para meu Ubuntu VPS.

Mas quando eu uso

sudo cat f84e19a2f44c6386.crt gd_bundle-g2-g1.crt >> coolexample.crt

eu recebo

bash: coolexample.crt: Permission denied.  

Responder1

Quando sudo cat afor executado, arquiveao conteúdo do foi lido e impresso no stdout com sudoprivilégios. O redirecionamento do texto foi feito pelo shell e seria anexado ao arquivob(desde que >>foi usado). Neste caso específico, parece que o arquivo não tinha permissão para ser modificado por não-superusuários.

Embora executar o shell como root usando sudo suou sudo -ipareça sudo -sser uma boa ideia para superar essa limitação,masnão é sugerido. Pode acontecer que o shell esteja rodando com sudoprivilégios e, sem saber, sem sair do shell root, algum outro comando seja usado. E se esse comando for digitado incorretamente, pode causar sérios danos ao sistema.

Nesses casos, cata saída do pode ser canalizada eteepode ser usado. É um utilitário que lê a entrada de entrada e saída padrão para arquivo e saída padrão. Como você deseja anexar o arquivo, -aa opção pode ser usada. Portanto, o comando ficará assim:

sudo cat f84e19a2f44c6386.crt gd_bundle-g2-g1.crt | sudo tee -a coolexample.crt

Eu presumi quef84e19a2f44c6386.crtegd_bundle-g2-g1.crtnão tinha permissão para ser lido por usuários normais.

Responder2

Tente fazer login como superusuário com

sudo -s

e tente seu comando novamente sem sudo no início.

A razão pela qual não funciona é porque o redirecionamento é feito pelo shell e não pelo gato. Veja esta resposta para mais informações:https://askubuntu.com/a/230482

informação relacionada