mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-06 16:13:35 +00:00
conf: ret-try devpts mount without gid=5 on error
We should always default to mounting devpts with gid=5 but we should fallback to mounting without gid=5. This let's us cover use-cases such as container started with only a single mapping e.g.: lxc.idmap = u 1000 1000 1 lxc.idmap = g 1000 1000 1 Closes #2257. Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
This commit is contained in:
parent
855452aede
commit
112930688b
@ -1523,7 +1523,7 @@ static struct id_map *find_mapped_nsid_entry(struct lxc_conf *conf, unsigned id,
|
||||
static int lxc_setup_devpts(struct lxc_conf *conf)
|
||||
{
|
||||
int ret;
|
||||
const char *default_devpts_mntopts;
|
||||
const char *default_devpts_mntopts = "gid=5,newinstance,ptmxmode=0666,mode=0620";
|
||||
char devpts_mntopts[256];
|
||||
|
||||
if (conf->pts <= 0) {
|
||||
@ -1532,11 +1532,6 @@ static int lxc_setup_devpts(struct lxc_conf *conf)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!find_mapped_nsid_entry(conf, 5, ID_TYPE_GID))
|
||||
default_devpts_mntopts = "newinstance,ptmxmode=0666,mode=0620";
|
||||
else
|
||||
default_devpts_mntopts = "newinstance,ptmxmode=0666,mode=0620,gid=5";
|
||||
|
||||
ret = snprintf(devpts_mntopts, sizeof(devpts_mntopts), "%s,max=%d",
|
||||
default_devpts_mntopts, conf->pts);
|
||||
if (ret < 0 || (size_t)ret >= sizeof(devpts_mntopts))
|
||||
@ -1560,11 +1555,16 @@ static int lxc_setup_devpts(struct lxc_conf *conf)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Mount new devpts instance. */
|
||||
/* mount new devpts instance */
|
||||
ret = mount("devpts", "/dev/pts", "devpts", MS_NOSUID | MS_NOEXEC, devpts_mntopts);
|
||||
if (ret < 0) {
|
||||
SYSERROR("Failed to mount new devpts instance");
|
||||
return -1;
|
||||
/* try mounting without gid=5 */
|
||||
ret = mount("devpts", "/dev/pts", "devpts",
|
||||
MS_NOSUID | MS_NOEXEC, devpts_mntopts + sizeof("gid=5"));
|
||||
if (ret < 0) {
|
||||
SYSERROR("Failed to mount new devpts instance");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
DEBUG("Mount new devpts instance with options \"%s\"", devpts_mntopts);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user