Ubuntu – How to blacklist certain directories in Samba

sambaserver

I am exporting a directory via Samba to my home theater PC. Unfortunately XBMC is also displaying some working directories that I happen to be sharing inside that directory.

I would like to find a way to have Samba ignore certain directories so that they are not shared with the other PCs.

This is purely for vanity reasons so the solution doesn't need to be totally perfect (So a workaround would be fine, it doesn't have to be production quality)

Best Answer

I'm thinking veto files is the option you're looking for.

Edit /etc/samba/smb.conf with root rights. Under the particular share /var/test, the following setting will exclude any descendant sub-directory or file matching foo or *bar* (beware, / means OR):

[myshare]
  path = /var/test
  veto files = /foo/*bar*/

Then, you need to restart Samba with stop and start (not reload):

sudo /etc/init.d/samba stop
sudo /etc/init.d/samba start

Note: Shares created through Nautilus GUI are defined in individual files in /var/lib/samba/usershare but veto files can't be applied there. If it's your case:

  • Either add veto files to the [global] section of /var/lib/samba/usershare. This will affect to all your global shares.
  • Or delete the existing share definition file under /var/lib/samba/usershare and re-create it manually under /etc/samba/smb.conf. You can't copy paste; instead, follow the guide.
Related Question