All of lore.kernel.org
 help / color / mirror / Atom feed
* Using overlayfs in (unprivileged) namespace
@ 2016-02-15 11:04 Philipp Wendler
       [not found] ` <56C1B0C6.6080806-PRuqubkS1MrCxoAYUeDZubNAH6kLmebB@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Philipp Wendler @ 2016-02-15 11:04 UTC (permalink / raw)
  To: containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA

Hello all,

I would like to mount an overlayfs inside unprivileged user and mount
namespaces (i.e., the user creating the namespaces is a regular user
with no special privileges).
This works mostly fine, but it fails as soon as I try to delete a file
which exists in the "lower" directory of the overlay,
because overlayfs then needs to create a "whiteout" file,
for which it uses a device node with 0/0 device number
(https://www.kernel.org/doc/Documentation/filesystems/overlayfs.txt),
but I do not have the permission to create device nodes.

Is there any way to make overlayfs work fully in my situation,
without requiring additional privileges?
If not, is this something that could be made work in the future?
Of course, creating arbitrary devices nodes is something that cannot be
granted to an unprivileged user, but in this case it is only a specific
device node with device numbers 0/0, and it is a kernel module creating
the device node on behalf of me.

I am currently using Linux 4.2. To reproduce the problem,
you can use the following steps:
Create the mount and user namespaces with the example program from the
user_namespaces man page
(http://man7.org/linux/man-pages/man7/user_namespaces.7.html),
mapping the user root inside the namespace to my user:

$ ./userns_child_exec -m -U -z bash

Then execute the following commands:

mkdir /tmp/namespace-overlay
cd /tmp/namespace-overlay
mkdir mount lower upper work
touch lower/test
mount -t overlayfs n -o lowerdir=lower,upperdir=upper,workdir=work mount
rm mount/test

The last command gives:
> rm: cannot remove 'mount/test': Operation not permitted

This fails even if /tmp does not have "nodev" set (with "nodev" it would
be expected to fail of course).
Interestingly, it even fails if I start userns_child_exec as root,
not sure why.
Outside namespaces everything works as expected.

Kind regards,
Philipp

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2016-02-15 18:47 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-15 11:04 Using overlayfs in (unprivileged) namespace Philipp Wendler
     [not found] ` <56C1B0C6.6080806-PRuqubkS1MrCxoAYUeDZubNAH6kLmebB@public.gmane.org>
2016-02-15 11:47   ` Nikolay Borisov
     [not found]     ` <56C1BAE2.30209-6AxghH7DbtA@public.gmane.org>
2016-02-15 12:30       ` Philipp Wendler
     [not found]         ` <56C1C4D7.8030406-PRuqubkS1MrCxoAYUeDZubNAH6kLmebB@public.gmane.org>
2016-02-15 12:37           ` Nikolay Borisov
     [not found]             ` <56C1C674.3030705-6AxghH7DbtA@public.gmane.org>
2016-02-15 14:46               ` Philipp Wendler
2016-02-15 18:18   ` Serge Hallyn
2016-02-15 18:47     ` Philipp Wendler

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.