summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Friedl <markus@cvs.openbsd.org>2002-06-25 18:51:05 +0000
committerMarkus Friedl <markus@cvs.openbsd.org>2002-06-25 18:51:05 +0000
commitd800ca201657c306cad1dc45e6aff49f2a092a89 (patch)
tree3b2e2188f92b8022b407952586a58f94c551e59a
parent13f7b30bebfeac8de71e91e20ea5429e80da1e4b (diff)
lightweight do_setusercontext after chroot()
-rw-r--r--usr.bin/ssh/sshd.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/usr.bin/ssh/sshd.c b/usr.bin/ssh/sshd.c
index a458e324dfd..3a561e7dac8 100644
--- a/usr.bin/ssh/sshd.c
+++ b/usr.bin/ssh/sshd.c
@@ -42,7 +42,7 @@
*/
#include "includes.h"
-RCSID("$OpenBSD: sshd.c,v 1.250 2002/06/23 10:29:52 deraadt Exp $");
+RCSID("$OpenBSD: sshd.c,v 1.251 2002/06/25 18:51:04 markus Exp $");
#include <openssl/dh.h>
#include <openssl/bn.h>
@@ -517,6 +517,7 @@ static void
privsep_preauth_child(void)
{
u_int32_t rand[256];
+ gid_t gidset[2];
struct passwd *pw;
int i;
@@ -546,7 +547,17 @@ privsep_preauth_child(void)
/* Drop our privileges */
debug3("privsep user:group %u:%u", (u_int)pw->pw_uid,
(u_int)pw->pw_gid);
+#if 0
+ /* XXX not ready, to heavy after chroot */
do_setusercontext(pw);
+#else
+ gidset[0] = pw->pw_gid;
+ if (setgid(pw->pw_gid) < 0)
+ fatal("setgid failed for %u", pw->pw_gid );
+ if (setgroups(1, gidset) < 0)
+ fatal("setgroups: %.100s", strerror(errno));
+ permanently_set_uid(pw);
+#endif
}
static Authctxt*