[Samba] smbclient: Tar create to stdout produces a broken tarball

Stefan G. Weichinger lists at xunil.at
Thu Jun 9 15:38:58 UTC 2022

Am 24.05.22 um 10:49 schrieb Noel Power via samba:
> On 02/05/2022 16:23, Marc Leuser via samba wrote:
>> Hi everybody,
>> when running "smbclient -Tc -" to get the tarball to stdout, a debug 
>> message that should be sent to stderr is sent to stdout instead, which 
>> results in a broken archive. I'm testing version 4.15.2 on Alpine and 
>> have two commands to reproduce this behaviour:
>> /usr/bin/smbclient \\\\servername\\C\$ -U Username -E -d 1 -c tarmode\ 
>> full -mSMB3 -Tc - \\something > smbdump.tar
>> PASSWD=passwordhere /usr/bin/smbclient \\\\servername\\C\$ -U Username 
>> -E -d 1 -c tarmode\ full -mSMB3 -Tc - \\something > smbdump.tar
>> The first one puts "Password for [MYGROUP\Administrator]:" at the 
>> beginning of the tarball,
> In my tests this happens in 4.12.2, 4.15.5, 4.16.x etc. And ... that is 
> to be expected as afaics the prompt for the username is and has always 
> has been written to stdout. Not sure if I did something wrong or 
> misunderstood
> Also in my tests for the above I have to type in the password (but of 
> course this is not that obvious since the prompt for the password has 
> been outputted to smbdump.tar. Again this is what I see in all versions, 
> not just in 4.15.5.
> But... for all versions what I see is if you specify the password either 
> on the command line with '-Uusername%password' or even with 
> 'PASSWD=password' as above then it seems you get a usable archive
>> the second one puts "tarmode is now full, system, hidden, noreset, 
>> noverbose" and a newline (0x0A). Initially i thought it's related to a 
>> specific message, but it looks like there are at least two of them. 
>> Interestingly, when i run the same commands with debug levels 0-10, 
>> the resulting files are the same. So it appears that it's also not 
>> just "the first debug message that gets printed".
> In this case I do see that the archive produced in versions >= 4.15.0 
> has the cmd output status appended to end of the archive file. But again 
> the tarball isn't broken or at least on my system it isn't, the end of a 
> tar archive file is marked by two 512-byte blocks filled with binary 
> zeros, the content appended after that is ignored. But of course I don't 
> think we should be writing there :-)
>> Since the environment i'm encountering this bug in is Docker-based, i 
>> was able to quickly hop between versions and was able to narrow the 
>> scope down to two versions of smbclient i had available. 4.12.15 is 
>> still working, 4.14.5 has the breakage in it. Another observation is 
>> that the working version prints several messages to stderr which 
>> appear on the console, while the broken versions seem to print nothing 
>> to stderr at all. I've tried sifting through the source code and 
>> revisions but now i'm a bit lost. The only thing i found was that 
>> there seems to be no test for this specific case, which explains why 
>> it wasn't spotted.
>> Can someone else confirm this bug?

I am seeing issues with smbclient and tar when run within the Amanda 
Backup system.

Maybe that corresponds to the bug mentioned here, I just start to test 
things and compare.

using smbclient-4.16.1 currently and I get tarballs with many "Skipping 
to next header" lines.

Amanda basically runs something like:

% /usr/bin/smbclient //server/share -b 0 -N -E -m SMB2 -d 0 -c 'tarmode 
full reset hidden system; tarmode noverbose; tar c - ' -U username -P 
password > out.tar

More information about the samba mailing list