[scponly] Request review for patch to add support for bbcp to scponly
Kaleb Pederson
kaleb.pederson at gmail.com
Tue May 26 13:01:31 EDT 2009
Thanks for the patch Craig.
bbcp looks like a very nice utility, so thank you for bringing it to my attention.
The patch looks reasonable, but i haven't really reviewed it.
Some notes, in no particular order:
* Requiring 'ps' bothers me a bit... (I'm curious what bbcp is doing in this respect)
* Requiring /proc bothers me even more, and I'm not sure how portable that is to other Unicies
* The -T and -S command lines should probably be intelligently and selectively disallowed using the getopt support (disallow depending on whether SSH host is SRC/SNK)
--Kaleb
On Thursday 21 May 2009 12:26:29 pm Craig Tierney wrote:
>
> I have written a patch to scponly-4.8 so that it can support
> bbcp. Bbcp (http://www.slac.stanford.edu/~abh/bbcp/) is a high
> performance transfer mechanism that relies on ssh for authentication
> and control, but creates its own channels (multi-threaded) for bulk data transfer.
> Bbcp gets around the known problems with high-latency, high-bandwidth
> transfers that are present in scp.
>
> The local bbcp calls ssh in the following manner:
>
> ssh $SSHOPTS $HOSTNAME bbcp (SNK|SRC)
>
> The SNK and SRC text defines which way the channels of the sessions should be created.
> As far as I can tell, all other communication and configuration is passed through
> the ssh channel.
>
> Bbcp does call one system tool, /bin/ps. Code has been added to support this.
> My biggest concern with this (since I am not security expert) is that if you
> want to use bbcp with a jailed-root environment, you need to mount /proc in
> the jailed-root. That filesystem is mostly used for reading system data, however
> if root access was gained in the jailed-root, then I could see an exploit where
> any entries in /proc that are writable, the use could write values that could
> harm or corrupt the system.
>
> The patch includes changes to config.h.in and configure.in as well as changes
> to the code. The new feature is enabled with --enable-bbcp-compat. I would
> appreciate it if someone more knowledgeable about scponly than I to review
> the patch below and see if it looks correct or if I did something "horribly wrong".
>
> Thanks,
> Craig
>
> diff -urN scponly-4.8/config.h.in ../scponly-4.8-bbcp/config.h.in
> --- scponly-4.8/config.h.in 2008-01-15 06:26:13.000000000 +0000
> +++ ../scponly-4.8-bbcp/config.h.in 2009-05-21 18:43:53.990556000 +0000
> @@ -14,6 +14,7 @@
> #undef PASSWD_COMPAT
> #undef ENABLE_SCP2
> #undef ENABLE_SFTP
> +#undef ENABLE_BBCP
> #undef SVNSERV_COMPAT
> #undef ENABLE_WILDCARDS
> #undef RESTRICTIVE_FILENAMES
> @@ -51,6 +52,11 @@
> #define PROG_CD "cd"
> #endif /*ENABLE_SCP2*/
>
> +#ifdef ENABLE_BBCP
> +#undef PROG_BBCP
> +#undef PROG_PS
> +#endif /*ENABLE_BBCP*/
> +
> /* sftp logging compatibility mode */
> #undef SFTP_LOGGING
>
> diff -urN scponly-4.8/configure.in ../scponly-4.8-bbcp/configure.in
> --- scponly-4.8/configure.in 2008-01-15 06:26:13.000000000 +0000
> +++ ../scponly-4.8-bbcp/configure.in 2009-05-21 18:57:03.645227000 +0000
> @@ -104,6 +104,17 @@
> scponly_sftp_compat=1
> ])
>
> +AC_ARG_ENABLE([bbcp-compat],
> + AC_HELP_STRING([--enable-bbcp-compat], [enable bbcp compatibility]),
> + [
> + if test "x$enableval" != "xno"; then
> + bbcp_compat=1
> + AC_DEFINE([ENABLE_BBCP])
> + fi
> + ],[
> + echo dnl Defaults to off, must be turned on explicitly
> + ])
> +
> AC_ARG_ENABLE([winscp-compat],
> AC_HELP_STRING([--enable-winscp-compat], [enable winscp (and scp) compatibility]),
> [
> @@ -244,6 +255,13 @@
> SCPONLY_PATH_PROG_DEFINE([PROG_RMDIR], [rmdir], [/bin:/usr/bin:/sbin:/usr/sbin])
> fi
>
> +#Add options for bbcp
> +if test "x$enable_bbcp_compat" != "x"; then
> + AC_MSG_NOTICE([enabling bbcp compatability...])
> + SCPONLY_PATH_PROG_DEFINE([PROG_BBCP], [bbcp], [/bin:/usr/bin])
> + SCPONLY_PATH_PROG_DEFINE([PROG_PS], [ps], [/bin:/usr/bin])
> +fi
> +
> dnl Check for binaries required by the WinSCP compatibility mode
> dnl winscp-compat conditionals:
> if test "x$enable_winscp_compat" != "xno"; then
> diff -urN scponly-4.8/scponly.c ../scponly-4.8-bbcp/scponly.c
> --- scponly-4.8/scponly.c 2008-01-15 06:28:24.000000000 +0000
> +++ ../scponly-4.8-bbcp/scponly.c 2009-05-21 19:03:29.733811000 +0000
> @@ -62,6 +62,11 @@
> { PROG_RSYNC, 1 },
> #endif /*ENABLE_RSYNC*/
>
> +#ifdef ENABLE_BBCP
> + { PROG_BBCP, 1 },
> + { PROG_PS, 1 },
> +#endif /*ENABLE_BBCP*/
> +
> #ifdef PASSWD_COMPAT
> { PROG_PASSWD, 1 },
> #endif /*ENABLE_PASSWD*/
> @@ -744,6 +749,10 @@
> if (exact_match(av[0],PROG_SCP))
> av = expand_wildcards(av);
> #endif
> +#ifdef ENABLE_BBCP
> + if (exact_match(av[0],PROG_BBCP))
> + av = expand_wildcards(av);
> +#endif
> #endif
>
> /*
>
>
>
More information about the scponly
mailing list