Как загрузить профиль apparmor для службы, которая работает в пользовательском пространстве systemd

Mac OSX не поддерживает команду tac. Решение @tcdyl работает, когда вы вызываете одну команду в цикле for. Во всех остальных случаях проще всего это обойти следующим образом.

Этот подход не поддерживает символы новой строки в именах файлов. Основная причина в том, что tail -rсортирует входные данные как разделенные символами новой строки.

for i in `ls -1 [filename pattern] | tail -r`; do [commands here]; done

Однако есть способ обойти ограничение новой строки.Если вы знаете, что ваши имена файлов не содержат определенного символа (, скажем, '=' ), вы можете использовать tr, чтобы заменить все символы новой строки на этот символ, а затем выполнить сортировку. Результат будет выглядеть следующим образом:

for i in `find [directory] -name '[filename]' -print0 | tr '\n' '=' | tr '\0' '\n'
| tail -r | tr '\n' '\0' | tr '=' '\n' | xargs -0`; do [commands]; done

Примечание. :в зависимости от вашей версии trон может не поддерживать '\0'в качестве символа. Обычно это можно обойти, изменив локаль на C (, но я не помню, как именно, так как после исправления она теперь работает на моем компьютере ). Если вы получили сообщение об ошибке и не можете найти обходной путь, опубликуйте его в комментарии, чтобы я мог помочь вам устранить неполадку.

0
22.08.2019, 16:32
2 ответа

Нет необходимости различать профили пользовательских и системных служб. Их можно вместе поместить в папку /etc/apparmor.d и загрузить в ядро ​​с помощью apparmor _parser.sh

0
28.01.2020, 03:20

Systemd предлагает эту переменную для юнит-файлов AppArmorProfile=и устанавливает для нее профиль, который у вас есть. Я не уверен насчет каталога.. попробуйте узнать, как добавить пути для apparmor, чтобы найти профили..

0
28.01.2020, 03:20

Теги

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