[Samba] samba-tool crashes if include = /patch/to/%U.conf in smb.conf

Rowland Penny rowlandpenny at googlemail.com
Tue Jul 15 03:44:18 MDT 2014


On 15/07/14 10:36, Quentin Gibeaux wrote:
> Forgot to reply to list…
>
> On 15/07/2014 11:33, Quentin Gibeaux wrote:
>> On 15/07/2014 11:25, Rowland Penny wrote:
>>> On 15/07/14 08:35, Quentin Gibeaux wrote:
>>>> Hi,
>>>>
>>>> Samba4 (4.1.9) on Ubuntu 12.04 here (seen same behavior on 4.1.6 on 
>>>> Ubuntu 14.04).
>>>>
>>>> I've encountered an annoying bug with samba-tool, some exceptions 
>>>> aren't caught causing the tool to crash if it finds something it 
>>>> doesn't like in the smb.conf.
>>>> I have a specific line in my conf : "include = 
>>>> /etc/samba/%U.smb.conf ", it's useful for applying specific samba 
>>>> configuration for a specific user, it works on the samba side, but 
>>>> when samba-tool reads the conf, it crashs :
>>>>
>>>> root at server:~/samba# samba-tool user list
>>>> Processing section "[global]"
>>>> (…)
>>>> Can't find include file /etc/samba/%U.smb.conf
>>>> params.c:pm_process() - Failed. Error returned from params.c:parse().
>>>> pm_process() returned No
>>>> ERROR(runtime): uncaught exception - Unable to load default file
>>>> File "/usr/lib/python2.7/dist-packages/samba/netcmd/__init__.py", 
>>>> line 175, in _run
>>>> return self.run(*args, **kwargs)
>>>> File "/usr/lib/python2.7/dist-packages/samba/netcmd/user.py", line 
>>>> 261, in run
>>>> lp = sambaopts.get_loadparm()
>>>> File "/usr/lib/python2.7/dist-packages/samba/getopt.py", line 92, 
>>>> in get_loadparm
>>>> self._lp.load_default()
>>>>
>>>> In fact it crashes for any include with any variable substitution 
>>>> (%U, %g, %a…).
>>>>
>>>> Any ideas ?
>>>>
>>>> Thanks,
>>>>
>>>> Quentin Gibeaux
>>>
>>> The problem here is that samba-tool parses smb.conf even if it 
>>> doesn't really need to and samba4 doesn't understand %U etc.
>> So why not catching the exception, printing "Warning, smb4 doesn't 
>> handle variable substitution" and continue ?

I do not know, care to come up with a patch to do this?

>>> If you just want a list of users and have ldb-tools installed, try 
>>> this:
>>>
>>> ldbsearch -H /var/lib/samba/private/sam.ldb 
>>> "(&(objectClass=user)(!(objectClass=computer)))" samaccountname | 
>>> grep sAMAccountName | sed "s|sAMAccountName: ||"
>>>
>> That's not why i have this include. I've a file in etc/samba : 
>> thespecialuser.conf, and smbd (i use s3fs and not ntvfs) applies the 
>> conf when it is this specific user that accesses to the shares.
>>

Ah, I take it that you have never heard of ACL's and you are trying to 
limit permissions on the share via your extra conf file.

Rowland

>>> Rowland
>>
>



More information about the samba mailing list