Разрешение JDBC отрицает Spring и Tomcat [дубликат]

Я думаю, что когда вы определяете String, вы определяете объект. Поэтому вам нужно использовать .equals(). Когда вы используете примитивные типы данных, вы используете ==, но с String (и любым объектом) вы должны использовать .equals().

1
задан Yoshi67 11 October 2017 в 13:30
поделиться

1 ответ

Я просто отслеживал эту проблему. Мои симптомы были такими же, как у вас, и я даже пробовал то, что вы пробовали. В итоге моя проблема возникла только потому, что я использовал tomcat для centos с SELinux.

Некоторые люди помогли мне диагностировать, используя следующие команды, чтобы посмотреть события безопасности и почему некоторые действия не были разрешены:

sudo ausearch -m avc
sudo grep "tcp_socket" /var/log/audit/audit.log | audit2why // translates log into some human readable reasons why the audit record was generated

Я видел записи вроде:

type = AVC msg = audit (1507861264.561: 64750): avc: denied {name_connect} для pid = 1326 comm = "java" dest = 3306 scontext = system_u: system_r: tomcat_t: s0 tcontext = system_u: object_r: mysqld_port_t: s0 tclass = tcp_socket

Был вызван: правило разрешения запрещенного типа (TE).

Вы можете используйте audit2allow для создания загружаемого модуля, чтобы разрешить этот доступ.

И затем нашел эту статью о tomcat и SELinux https://noobient.com/post/165972214381/selinux-woes -with-tomcat-on-centos-74

Вы можете запустить следующую команду, чтобы проверить, работает ли tomcat в контексте безопасности tomcat_t.

$ps auxZ | grep tomcat

Для цели по-настоящему определить, была ли моя ошибка SELinux, я отключил SELinux

$ sestatus // shows: SELinux status:                 enabled
$ sudo vim /etc/selinux/config // set "SELINUX=disabled"
$ sudo shutdown -r now
$ sestatus // shows: SELinux status:                 disabled

перезапустил мою машину и увидел, что tomcat теперь делает исходящее соединение.

Отлично, теперь я, по крайней мере, знаю, ПОЧЕМУ, что это происходит. Конечно, если вам нужен SELinux, отключить его НЕ является решением. Другим обходным решением, которое, вероятно, не является решением, является установка tomcat без прохождения yum. Yum установит tomcat, используя контекст безопасности.

Я думаю, что теперь мы должны изменить контекст безопасности или набор правил, управляющих tomcat, чтобы он мог выполнять исходящие соединения.

3
ответ дан jbu 15 August 2018 в 23:53
поделиться
  • 1
    Спасибо, jbu! Это сработало идеально для меня. Такое облегчение после того, как вы так долго застряли ... Я отключил SELinux, как вы предложили, и теперь SQL работает нормально. Теперь, я начну копать в конфигурации SELinux, чтобы увидеть, как я могу подключиться, не отключая его полностью. Если у вас есть еще какие-либо советы или найти что-то связанное - пожалуйста, поделитесь дополнительными шагами. – Yoshi67 16 October 2017 в 07:24
  • 2
    вы могли бы помочь мне и пометить мой ответ как правильный – jbu 16 October 2017 в 08:49
  • 3
    прошу прощения - я просто сделал ... – Yoshi67 16 October 2017 в 10:44
  • 4
    Ошибка теперь полностью решена без необходимости отключения SELinux. Чтобы добавить tomcat в политику, используйте следующие две команды: `ausearch -c 'java' -raw | audit2allow -M my-java semodule -i my-java.pp `@jbu – Yoshi67 17 October 2017 в 07:01
  • 5
Другие вопросы по тегам:

Похожие вопросы: