[Pkg-samba-maint] Bug#726472: Bug#726472: share passwords not working after upgrade from samba3

Andrew Bartlett abartlet at samba.org
Wed Oct 30 20:26:43 UTC 2013

On Wed, 2013-10-30 at 10:22 +0100, Ivo De Decker wrote:
> Hi Andrew,
> On Wed, Oct 30, 2013 at 11:34:25AM +1300, Andrew Bartlett wrote:
> > > That'll also cause some confusion though, as those files will be in
> > > sysstatedir on debian but in privatedir on other systems...
> > 
> > I'm not sure that will work either.  There are really only 3 databases
> > that matter, because schannel_store.tdb will eventually regenerate
> > (client machines forced to 'log in' with a NETLOGON
> > serverAuthenticate). 
> > 
> > passdb.tdb, secrets.tdb, idmap2.tdb. 
> We don't necessarily need to move them all at the same time (although moving
> only some of them would probably cause even more confusion).
> > passdb.tdb is what is tripping us up and got us here, but secrets.tdb
> > will cause us more pain in 'fixing' this.  
> > 
> > The issue is secrets.tdb must be in the same directory as secrets.ldb,
> > because we keep them in sync when secrets.ldb is updated.  This allows
> > -P to work in tools no matter the code origin. 
> Is secrets.tdb used outside of smbd? The only case I know of is smbpasswd,
> running as root, so that shouldn't be an issue. If there are no other uses
> outside smbd, there is no race condition when we move it in samba.postinst,
> because smbd won't be running.

Yes, it is.  Any passdb interaction will first try to generate a domain
SID in secrets.tdb.

> As for idmap2.tdb, it seems that's only being used from winbindd, and from the
> net command, running as root. So if we move that in winbind.postinst, it
> should be fine too.

That is much more likely to be safe. 

> If these assumptions are correct (can someone confirm that?), we only need to
> deal with passdb.tdb. If we can find a way to work around that race condition,
> we could do that move as well.

Could we ensure the pam module is disabled in .preinst and conditionally
re-installed in a .postinst?

Also, is this .postinst on the right package anyway?  Shouldn't it be on
whatever package actually references passdb.tdb, such as samba-libs
(presumably that owns libpdb)?

Andrew Bartlett

Andrew Bartlett
Authentication Developer, Samba Team           http://samba.org
Samba Developer, Catalyst IT                   http://catalyst.net.nz

More information about the Pkg-samba-maint mailing list