]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
login: use ENV_PATH and ENV_{ROOT,SU}PATH from login.defs
authorKarel Zak <kzak@redhat.com>
Wed, 5 Oct 2011 22:56:32 +0000 (00:56 +0200)
committerKarel Zak <kzak@redhat.com>
Wed, 26 Oct 2011 21:17:18 +0000 (23:17 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
login-utils/login.1
login-utils/login.c

index 1f4aa693f37141a34687b54436b7c4c216a9acef..54b75627b88080027e13b6b79eac909439c3fafd 100644 (file)
@@ -198,6 +198,18 @@ Enable display of unknown usernames when login failures are recorded\&.
 Note that logging unknown usernames may be a security issue if an user enter
 her password instead of her login name.
 .RE
+.PP
+\fBENV_PATH\fR (string)
+.RS 4
+If set, it will be used to define the PATH environment variable when a regular
+user login. The default value is "/usr/local/bin:/bin:/usr/bin".
+.RE
+.PP
+\fBENV_ROOTPATH\fR (string), \fBENV_SUPATH\fR (string)
+.RS 4
+If set, it will be used to define the PATH environment variable when the superuser
+login. The default value is "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin".
+.RE
 .SH FILES
 .nf
 .I /var/run/utmp
index ed9a888ca113e23199110c809f6ac2c26c5cb014..adc9aa584a1338d40e05947f5feef380152eb551 100644 (file)
@@ -1111,10 +1111,18 @@ static void init_environ(struct login_context *cxt)
        }
 
        setenv("HOME", pwd->pw_dir, 0); /* legal to override */
-       setenv("PATH", pwd->pw_uid ? _PATH_DEFPATH : _PATH_DEFPATH_ROOT, 1);
        setenv("SHELL", pwd->pw_shell, 1);
        setenv("TERM", termenv, 1);
 
+       if (pwd->pw_uid)
+               setenv("PATH", getlogindefs_str("ENV_PATH", _PATH_DEFPATH), 1);
+       else {
+               const char *x = getlogindefs_str("ENV_ROOTPATH", NULL);
+               if (!x)
+                       x = getlogindefs_str("ENV_SUPATH", _PATH_DEFPATH_ROOT);
+               setenv("PATH", x, 1);
+       }
+
        /* mailx will give a funny error msg if you forget this one */
        len = snprintf(tmp, sizeof(tmp), "%s/%s", _PATH_MAILDIR, pwd->pw_name);
        if (len > 0 && (size_t) len + 1 <= sizeof(tmp))