Я пытаюсь подключиться к базе данных sqlite из сценария jython, импортировав zxJDBC.Я использую sqlite-jdbc-3.20.1.jar, и он загружается jython во время выполнения.Я также вызываю jython-скрипт из cgi-bin.
Сценарий прекрасно работает, когда он запускается из терминала, но я получаю разрешение от браузера.Сценарий завершается неудачно, когда он пытается подключиться к БД по этой строке: connection = zxJDBC.connect( JDBC_URL, None, None, JDBC_DRIVER )
[cgi:error] [pid 53697]: java.lang.UnsatisfiedLinkError: /tmp/sqlite-3.20.1-cdbdb7f2-9803-4110-888f-e6696ae53e40-libsqlitejdbc.so: /tmp/sqlite-3.20.1-cdbdb7f2-9803-4110-888f-e6696ae53e40-libsqlitejdbc.so: failed to map segment from shared object: Permission denied
Я попытался переместить файл / tmp, перенаправив каталог jython / java tmp с помощью -Djava.io.tmpdir=/web/MySITE/misc/tmp
и выдалЭто 777 разрешение только для тестирования, но получил ту же ошибку, но на этот раз разрешение не разрешено для файла .lck.
[cgi:error] [pid 53695]: /web/MySITE/misc/tmp/sqlite-3.20.1-3509ec54-5576-4e50-9d35-b4ffb15b94a6-libsqlitejdbc.so.lck (Permission denied)
Я видел этот пост Сбой PHP exec Java cmd с отказом в разрешении режим SELinux установлен на принудительное.Я попробовал и выполнил следующие команды.
setsebool -P httpd_tmp_exec 1
setsebool -P httpd_execmem 1
setsebool -P httpd_enable_cgi 1 0
Мне все еще отказывали в разрешении на файл .lck из sqlite.Затем я изменил режим SELinux на разрешающий, и он сработал.
Проблема в том, что сервер работает в облачной службе Azure, и наши сотрудники по безопасности хотят, чтобы SELinux применялся принудительно, в противном случае у меня будет нарушение STIG.Я не эксперт по SELinux.Мой вопрос: что нужно включить или отключить, когда SELinux принудительно применяется, чтобы двоичные файлы tmp из файлов jar выполнялись httpd?Я думал, что это httpd_tmp_exec
добьется цели, но это не так.Ценю любую помощь, предложения или обходные пути.