Segmentation fault with smbpasswd

Micah micahjon at ywave.com
Tue Jul 11 18:32:58 UTC 2006


Thierry Lacoste wrote:
> On Tuesday 11 July 2006 18:24, Micah wrote:
>> Thierry Lacoste wrote:
>>> I'm running FreeBSD 6.1-RELEASE and installed samba-3.0.22,1
>>> from a relatively recent snapshot or /usr/ports.
>>>
>>> Here is the global section of my /usr/local/etc/smb.conf:
>>>
>>> [global]
>>>         workgroup = OFFICE
>>>         server string = Samba Server
>>>         passdb backend = tdbsam
>>>         logon script = scripts\logon.bat
>>>         logon path = \\%L\Profiles\%U
>>>         logon drive = H:
>>>         logon home = \\%L\%U
>>>         domain logons = Yes
>>>         os level = 35
>>>         preferred master = Yes
>>>         domain master = Yes
>>>
>>> After a fresh install of samba smbpasswd gives this:
>>> [root at aldebaran ~]# smbpasswd -a admin
>>> New SMB password:
>>> Retype new SMB password:
>>> Unable to open/create TDB passwd
>>> Unable to open/create TDB passwd
>>> pdb_getsampwnam: TDB passwd (/usr/local/private/passdb.tdb) did not
>>> exist. File successfully created.
>>> Segmentation fault: 11 (core dumped)
>>>
>>> Then it gives this:
>>> [root at aldebaran ~]# smbpasswd -a admin
>>> New SMB password:
>>> Retype new SMB password:
>>> Unable to open/create TDB passwd
>>> pdb_getsampwnam: Unable to open TDB passwd
>>> (/usr/local/private/passdb.tdb)! account_policy_get: tdb_fetch_uint32
>>> failed for field 1 (min password length), returning 0
>>> account_policy_get: tdb_fetch_uint32 failed for field 2 (password
>>> history), returning 0
>>> account_policy_get: tdb_fetch_uint32 failed for field 3 (user must logon
>>> to change password), returning 0
>>> account_policy_get: tdb_fetch_uint32 failed for field 4 (maximum password
>>> age), returning 0
>>> account_policy_get: tdb_fetch_uint32 failed for field 5 (minimum password
>>> age), returning 0
>>> account_policy_get: tdb_fetch_uint32 failed for field 6 (lockout
>>> duration), returning 0
>>> account_policy_get: tdb_fetch_uint32 failed for field 7 (reset count
>>> minutes), returning 0
>>> account_policy_get: tdb_fetch_uint32 failed for field 8 (bad lockout
>>> attempt), returning 0
>>> account_policy_get: tdb_fetch_uint32 failed for field 9 (disconnect
>>> time), returning 0
>>> account_policy_get: tdb_fetch_uint32 failed for field 10 (refuse machine
>>> password change), returning 0
>>> TDBSAM version too old (0), trying to convert it.
>>> TDBSAM converted successfully.
>>> Added user admin.
>>>
>>> After that, samba seems to work properly.
>>>
>>> If I touch /usr/local/private/passdb.tdb after a fresh install of samba
>>> I have directly the second behavior (no segfault) and then again samba
>>> is operational.
>>>
>>> What did I miss?
>>>
>>> Regards,
>>> Thierry.
>> You possibly found a bug in the port. Contact the maintainer or file a pr.
>>
>> HTH,
>> Micah
> Thanks. I did contact the maintainer.
> 
> I tried with FreeBSD 6.0-RELEASE and samba-3.0.14a_1,1 from the ToolKit disk.
> When I first use smbpasswd I only have the account_policy_get failures
> (no segfault).
> 
> BTW I searched the web about the account_policy_get failures but couldn't
> find any explanation exept that it is safe to ignore those messages when
> smbpasswd is used for the first time.
> Can someone shed some light on them?
> 
> Regards,
> Thierry.
> 

My guess, without looking at the source code, is that smbpasswd tries to 
access passwddb.tbd before adding the first password. Since the file is 
empty, it's an invalid file and generates errors.

HTH,
Micah


More information about the freebsd-questions mailing list