Вы столкнулись с проблемой, обсуждаемой в 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/*"
Это запускает привилегированную оболочку. Привилегированная оболочка может затем расширить *
.