• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!-- Common Interface Language (CIL) Reference Guide -->
2           <!-- default_object_statements.xml -->
3
4   <sect1>
5      <title>Default Object Statements</title>
6      <para>These rules allow a default user, role, type and/or range to be used when computing a context for a new object. These require policy version 27 or 28 with kernels 3.5 or greater.</para>
7      <sect2 id="defaultuser">
8         <title>defaultuser</title>
9         <para>Allows the default user to be taken from the source or target context when computing a new context for the object <literal><link linkend="class">class</link></literal> identifier. Requires policy version 27.</para>
10         <para><emphasis role="bold">Statement definition:</emphasis></para>
11         <programlisting><![CDATA[(defaultuser class_id default)]]></programlisting>
12         <para><emphasis role="bold">Where:</emphasis></para>
13         <informaltable frame="all">
14            <tgroup cols="2">
15            <colspec colwidth="2 *"/>
16            <colspec colwidth="6 *"/>
17               <tbody>
18               <row>
19                  <entry>
20                     <para><literal>defaultuser</literal></para>
21                  </entry>
22                  <entry>
23                     <para>The <literal>defaultuser</literal> keyword.</para>
24                  </entry>
25               </row>
26               <row>
27                  <entry>
28                     <para><literal>class_id</literal></para>
29                  </entry>
30                  <entry>
31                     <para>A single previously declared <literal><link linkend="class">class</link></literal> or <literal><link linkend="classmap">classmap</link></literal> identifier, or a list of previously declared <literal><link linkend="class">class</link></literal> or <literal><link linkend="classmap">classmap</link></literal> identifiers enclosed within parentheses.</para>
32                  </entry>
33               </row>
34               <row>
35                  <entry>
36                     <para><literal>default</literal></para>
37                  </entry>
38                  <entry>
39                     <para>A keyword of either <literal>source</literal> or <literal>target</literal>.</para>
40                  </entry>
41               </row>
42            </tbody></tgroup>
43         </informaltable>
44
45         <para><emphasis role="bold">Example:</emphasis></para>
46         <para>When creating new <literal>binder</literal>, <literal>property_service</literal>, <literal>zygote</literal> or <literal>memprotect</literal> objects the <literal><link linkend="user">user</link></literal> component of the new security context will be taken from the <literal>source</literal> context:</para>
47         <programlisting><![CDATA[
48(class binder (impersonate call set_context_mgr transfer receive))
49(class property_service (set))
50(class zygote (specifyids specifyrlimits specifycapabilities specifyinvokewith specifyseinfo))
51(class memprotect (mmap_zero))
52
53(classmap android_classes (android))
54(classmapping android_classes android (binder (all)))
55(classmapping android_classes android (property_service (set)))
56(classmapping android_classes android (zygote (not (specifycapabilities))))
57
58(defaultuser (android_classes memprotect) source)
59
60; Will produce the following in the binary policy file:
61;; default_user binder source;
62;; default_user zygote source;
63;; default_user property_service source;
64;; default_user memprotect source;]]>
65         </programlisting>
66      </sect2>
67
68      <sect2 id="defaultrole">
69         <title>defaultrole</title>
70         <para>Allows the default role to be taken from the source or target context when computing a new context for the object <literal><link linkend="class">class</link></literal> identifier. Requires policy version 27.</para>
71         <programlisting><![CDATA[(defaultrole class_id default)]]></programlisting>
72         <para><emphasis role="bold">Where:</emphasis></para>
73         <informaltable frame="all">
74            <tgroup cols="2">
75            <colspec colwidth="2 *"/>
76            <colspec colwidth="6 *"/>
77               <tbody>
78               <row>
79                  <entry>
80                     <para><literal>defaultrole</literal></para>
81                  </entry>
82                  <entry>
83                     <para>The <literal>defaultrole</literal> keyword.</para>
84                  </entry>
85               </row>
86               <row>
87                  <entry>
88                     <para><literal>class_id</literal></para>
89                  </entry>
90                  <entry>
91                     <para>A single previously declared <literal><link linkend="class">class</link></literal> or <literal><link linkend="classmap">classmap</link></literal> identifier, or a list of previously declared <literal><link linkend="class">class</link></literal> or <literal><link linkend="classmap">classmap</link></literal> identifiers enclosed within parentheses.</para>
92                  </entry>
93               </row>
94               <row>
95                  <entry>
96                     <para><literal>default</literal></para>
97                  </entry>
98                  <entry>
99                     <para>A keyword of either <literal>source</literal> or <literal>target</literal>.</para>
100                  </entry>
101               </row>
102            </tbody></tgroup>
103         </informaltable>
104
105         <para><emphasis role="bold">Example:</emphasis></para>
106         <para>When creating new <literal>binder</literal>, <literal>property_service</literal> or <literal>zygote</literal> objects the <literal><link linkend="role">role</link></literal> component of the new security context will be taken from the <literal>target</literal> context:</para>
107         <programlisting><![CDATA[
108(class binder (impersonate call set_context_mgr transfer receive))
109(class property_service (set))
110(class zygote (specifyids specifyrlimits specifycapabilities specifyinvokewith specifyseinfo))
111
112(defaultrole (binder property_service zygote) target)
113
114; Will produce the following in the binary policy file:
115;; default_role binder target;
116;; default_role zygote target;
117;; default_role property_service target;]]>
118         </programlisting>
119      </sect2>
120
121      <sect2 id="defaulttype">
122         <title>defaulttype</title>
123         <para>Allows the default type to be taken from the source or target context when computing a new context for the object <literal><link linkend="class">class</link></literal> identifier. Requires policy version 28.</para>
124         <para><emphasis role="bold">Statement definition:</emphasis></para>
125         <programlisting><![CDATA[(defaulttype class_id default)]]></programlisting>
126         <para><emphasis role="bold">Where:</emphasis></para>
127         <informaltable frame="all">
128            <tgroup cols="2">
129            <colspec colwidth="2 *"/>
130            <colspec colwidth="6 *"/>
131               <tbody>
132               <row>
133                  <entry>
134                     <para><literal>defaulttype</literal></para>
135                  </entry>
136                  <entry>
137                     <para>The <literal>defaulttype</literal> keyword.</para>
138                  </entry>
139               </row>
140               <row>
141                  <entry>
142                     <para><literal>class_id</literal></para>
143                  </entry>
144                  <entry>
145                     <para>A single previously declared <literal><link linkend="class">class</link></literal> or <literal><link linkend="classmap">classmap</link></literal> identifier, or a list of previously declared <literal><link linkend="class">class</link></literal> or <literal><link linkend="classmap">classmap</link></literal> identifiers enclosed within parentheses.</para>
146                  </entry>
147               </row>
148               <row>
149                  <entry>
150                     <para><literal>default</literal></para>
151                  </entry>
152                  <entry>
153                     <para>A keyword of either <literal>source</literal> or <literal>target</literal>.</para>
154                  </entry>
155               </row>
156            </tbody></tgroup>
157         </informaltable>
158
159         <para><emphasis role="bold">Example:</emphasis></para>
160         <para>When creating a new <literal>socket</literal> object, the <literal><link linkend="type">type</link></literal> component of the new security context will be taken from the <literal>source</literal> context:</para>
161         <programlisting><![CDATA[(defaulttype socket source)]]></programlisting>
162      </sect2>
163
164      <sect2 id="defaultrange">
165         <title>defaultrange</title>
166         <para>Allows the default level or range to be taken from the source or target context when computing a new context for the object <literal><link linkend="class">class</link></literal> identifier. Requires policy version 27.</para>
167         <para><emphasis role="bold">Statement definition:</emphasis></para>
168         <programlisting><![CDATA[(defaultrange class_id default range)]]></programlisting>
169         <para><emphasis role="bold">Where:</emphasis></para>
170         <informaltable frame="all">
171            <tgroup cols="2">
172            <colspec colwidth="2 *"/>
173            <colspec colwidth="6 *"/>
174               <tbody>
175               <row>
176                  <entry>
177                     <para><literal>defaultrange</literal></para>
178                  </entry>
179                  <entry>
180                     <para>The <literal>defaultrange</literal> keyword.</para>
181                  </entry>
182               </row>
183               <row>
184                  <entry>
185                     <para><literal>class_id</literal></para>
186                  </entry>
187                  <entry>
188                     <para>A single previously declared <literal><link linkend="class">class</link></literal> or <literal><link linkend="classmap">classmap</link></literal> identifier, or a list of previously declared <literal><link linkend="class">class</link></literal> or <literal><link linkend="classmap">classmap</link></literal> identifiers enclosed within parentheses.</para>
189                  </entry>
190               </row>
191               <row>
192                  <entry>
193                     <para><literal>default</literal></para>
194                  </entry>
195                  <entry>
196                     <para>A keyword of either <literal>source</literal> or <literal>target</literal>.</para>
197                  </entry>
198               </row>
199               <row>
200                  <entry>
201                     <para><literal>range</literal></para>
202                  </entry>
203                  <entry>
204                     <para>A keyword of either <literal>low</literal>, <literal>high</literal> or <literal>low-high</literal>.</para>
205                  </entry>
206               </row>
207            </tbody></tgroup>
208         </informaltable>
209
210         <para><emphasis role="bold">Example:</emphasis></para>
211         <para>When creating a new <literal>file</literal> object, the appropriate <literal><link linkend="levelrange">range</link></literal> component of the new security context will be taken from the <literal>target</literal> context:</para>
212         <programlisting><![CDATA[(defaultrange file target low_high)]]></programlisting>
213      </sect2>
214
215   </sect1>
216