Вы столкнулись с проблемой, обсуждаемой в sudo не можете записать в /etc/profile и как добавить файл в sudo? и вопрос, обсуждаемый в разделе Кто имеет дело с * в echo *?
Ваша основная оболочка интерпретирует каждую вводимую вами команду, включая подстановочные знаки (также известные как глобусы или шаблоны имен файлов). Если вы печатаете
some_command *
оболочка перечисляет файлы в текущем каталоге и передает их команде; например,
some_command black blue brown green orange red white yellow
Что ж, если у вас нет разрешения на чтение /var/lib/postgresql/9.4/pg_log , то ваша оболочка не имеет разрешения перечислять /var/lib/postgresql/9.4/pg_log/* .
Тот факт, что когда команда запускается , она запускается с root , это слишком мало, слишком поздно - к этому времени происходит расширение пути (т. Е. Интерпретация с подстановочными знаками).
Вы можете исправить это с помощью хитрости, обсуждавшейся в первых двух вопросах, на которые я ссылался:
sudo sh -c "ls /var/lib/postgresql/9.4/pg_log/*"
Это запускает привилегированную оболочку. Привилегированная оболочка может затем расширить * .