[systemd-devel] I want to run systemd inside of a locked down base docker container

Lennart Poettering lennart at poettering.net
Wed Feb 10 19:41:35 CET 2016


On Wed, 10.02.16 10:22, Ranjib Dey (dey.ranjib at gmail.com) wrote:

> Docker(ls -alh)
> 
> crw-------  1 root root 136,   9 Feb 10 18:20 console
> lrwxrwxrwx  1 root root       13 Feb 10 18:20 fd -> /proc/self/fd
> crw-rw-rw-  1 root root   1,   7 Feb 10 18:20 full
> c---------  1 root root  10, 229 Feb 10 18:20 fuse
> lrwxrwxrwx  1 root root       11 Feb 10 18:20 kcore -> /proc/kcore
> drwxrwxrwt  2 root root       40 Oct 30 08:01 mqueue
> crw-rw-rw-  1 root root   1,   3 Feb 10 18:20 null
> lrwxrwxrwx  1 root root        8 Feb 10 18:20 ptmx -> pts/ptmx
> drwxr-xr-x  2 root root        0 Feb 10 18:20 pts
> crw-rw-rw-  1 root root   1,   8 Feb 10 18:20 random
> drwxrwxrwt  2 root root       40 Feb 10 18:20 shm
> lrwxrwxrwx  1 root root       15 Feb 10 18:20 stderr -> /proc/self/fd/2
> lrwxrwxrwx  1 root root       15 Feb 10 18:20 stdin -> /proc/self/fd/0
> lrwxrwxrwx  1 root root       15 Feb 10 18:20 stdout -> /proc/self/fd/1
> crw-rw-rw-  1 root root   5,   0 Feb 10 18:20 tty
> crw-rw-rw-  1 root root   1,   9 Feb 10 18:20 urandom
> crw-rw-rw-  1 root root   1,   5 Feb 10 18:20 zero

This looks pretty OK actually. With this setup (i.e. where /dev/tty0
does not exist) it seems entirely unnnecessary to mask the getty
services or anything, as they contain a  condition (as mentioned) that
skips them if this device node does not exist.

> LXC (ls -alh /dev)
> crw-rw----  1 root   tty     136, 18 Feb 10 07:15 console
> lrwxrwxrwx  1 root   root         11 Feb 10 07:15 core -> /proc/kcore
> lrwxrwxrwx  1 root   root         13 Feb 10 07:15 fd -> /proc/self/fd
> crw-rw-rw-  1 nobody nogroup   1,  7 Feb  9 08:32 full
> srw-rw-rw-  1 root   root          0 Feb 10 07:15 log
> drwxrwxrwt  2 nobody nogroup      40 Feb 10 07:15 mqueue
> drwxr-xr-x  2 root   root         40 Feb 10 07:15 net
> crw-rw-rw-  1 nobody nogroup   1,  3 Feb  9 08:32 null
> lrwxrwxrwx  1 root   root         13 Feb 10 07:15 ptmx -> /dev/pts/ptmx
> drwxr-xr-x  2 nobody nogroup       0 Feb 10 07:15 pts
> lrwxrwxrwx  1 root   root          4 Feb 10 07:15 ram -> ram1
> crw-rw-rw-  1 nobody nogroup   1,  8 Feb  9 08:32 random
> lrwxrwxrwx  1 root   root          8 Feb 10 07:15 shm -> /run/shm

this looks wrong...

> lrwxrwxrwx  1 root   root          4 Feb 10 07:15 stderr -> fd/2
> lrwxrwxrwx  1 root   root          4 Feb 10 07:15 stdin -> fd/0
> lrwxrwxrwx  1 root   root          4 Feb 10 07:15 stdout -> fd/1
> crw-rw-rw-  1 nobody nogroup   5,  0 Feb 10 18:17 tty
> crw-rw----  1 root   tty     136,  0 Feb 10 07:15 tty1
> crw-rw----  1 root   tty     136,  1 Feb 10 07:15 tty2
> crw-rw----  1 root   tty     136,  2 Feb 10 07:15 tty3
> crw-rw----  1 root   tty     136,  3 Feb 10 07:15 tty4

Urks. This looks super wrong. A container has no VC subsystem, and
these devices really shouldn't exist there. /dev/tty1, /dev/tty2 and
so on are the interface to the Linux kernel VC subsystem, and nothing else.

> drwxr-xr-x  3 root   root         60 Feb 10 07:15 .udev

Wut? where does this come from? the last time udev used that directory
was 4 years ago or so...

Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list