When -u option is used also set USER, HOME and SHELL variables.

This is consistent with what other uid-morphing utilities
do, i.e. jexec(1), su(1) etc.

MFC after:      2 weeks
Reviewed by:    gbe
Differential Revision:  https://reviews.freebsd.org/D36148
This commit is contained in:
Maxim Sobolev 2022-08-10 18:44:20 -07:00
parent 948f31d7b0
commit 6b3ad1d737

View file

@ -42,6 +42,7 @@ __FBSDID("$FreeBSD$");
#include <errno.h>
#include <libutil.h>
#include <login_cap.h>
#include <paths.h>
#include <pwd.h>
#include <signal.h>
#include <stdio.h>
@ -465,6 +466,10 @@ restrict_process(const char *user)
if (setusercontext(NULL, pw, pw->pw_uid, LOGIN_SETALL) != 0)
errx(1, "failed to set user environment");
setenv("USER", pw->pw_name, 1);
setenv("HOME", pw->pw_dir, 1);
setenv("SHELL", *pw->pw_shell ? pw->pw_shell : _PATH_BSHELL, 1);
}
/*