The set of rights can be broken into two subsets : where is the set of capabilities and is the set of permissions that can be given to a file, for each possible uid. Let be the set of available uids plus a special element that will mean that the uid check is not needed. Let be the set of capabilities seen in section . Let be the set of file accesses.
We can write and . Thus an insight of could be the union of the two following tables where each row is an element of . Let's have a very reduced disk with three files : //bin//bin/vi, and (no uid test, id=root and first user).
-1 | CAP_CHOWN |
0 | CAP_CHOWN |
1000 | CAP_CHOWN |
-1 | CAP_DAC_OVERRIDE |
0 | CAP_DAC_OVERRIDE |
1000 | CAP_DAC_OVERRIDE |
... | ... |
-1 | LIDS_OUTLAW |
0 | LIDS_OUTLAW |
1000 | LIDS_OUTLAW |
-1 | r | / |
0 | r | / |
1000 | r | / |
-1 | a | / |
0 | a | / |
1000 | a | / |
-1 | t | / |
0 | t | / |
1000 | t | / |
-1 | x | / |
0 | x | / |
1000 | x | / |
-1 | r | /bin/ |
0 | r | /bin/ |
1000 | r | /bin/ |
... | ... | ... |
1000 | x | /bin/vi |