[scponly] Initial Directory

wby oblyr joe at sublimation.org
Sat Nov 27 18:56:29 EST 2004



Hi Daniel,

Thanks for this patch, I will go through it and incorporate it into the next release, which will 
be soon.

joe

Daniel Lorch wrote this message on Tue, Nov 23, 2004 at 18:34 +0100:
> Hi
> 
> basically I'm looking for a drop-in replacement for proftpd, so this 
> behaviour is required for all the interactive protocols which are "like 
> FTP" from the user's perspective (sftp-server and WinSCP), but not for 
> command-line tools like rsync and scp. So if a user logs in via his 
> GUI-tool he should be sent to a subdirectory (like public_html), but if 
> he uses scp or rsync (e.g. in a shell script) the initial directory 
> should not be modified. Sounds complicated? :)
> 
> I wrote a patch against scponly-3.11 which implements this behaviour 
> (the patch also includes changes against generated files like configure 
> and config.h. I found them in CVS so I assumed they should be patched, 
> too). I hope everything is done right, otherwise please let me know.
> 
> Usage:
> 
>   tar zxf scponly-3.11.tgz
>   cd scponly-3.11
>   patch -p1 < ../scponly-3.11-default-chdir.patch
>   ./configure --with-default-chdir=public_html
>   make
>   make install
> 
> Comments?
> 
> This patch has not yet been thorougly tested, so use with care ;)
> 
> Daniel

> diff -ur scponly-3.11-dist/config.h.in scponly-3.11-daniel/config.h.in
> --- scponly-3.11-dist/config.h.in	Tue Nov 23 00:32:41 2004
> +++ scponly-3.11-daniel/config.h.in	Mon Nov 22 23:41:47 2004
> @@ -11,6 +11,7 @@
>  #undef UNISON_COMPAT 
>  #undef ENABLE_SCP2
>  #undef ENABLE_SFTP
> +#undef ENABLE_DEFAULT_CHDIR
>  #undef ENABLE_WILDCARDS
>  #undef RESTRICTIVE_FILENAMES
>  #undef CHROOTED_NAME
> @@ -55,4 +56,7 @@
>  #undef PROG_UNISON
>  #endif
>  
> -
> +/* Initial directory after logging in */
> +#ifdef ENABLE_DEFAULT_CHDIR
> +#undef DEFAULT_CHDIR
> +#endif
> diff -ur scponly-3.11-dist/configure scponly-3.11-daniel/configure
> --- scponly-3.11-dist/configure	Tue Nov 23 00:29:31 2004
> +++ scponly-3.11-daniel/configure	Tue Nov 23 00:19:31 2004
> @@ -842,6 +842,10 @@
>    --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
>    --with-sftp-server      path to sftp-server binary
>                            defaults, to, on+guessed
> +  --with-default-chdir    cd to this directory after logging in (mimicking
> +                          proftpd's DefaultChdir directive). applies only to
> +                          "ftp-like" interactive protocols like WinSCP and
> +                          sftp, not to scp or rsync
>  
>  Some influential environment variables:
>    CC          C compiler command
> @@ -2724,6 +2728,26 @@
>                scponly_sftp_compat=1
>  
>  fi;
> +
> +
> +# Check whether --with-default-chdir or --without-default-chdir was given.
> +if test "${with_default_chdir+set}" = set; then
> +  withval="$with_default_chdir"
> +
> +	      cat >>confdefs.h <<\_ACEOF
> +#define ENABLE_DEFAULT_CHDIR 1
> +_ACEOF
> +
> +   	      cat >>confdefs.h <<_ACEOF
> +#define DEFAULT_CHDIR "$withval"
> +_ACEOF
> +
> +
> +else
> +
> +              echo -n
> +fi;
> +
>  
>  # Check whether --enable-winscp-compat or --disable-winscp-compat was given.
>  if test "${enable_winscp_compat+set}" = set; then
> diff -ur scponly-3.11-dist/configure.in scponly-3.11-daniel/configure.in
> --- scponly-3.11-dist/configure.in	Tue Nov 23 00:27:17 2004
> +++ scponly-3.11-daniel/configure.in	Tue Nov 23 00:19:14 2004
> @@ -108,6 +108,16 @@
>                scponly_sftp_compat=1
>        ])
>  
> +AC_ARG_WITH([default-chdir],
> +      AC_HELP_STRING([--with-default-chdir], [cd to this directory after logging in (mimicking proftpd's DefaultChdir directive). applies only to "ftp-like" interactive protocols like WinSCP and sftp, not to scp or rsync]),
> +      [
> +	      AC_DEFINE([ENABLE_DEFAULT_CHDIR])
> +   	      AC_DEFINE_UNQUOTED([DEFAULT_CHDIR], ["$withval"]) 
> +      ],[
> +              echo -n      dnl  Defaults to off, must be turned on explicitly
> +      ])
> +
> +
>  AC_ARG_ENABLE([winscp-compat],
>        AC_HELP_STRING([--disable-winscp-compat], [disable WinSCP compatibility mode]),
>        [
> diff -ur scponly-3.11-dist/scponly.c scponly-3.11-daniel/scponly.c
> --- scponly-3.11-dist/scponly.c	Tue Nov 23 00:27:08 2004
> +++ scponly-3.11-daniel/scponly.c	Tue Nov 23 00:26:43 2004
> @@ -292,6 +292,11 @@
>  
>  	fflush(stdout);
>  
> +#ifdef ENABLE_DEFAULT_CHDIR
> +        syslog(LOG_INFO, "changing initial directory to %s", DEFAULT_CHDIR);
> +        chdir(DEFAULT_CHDIR);
> +#endif
> +	
>  	/*
>  	 *	now process commands interactively
>   	 */
> @@ -430,6 +435,14 @@
>  	if (exact_match(av[0],PROG_SCP))
>  		av = expand_wildcards(av);
>  #endif
> +#endif
> +
> +#ifdef ENABLE_DEFAULT_CHDIR
> +	if (exact_match(av[0],PROG_SFTP_SERVER))
> +	{
> +		syslog(LOG_INFO, "changing initial directory to %s", DEFAULT_CHDIR);
> +		chdir(DEFAULT_CHDIR);
> +	}
>  #endif
>  
>  	flat_request = flatten_vector(av);

> _______________________________________________
> scponly mailing list
> scponly at lists.ccs.neu.edu
> https://lists.ccs.neu.edu/bin/listinfo/scponly


-- 
----

PGP KEY: http://www.sublimation.org/contact.html
PGP Key fingerprint = EC4B 0DA5 B4F6 BDDD 9176 55D6 3A6A 7D63 158F 22D2 




More information about the scponly mailing list