SELinux, cgi: отказано в разрешении на ошибку при попытке выполнить zxJDBC.connect - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь подключиться к базе данных 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 добьется цели, но это не так.Ценю любую помощь, предложения или обходные пути.

1 Ответ

0 голосов
/ 29 января 2019

Через некоторое время проб и ошибок я могу подключиться к sqlite.

Я обновил только каталог / web / MySITE / misc / tmp, чтобы иметь контекст файла selinux httpd_tmp_t и все подкаталогии файлы под ним должны быть httpd_sys_script_exec_t.

...