[scponly] Request review for patch to add support for bbcp to scponly
Craig Tierney
Craig.Tierney at noaa.gov
Thu Jun 4 15:45:58 EDT 2009
Kaleb Pederson wrote:
> 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
>
Sorry I didn't respond sooner. I didn't see the email come across.
PS is not required. Although my example below does include it,
everything works fine without it. BBCP reports an error. I haven't thought about
what to do. Right now it just complains. Should I contact the BBCP authors
to figure it out, just leave it as an error message, or other?
Access to /proc isn't needed, because it is only needed for ps, so
see above discussion on PS.
I will look into the issues with -T and -S.
Craig
> 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
>>
>> /*
>>
>>
>>
>
> _______________________________________________
> scponly mailing list
> scponly at lists.ccs.neu.edu
> https://lists.ccs.neu.edu/bin/listinfo/scponly
--
Craig Tierney (craig.tierney at noaa.gov)
More information about the scponly
mailing list