From: Lennart Poettering Date: Thu, 19 Feb 2015 11:03:39 +0000 (+0100) Subject: nspawn: chown basic device nodes to userns root X-Git-Tag: v219.0~623 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=6278cf604834ab3535934209a704f222e472bf17 nspawn: chown basic device nodes to userns root --- diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 9967423db..0d8d199de 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -1444,6 +1444,10 @@ static int copy_devnodes(const char *dest) { if (mknod(to, st.st_mode, st.st_rdev) < 0) return log_error_errno(errno, "mknod(%s) failed: %m", to); + + if (arg_userns && arg_uid_shift != UID_INVALID) + if (lchown(to, arg_uid_shift, arg_uid_shift) < 0) + return log_error_errno(errno, "chown() of device node %s failed: %m", to); } } @@ -1460,6 +1464,10 @@ static int setup_ptmx(const char *dest) { if (symlink("pts/ptmx", p) < 0) return log_error_errno(errno, "Failed to create /dev/ptmx symlink: %m"); + if (arg_userns && arg_uid_shift != UID_INVALID) + if (lchown(p, arg_uid_shift, arg_uid_shift) < 0) + return log_error_errno(errno, "lchown() of symlink %s failed: %m", p); + return 0; }