Можно ли читать / записывать / удалять файлы ОС с помощью plpgsql? - PullRequest
0 голосов
/ 02 апреля 2019

Можно ли читать, записывать, удалять файлы ОС с помощью PL / pgSQL?

Можно ли запускать команды ОС?

Я видел несколько примеров того, как вы можете копировать файлы, например CSV.но вы можете читать / писать / удалять файлы ОС?Вы можете выполнять команды ОС?

Ответы [ 2 ]

3 голосов
/ 02 апреля 2019

Нет, это невозможно.

PL / pgSQL является доверенным языком и поэтому не разрешает доступ к ресурсам сервера, не говоря уже о выполнении команд ОС.

Объяснение «доверенного языка»

Необязательное ключевое слово TRUSTED указывает, что язык не предоставляет доступ к данным, которые в противном случае пользователь не имел бы.Доверенные языки предназначены для обычных пользователей баз данных (без привилегий суперпользователя) и позволяют им безопасно создавать функции и процедуры.Так как функции PL выполняются на сервере базы данных, флаг TRUSTED следует указывать только для языков, которые не разрешают доступ к внутренним компонентам сервера базы данных или к файловой системе


Некоторые из них Доступны функции SQL , позволяющие ролям с привилегиями суперпользователя читать файлы на сервере - но это не зависит от PL / pgSQL.

Если вы действительно хотите открыть свою базу данныхсервер для всех видов атак, используйте ненадежный язык, например PL / Python или если вы действительно любите приключения PL / sh

1 голос
/ 02 апреля 2019

PostgreSQL имеет несколько функций для чтения файлов в каталоге данных: pg_read_file и pg_read_binary_file

& ldquo; adminpack & rdquo; Расширение имеет функцию для записи файлов: pg_file_write

Возможно, вы можете использовать COPY ... TO PROGRAM для запуска кода на сервере.

Но разумно было бы написать функцию на PL / PerlU или PL / Python.

...