Package: openssh-server Version: 1:5.8p1-3c Severity: wishlist Tags: patch
Hello, sshd should honour TMPDIR when forwarding: when PAM is allowed, it can be done by using a pacakge as pam-tmpdir as shown in the patch. hth, Jerome -- System Information: Debian Release: Squeeze* APT prefers stable APT policy: (990, 'stable'), (500, 'squeeze-updates') Architecture: amd64 (x86_64) Kernel: Linux 2.6.35-rc5-amd64-mm (SMP w/2 CPU cores) Locale: LANG=en_GB, LC_CTYPE=en_GB (charmap=ISO-8859-1) Shell: /bin/sh linked to /bin/dash Versions of packages openssh-server depends on: ii adduser 3.112+nmu2 add and remove users and groups ii debconf [debconf-2.0] 1.5.36.1 Debian configuration management sy ii dpkg 1.15.8.10 Debian package management system ii libc6 2.11.2-10 Embedded GNU C Library: Shared lib ii libcomerr2 1.41.12-2 common error description library ii libgssapi-krb5-2 1.8.3+dfsg-4 MIT Kerberos runtime libraries - k ii libkrb5-3 1.8.3+dfsg-4 MIT Kerberos runtime libraries ii libpam-modules 1.1.1-6.1 Pluggable Authentication Modules f ii libpam-runtime 1.1.1-6.1 Runtime support for the PAM librar ii libpam0g 1.1.1-6.1 Pluggable Authentication Modules l ii libselinux1 2.0.96-1 SELinux runtime shared libraries ii libssl0.9.8 0.9.8o-4squeeze1 SSL shared libraries ii libwrap0 7.6.q-19 Wietse Venema's TCP wrappers libra ii lsb-base 3.2-23.2squeeze1 Linux Standard Base 3.2 init scrip ii openssh-blacklist 0.4.1 list of default blacklisted OpenSS ii openssh-client 1:5.8p1-3c secure shell (SSH) client, for sec ii procps 1:3.2.8-9 /proc file system utilities ii zlib1g 1:1.2.3.4.dfsg-3 compression library - runtime Versions of packages openssh-server recommends: ii openssh-blacklist-extra 0.4.1 list of non-default blacklisted Op ii xauth 1:1.0.4-1 X authentication utility Versions of packages openssh-server suggests: pn molly-guard <none> (no description available) pn rssh <none> (no description available) pn ssh-askpass <none> (no description available) pn ufw <none> (no description available) -- debconf information excluded
diff -ruN openssh-5.8p1-original/auth-pam.c openssh-5.8p1-jgmb.0.1/auth-pam.c --- openssh-5.8p1-original/auth-pam.c 2009-07-12 14:07:21.000000000 +0200 +++ openssh-5.8p1-jgmb.0.1/auth-pam.c 2011-03-26 18:31:36.000000000 +0100 @@ -1087,6 +1087,12 @@ return (ret); } +const char * +getenv_pam_environment(const char *name) +{ + return (pam_getenv(sshpam_handle, name)); +} + char ** fetch_pam_child_environment(void) { diff -ruN openssh-5.8p1-original/auth-pam.h openssh-5.8p1-jgmb.0.1/auth-pam.h --- openssh-5.8p1-original/auth-pam.h 2004-09-11 14:17:26.000000000 +0200 +++ openssh-5.8p1-jgmb.0.1/auth-pam.h 2011-03-26 18:30:00.000000000 +0100 @@ -39,6 +39,7 @@ void do_pam_setcred(int ); void do_pam_chauthtok(void); int do_pam_putenv(char *, char *); +const char * getenv_pam_environment(const char *); char ** fetch_pam_environment(void); char ** fetch_pam_child_environment(void); void free_pam_environment(char **); diff -ruN openssh-5.8p1-original/session.c openssh-5.8p1-jgmb.0.1/session.c --- openssh-5.8p1-original/session.c 2010-12-01 02:02:59.000000000 +0100 +++ openssh-5.8p1-jgmb.0.1/session.c 2011-03-26 17:48:54.000000000 +0100 @@ -175,6 +175,9 @@ static int auth_input_request_forwarding(struct passwd * pw) { +#ifdef USE_PAM + char *tmpdir = NULL; +#endif /* USE_PAM */ Channel *nc; int sock = -1; struct sockaddr_un sunaddr; @@ -187,8 +190,20 @@ /* Temporarily drop privileged uid for mkdir/bind. */ temporarily_use_uid(pw); +#ifdef USE_PAM + if (options.use_pam) { + tmpdir=getenv_pam_environment("TMPDIR"); + } +#endif /* USE_PAM */ + /* Allocate a buffer for the socket name, and format the name. */ - auth_sock_dir = xstrdup("/tmp/ssh-XXXXXXXXXX"); +#ifdef USE_PAM + if (tmpdir != NULL) { + xasprintf(&auth_sock_dir, "%s/ssh-XXXXXXXXXXXX", tmpdir); + } + else +#endif /* USE_PAM */ + auth_sock_dir = xstrdup("/tmp/ssh-XXXXXXXXXXXX"); /* Create private directory for socket */ if (mkdtemp(auth_sock_dir) == NULL) {