Patch for system-wide default environment

Adam Tilghman agt at ieng9.ucsd.edu
Fri Mar 2 11:35:04 EST 2001


We recently switched to OpenSSH from ssh 1.2.x and 
I quickly noticed that /etc/environment processing has gone AWOL.

This patch adds a new sshd_config variable:

     SysEnvFile
             Specifies a file containing the system-wide default environment
             in ``VARNAME=value'' format (default is none.)  The contents of a
             user's $HOME/.ssh/environment file, if found, will override vari-
             ables set within the SysEnvFile.

There is already some AIX-specific code which reads in /etc/environment.  
I left that code alone for now, but it could probably be removed if this
more general patch is accepted.

Thanks,

Adam Tilghman, UC San Diego

-- 
Adam Tilghman  |  Systems Support / Academic Computing  |     +1 858 822 0711
 agt at ucsd.edu  |  University of California, San Diego   | fax +1 858 534 7018

--- cut here ---

diff -r -c openssh-2.5.1p1/servconf.c openssh-2.5.1p1-1/servconf.c
*** openssh-2.5.1p1/servconf.c	Wed Feb 14 19:08:27 2001
--- openssh-2.5.1p1-1/servconf.c	Thu Mar  1 15:45:03 2001
***************
*** 81,86 ****
--- 81,87 ----
  	options->challenge_reponse_authentication = -1;
  	options->permit_empty_passwd = -1;
  	options->use_login = -1;
+ 	options->sys_environment_file = NULL;
  	options->allow_tcp_forwarding = -1;
  	options->num_allow_users = 0;
  	options->num_deny_users = 0;
***************
*** 210,216 ****
  	sPasswordAuthentication, sKbdInteractiveAuthentication, sListenAddress,
  	sPrintMotd, sIgnoreRhosts, sX11Forwarding, sX11DisplayOffset,
  	sStrictModes, sEmptyPasswd, sRandomSeedFile, sKeepAlives, sCheckMail,
! 	sUseLogin, sAllowTcpForwarding,
  	sAllowUsers, sDenyUsers, sAllowGroups, sDenyGroups,
  	sIgnoreUserKnownHosts, sCiphers, sMacs, sProtocol, sPidFile,
  	sGatewayPorts, sPubkeyAuthentication, sXAuthLocation, sSubsystem, sMaxStartups,
--- 211,217 ----
  	sPasswordAuthentication, sKbdInteractiveAuthentication, sListenAddress,
  	sPrintMotd, sIgnoreRhosts, sX11Forwarding, sX11DisplayOffset,
  	sStrictModes, sEmptyPasswd, sRandomSeedFile, sKeepAlives, sCheckMail,
! 	sUseLogin, sSysEnvFile, sAllowTcpForwarding,
  	sAllowUsers, sDenyUsers, sAllowGroups, sDenyGroups,
  	sIgnoreUserKnownHosts, sCiphers, sMacs, sProtocol, sPidFile,
  	sGatewayPorts, sPubkeyAuthentication, sXAuthLocation, sSubsystem, sMaxStartups,
***************
*** 261,266 ****
--- 262,268 ----
  	{ "strictmodes", sStrictModes },
  	{ "permitemptypasswords", sEmptyPasswd },
  	{ "uselogin", sUseLogin },
+ 	{ "sysenvfile", sSysEnvFile },
  	{ "randomseed", sRandomSeedFile },
  	{ "keepalive", sKeepAlives },
  	{ "allowtcpforwarding", sAllowTcpForwarding },
***************
*** 583,588 ****
--- 585,594 ----
  		case sUseLogin:
  			intptr = &options->use_login;
  			goto parse_flag;
+ 
+ 		case sSysEnvFile:
+                         charptr = &options->sys_environment_file;
+                         goto parse_filename;
  
  		case sGatewayPorts:
  			intptr = &options->gateway_ports;
diff -r -c openssh-2.5.1p1/servconf.h openssh-2.5.1p1-1/servconf.h
*** openssh-2.5.1p1/servconf.h	Wed Feb 14 19:08:27 2001
--- openssh-2.5.1p1-1/servconf.h	Thu Mar  1 15:46:40 2001
***************
*** 93,98 ****
--- 93,99 ----
  	int     permit_empty_passwd;	/* If false, do not permit empty
  					 * passwords. */
  	int     use_login;	/* If true, login(1) is used */
+ 	char	*sys_environment_file;
  	int	allow_tcp_forwarding;
  	u_int num_allow_users;
  	char   *allow_users[MAX_ALLOW_USERS];
diff -r -c openssh-2.5.1p1/session.c openssh-2.5.1p1-1/session.c
*** openssh-2.5.1p1/session.c	Sun Feb 18 11:13:34 2001
--- openssh-2.5.1p1-1/session.c	Thu Mar  1 15:46:11 2001
***************
*** 1261,1266 ****
--- 1261,1269 ----
  
  	/* read $HOME/.ssh/environment. */
  	if (!options.use_login) {
+ 		if (options.sys_environment_file != NULL) {
+ 			read_environment_file(&env, &envsize, options.sys_environment_file);
+ 		}
  		snprintf(buf, sizeof buf, "%.200s/.ssh/environment",
  		    pw->pw_dir);
  		read_environment_file(&env, &envsize, buf);
diff -r -c openssh-2.5.1p1/sshd.8 openssh-2.5.1p1-1/sshd.8
*** openssh-2.5.1p1/sshd.8	Wed Feb 14 19:08:28 2001
--- openssh-2.5.1p1-1/sshd.8	Thu Mar  1 16:03:04 2001
***************
*** 669,674 ****
--- 669,681 ----
  file transfer subsystem.
  By default no subsystems are defined.
  Note that this option applies to protocol version 2 only.
+ .It Cm SysEnvFile
+ Specifies a file containing the system-wide default environment in 
+ .Dq VARNAME=value
+ format (default is none.)  The contents of a user's 
+ .Pa $HOME/.ssh/environment 
+ file, if found, will override variables set within the
+ .Cm SysEnvFile .
  .It Cm SyslogFacility
  Gives the facility code that is used when logging messages from
  .Nm sshd .





More information about the openssh-unix-dev mailing list