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 |