From 3f3e70c686d471aefa6729d7597e306a3548ce3c Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Sun, 9 May 2021 14:27:06 +0200 Subject: [PATCH] Mount /dev/pts with gid of tty group and set nosuid, noexec flags Note, this code only runs if /dev/pts was not mounted in /etc/fstab Signed-off-by: Joachim Wiberg --- src/finit.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/finit.c b/src/finit.c index 8a1ea698..516e8d8f 100644 --- a/src/finit.c +++ b/src/finit.c @@ -211,8 +211,20 @@ static void fs_finalize(void) /* Modern systems use /dev/pts */ if (!fismnt("/dev/pts")) { + char opts[32]; + int mode; + int gid; + + gid = getgroup("tty"); + if (gid == -1) + gid = 0; + + /* 0600 is default on Debian, use 0620 to get mesg y by default */ + mode = 0620; + snprintf(opts, sizeof(opts), "gid=%d,mode=%d,ptmxmode=0666", gid, mode); + makedir("/dev/pts", 0755); - mount("devpts", "/dev/pts", "devpts", 0, "gid=5,mode=620,ptmxmode=0666"); + mount("devpts", "/dev/pts", "devpts", MS_NOSUID | MS_NOEXEC, opts); } /*