В Livejournal Дэна Уолша за 2014 год есть описание unconfined_service_t
, хотя оно настолько тяжелое на жаргоне SELinux, что я боюсь, что вы не сможете извлечь из него много пользы при вашем нынешнем уровне знаний SELinux.
Согласно вашим комментариям, метки SELinux для процесса были:
system_u:system_r:unconfined_service_t:s0
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Метки SELinux состоят из четырех частей:
_u
)_r
)_t
)В политике SELinux по умолчанию идентификатор пользователя SELinux отличается от вашего обычного имени пользователя. :По сути, SELinux не заботит, кому именно принадлежат какие-либо файлы или процессы, а только то, являетесь ли вы важным системным процессом или чем-то еще. запущен одним (system_u
), администратором (sysadm_u
), обычным пользователем(user_u
)или чем-то, что было указано как неограниченное политикой SELinux (unconfined_u
).
Часть роли может использоваться для указания нескольких ролей «частичных -администратора», например dbadm_r
для администрирования базы данных или logadm_r
для доступа к системным журналам.
Наиболее важной частью целевой политики SELinux является спецификация типа или часть с суффиксом _t
.
unconfined_service_t
должен быть неограниченным типом, поэтому я не уверен, что там пойдет не так. Возможно, все файлы в дереве каталогов /APIX/
не помечены,и из-за этого могут быть проблемы?
Как и процессы, файлы также должны иметь метку SELinux, которую можно просмотреть с помощью ls -Z
. Как правило, SELinux дает default_t
для любых файлов, для которых не указана метка. Столкнувшись с default_t
, SELinux «думает» :«Я не знаю, что это такое; это может быть Ultra Top Secret, который потерял свою маркировку, поэтому давайте сохраним ее в дополнительной безопасности, пока какой-нибудь администратор не сообщит нам правильную маркировку. для этого." Короче говоря, default_t
— это то, что вам нужно исправить.
Файлы обычно наследуют маркировку каталога, в котором они находятся во время создания, если не указано иное правило SELinux. Но если вы создадите новый каталог верхнего уровня -, такой как /APIX
, вам нужно будет решить, как его пометить, иначе вы получите default_t
, что может вызвать проблемы.
Вы можете попробовать установить semanage permissive -a unconfined_service_t
:, чтобы разрешить любым службам, использующим unconfined_service_t
свободный доступ, при этом все нарушения политики SELinux регистрировались в /var/log/auth/
, как если бы для них был полностью включен SELinux. Затем запуск audit2why
в соответствующей части журнала аудита должен дать вам более четкое описание того, почему SELinux блокирует выполнение программой того, что она хочет сделать.
Правильным решением может быть просто пометка каталога /APIX/
подходящей меткой файловой системы.
Вы не заключаете в кавычки переменную OUT_TXT
, когда используете ее с echo
. Это приводит к тому, что оболочка разделяет значение переменной на пробелы, табуляции и новые строки на слова, которые затем передаются в качестве аргументовecho
(после дополнительного расширения имени файла ). Затем echo
выводит эти аргументы с пробелами в -между ними.
Всегда цитируйте расширения переменных:
echo "$OUT_TXT"
Также обратите внимание, что у вас есть проблема в echo $IN_TXT
. Если расширение переменной IN_TXT
не заключено в кавычки как "$IN_TXT"
, ее значение будет использоваться в качестве шаблона подстановки и будет заменено любым подходящим именем файла (проверьте это с помощью IN_TXT='*'
, например ).
Аналогичная проблема присутствует в вашем sed
выражении, так как оно не процитировано должным образом.
См. также:
Кроме того, вашу команду sed
лучше писать как sed 'y/*/\n/'
как стандартную sed
просто нельзя вставлять новые строки с помощью команды s///
(GNU sed
является исключением ). Команда sed
y///
знает , как заменить одиночные символы на новые строки, независимо от того, какая реализация sed
используется.
Или вы можете просто использовать команду tr
как tr '*' '\n'
или быструю замену переменной в оболочке:
printf '%s\n' "${IN_TXT//\*/ }"
или,
OUT_TXT=${IN_TXT//\*/ }
printf '%s\n' "$OUT_TXT"