SELinux — возможно ли наследование от домена?

Я расширяю политики Android SELinux для поддержки проприетарных системных служб. В Android домен system_app определяется для привилегированных системных приложений. Я хотел бы, чтобы у моей проприетарной службы были точно такие же разрешения, как и в домене system_app, плюс некоторые дополнительные возможности. Можно ли сделать это без изменения определения домена system_app или его дублирования? Есть ли какой-то механизм наследования доменов в SELinux?


person smichak    schedule 12.02.2015    source источник


Ответы (1)


Политики SELinux на Android не позволяют использовать эту возможность, как вам требуется (требуется модификация). Однако, если вы посмотрите, как определяются типы с помощью ключевого слова type, это позволяет определить новый тип, а также назначить ему атрибуты. Другое ключевое слово, typeattribute, позволяет присвоить атрибут объявлению типа после объявления.

Например:

type foo, kitten, dog;

Такой же как:

type foo, dog;
typeattribute foo, kitten;

Обратите внимание, что все атрибуты должны быть объявлены с помощью ключевого слова attribute:

attribute kitten;
attribute dog;

Вы можете думать об этом, как о типе foo, расширяющем Kitit и Dog. Однако system_app — это тип, а не атрибут, поэтому его нельзя расширить.

В какой-то момент я хотел сделать что-то очень похожее и попытался убрать все типы в доменах приложений базовой политики и сделать их атрибутами по этой причине. В конечном итоге он был заброшен:

https://android-review.googlesource.com/#/c/58741/

Однако, применяя ту же идиому, вы можете достичь желаемого результата.

person William Roberts    schedule 30.06.2015