Você está experimentando um aspecto do problema discutido sudo incapaz de escrever para /etc/profile e Como anexar um arquivo como sudo? ,
e a questão discutida em Quem lida com o * em echo *?
Sua casca primária interpreta cada comando que você digita
incluindo caracteres curinga (também conhecidos como globs ou padrões de nome de arquivo). Se você digitar
some_command *
o shell enumera os arquivos no diretório atual
e passa-os ao comando; por exemplo.,
some_command preto azul marrom verde laranja vermelho branco amarelo
Bem, se você não tem permissão para ler /var/lib/postgresql/9.4/pg_log,
então sua concha
não tem permissão para enumerar /var/lib/postgresql/9.4/pg_log/*.
O fato de que, quando o comando corre , funciona como rooté muito pouco
tarde demais - a expansão do nome do caminho (ou seja, interpretação de curinga) é feita até lá.
Você pode consertar isso com um truque discutido nas duas primeiras perguntas que referi:
sudo sh -c "ls /var/lib/postgresql/9.4/pg_log/*"
Isso executa um shell privilegiado. O shell privilegiado pode expandir o *.
*entre aspas duplas (sudo ls "/path/to/dir/*") atrasar a expansão para o tempo apropriado?