How would you add a share to smb.conf via a script?

Solution 1:

To fit with modern sysadmin best practices it would be good to add your configs as individual files in /etc/smb/smb.d and then reference them with an include. Sadly samba does not support wildcard includes so you have to do add something like:

include = /etc/smb/includes.conf

in your smb.conf and then generate the includes.conf with something like:

ls /etc/smb/smb.d/* | sed -e 's/^/include = /' > /etc/smb/includes.conf

For a bit more context:

chicks@silver 23:57:23 smb !531 $ ls smb.d
a.conf  c.conf  e.conf
chicks@silver 23:57:29 smb !532 $ ls /etc/smb/smb.d/* | sed -e 's/^/include = /' > /etc/smb/includes.conf
chicks@silver 23:57:40 smb !533 $ cat includes.conf 
include = /etc/smb/smb.d/a.conf
include = /etc/smb/smb.d/c.conf
include = /etc/smb/smb.d/e.conf

So now you can stick any additional samba configs into /etc/smb/smb.d, regenerate includes.conf and restart samba and life is good.