[Samba] HowTo clear a share using smbclient ?

Charlie medievalist at gmail.com
Wed May 21 17:38:55 GMT 2008


"find /full/path/to/directory -type f  -exec rm {} \;"  will delete
all files found below /full/path/to/directory without deleting pipes,
directories, etc.

"find /full/path/to/directory -exec rm {} \;" will blow out everything.

If you don't use an environment variable for the path you run no
risks.  Admittedly you can get in trouble with find /$FullPath because
some logic error introduced by a maintenance programmer in the future
could cause $FullPath to resolve to the empty string... you might use
one of these tricks:

#1 - bodge up a sandbox

#!/bin/bash
mkdir /tmp/safedir  2>/dev/null
if cd /tmp/safedir
  then
    find $FullPath  -exec rm {} \;
else
   echo ERROR: Unable to clear $FullPath
fi

#2 - sanity check

#!/bin/bash
if [ -n "$FullPath"]
  then
      find $FullPath  -exec rm {} \;
else
      echo FATAL ERROR
      echo Moronic programming SNAFU
      echo variable FullPath is empty!
fi

As a general rule, never script file glob wildcards into bash (because
a big directory will make bash's globbing overrun the shell command
line length limitation of your OS) and always put appropriate  sanity
checks into path composition code to detect unset variables.

Hope that helped!
--Charlie


On Wed, May 14, 2008 at 9:15 PM, Michael Heydon <michaelh at jaswin.com.au> wrote:
> This seems a bit Rube Goldberg to me, you have direct access to the file
> system, why not use it?
>
> If you are really worried that rm -rf /full/path/to/directory might somehow
> morph into rm -rf / you could do something like:
> su nobody -c rm -rf /full/path/to/directory
> In the event that it did try to delete / it would be limited to files
> writable by "nobody".
>
> I understand being cautious around rm -rf especially when running as root,
> but I think testing and being careful are a better solution than using samba
> to limit access.
>
> Jon Wilson wrote:
>>
>> Good Evening,
>>
>> I was wondering if anyone knows how to clear a share on a server using
>> a command line interface ?
>>
>> Basically I have a [public] share that I would like cleared down every
>> night, I've worked out that
>>
>> smbclient //apps-srv/public -N -c "del *" >
>> /var/log/samba_public_delete.log 2>&1
>>
>> seems to go most of the way to doing what I want - however it doesn't
>> delete subdirectories. Is there any easy way to accomplish this ?
>>
>>
>> I prefer the idea of running this rather than a 'rm -rf' from the
>> command line as I can script this and as it's a public share the
>> possibility of deleting anything else is pretty minimal.
>> I've seen a few examples of wayward rm command in crons to be wary of
>> doing that !
>>
>> Any ideas how I could accomplish this ?
>>
>>
>> Many Thanks
>>
>> Jon
>>
>
>
> --
> To unsubscribe from this list go to the following URL and read the
> instructions:  https://lists.samba.org/mailman/listinfo/samba
>


More information about the samba mailing list