. Я установил некоторые из моих основных приложений aspnet в Linux до использования CentOS8. На этот раз я использовал CentOS8-Stream. Я не знаю, способствует ли это решению проблемы.
Факты:
Я не смог заставить Apache использовать сертификаты. Все было так, как я делал раньше, и все же это не сработало. В конце концов я нашел в Интернете непонятную ссылку, которая использовала ls -lrtZ /etc/pki/tls/certs
для отображения security context
(. Я даже не знал, что она существует). Итак, я просто cp
файлы сертификатов, и с Apache теперь все в порядке.
Однако мое приложение aspnet не работает с attempt to write a readonly database
. Я пробовал cp
трюк, но не помогает. Также не появляются журналы приложений
Файл базы данных:
-rw-rw-rw-. 1 root root unconfined_u:object_r:httpd_sys_content_t:s0
Я не понимаю, как это security context
может переопределить обычный chmod -как разрешения?? И что делать, чтобы исправить? Я имею в виду, как более явное разрешение может быть rwrwrw?
Это что-то новое feature
в SELinux? Могу ли я отключить его полностью?
Примечание:1 и 2 не связаны друг с другом -Я просто думаю, что они имеют одну и ту же основную причину, но ничего между ними. Если я обращаюсь к приложению aspnet напрямую без Apache -, у него та же ошибка
SELinux — это система управления доступом на основе ролей, которая может в мельчайших деталях контролировать, что разрешено делать процессу. Например, веб-сервер более безопасен, если он не может прочитать, скажем, /etc/shadow
даже в качестве пользователя root или запустить веб-оболочку. Контекст безопасности имеет основополагающее значение для этой системы и присутствует с самого начала.
Контекст файла SELinux отличается от разрешений UNIX или расширенных ACL. Все должны позволить; да, selinux может отказать, когда базовые права доступа к файлам означают, что они разрешены.
Прочтите руководство RHEL 8 Использование SELinux и вики-страницу CentOS по SELinux . Используйте инструменты устранения неполадок там, в частности, sealert -a /var/log/audit/audit.log
Просмотрите все отказы во время проблемы с вашим приложением. Проверьте, существуют ли какие-либо логические значения для переключения поведения, которое вы хотите.
Благодаря @John Mahowald я нашел правильный угол для рассмотрения проблемы.
Причина в том, что все мои предыдущие виртуальные машины использовали режим SELinux permissive
, а новая (GCP)работает в режиме enforcing
.
Так что, если вы наткнетесь на странные эффекты, которые вы не можете объяснить, -см. ссылки Джона. Но сначала используйте команду sestatus
, чтобы увидеть, какой режим установлен в вашем SELinux.
П.С. Я решил оставить его как разрешительный, поскольку принудительное выполнение просто нецелесообразно поддерживать. Я думаю, что весь этот SELinux — белый слон. Его необходимо заменить