Skip to content

Commit

Permalink
ovl: document permission model
Browse files Browse the repository at this point in the history
Add missing piece of documentation regarding how permissions are checked in
overlayfs.

Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
  • Loading branch information
Miklos Szeredi committed Mar 17, 2020
1 parent 62c832e commit 4c494bd
Showing 1 changed file with 44 additions and 0 deletions.
44 changes: 44 additions & 0 deletions Documentation/filesystems/overlayfs.rst
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,50 @@ overlay filesystem (though an operation on the name of the file such as
rename or unlink will of course be noticed and handled).


Permission model
----------------

Permission checking in the overlay filesystem follows these principles:

1) permission check SHOULD return the same result before and after copy up

2) task creating the overlay mount MUST NOT gain additional privileges

3) non-mounting task MAY gain additional privileges through the overlay,
compared to direct access on underlying lower or upper filesystems

This is achieved by performing two permission checks on each access

a) check if current task is allowed access based on local DAC (owner,
group, mode and posix acl), as well as MAC checks

b) check if mounting task would be allowed real operation on lower or
upper layer based on underlying filesystem permissions, again including
MAC checks

Check (a) ensures consistency (1) since owner, group, mode and posix acls
are copied up. On the other hand it can result in server enforced
permissions (used by NFS, for example) being ignored (3).

Check (b) ensures that no task gains permissions to underlying layers that
the mounting task does not have (2). This also means that it is possible
to create setups where the consistency rule (1) does not hold; normally,
however, the mounting task will have sufficient privileges to perform all
operations.

Another way to demonstrate this model is drawing parallels between

mount -t overlay overlay -olowerdir=/lower,upperdir=/upper,... /merged

and

cp -a /lower /upper
mount --bind /upper /merged

The resulting access permissions should be the same. The difference is in
the time of copy (on-demand vs. up-front).


Multiple lower layers
---------------------

Expand Down

0 comments on commit 4c494bd

Please sign in to comment.