Реальное применение selinux [закрыто]

Стивен Харрис дал очень хороший ответ к предыдущей версии этого вопроса.  К сожалению Он не может справиться с патологическим случаем имен файлов с новыми строками в них.  Вот небольшая адаптация его ответа, которая касается этого случая.  (Я также изменил его, чтобы использовать cat -n вместо nl, и использовать параметр -y для diff.)

find folder1 -type f -exec bash -c 'for file1
do
  file2="${file1/folder1/folder2}"
  echo "Comparing $file1 to $file2"
  diff -y <(cat -n "$file1") <(cat -n "$file2")
done' bash {} +

Поскольку вы попросили xargs в комментарии к ответу Стивена, вот вам:

find folder1 -type f -print0 | xargs -0 bash -c 'for file1
do
  file2="${file1/folder1/folder2}"
  echo "Comparing $file1 to $file2"
  diff -y <(cat -n "$file1") <(cat -n "$file2")
done' bash

Обратите внимание, что эти команды должны выполняться в bash, потому что оболочка POSIX не поддерживает ${параметр/pattern/string}, и решение xargs должно быть сделано в GNU-land, поскольку POSIX не поддерживает find -print0 или xargs -0.  (Конечно, вы можете заменить -print0 на -print и отказаться от -0, но тогда вы потеряете возможность обрабатывать имена файлов с новыми строками в них.)

2
02.02.2019, 15:21
2 ответа

SELinux — это форма обязательного контроля доступа, при которой набор меток используется для контроля того, что процессы могут или не могут делать. Метод управления доступом по умолчанию в Linux, включающий ugoразрешения, является дискреционным -, он оставляет на усмотрение пользователя фактически выяснить, какие разрешения должны быть переданы. «Проблема» с использованием обязательного контроля доступа SELinux заключается в том, что приложения иногда могут отказываться работать так, как вы хотите, по явно загадочным причинам.

В качестве примера возьмем демона rsyslog. Каталог и файлы в /var/logимеют правильные метки SELinux для работы с rsyslog. Однако, если вы попытаетесь определить файл журнала в другом месте системы, например /opt, rsyslog, вы не сможете записать в него из-за неправильных контекстов SELinux в этом файле. Поскольку контроль доступа является обязательным, это произойдет, даже если вы установите разрешения 777для нового файла журнала. В этом конкретном случае контексты SELinux могут быть установлены в новом файле журнала с помощью chcon. Но подождите, эти контексты будут потеряны при следующей перемаркировке файловой системы. Итак, что вам действительно нужно, так это semanage fcontext.

Как я пытался проиллюстрировать приведенным выше примером,SELinux требует серьезного обучения. Даже после того, как вы поймете основы того, как это работает, вам все равно придется работать с большим количеством команд (semanage, sestatus, sealert, chcon, restorecon,audit2allow)для достижения намеченного результата.. Даже в этом случае документация может иногда сбивать вас с толку относительно того, где вы ошибаетесь.

Учитывая трудности, связанные с фактическим использованием SELinux, большинство людей считают более удобным его отключение. Фактически, вопрос с наибольшим количеством голосов под тегом SELinux здесь, на U&L, касается отключения SELinux.

Еще следует отметить, что дистрибутивы, относящиеся к Red Hat, поставляются с включенным SELinux (Fedora, RHEL и его производными ). Политики SELinux, поставляемые с этими системами, стали достаточно хорошими, чтобы многие люди обычно не замечали, что SELinux работает в их системах.

5
27.01.2020, 21:50

Да; Red Hat Enterprise Linux включает его по умолчанию для одного:

Enforcing mode is the default, and recommended, mode of operation; in enforcing mode SELinux operates normally, enforcing the loaded security policy on the entire system.

4
27.01.2020, 21:50

Теги

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