1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-25 23:21:54 +03:00
Commit Graph

170 Commits

Author SHA1 Message Date
Andrew Bartlett
1a74d8d1f0 This is another *BIG* change...
Samba now features a pluggable passdb interface, along the same lines as the
one in use in the auth subsystem.  In this case, only one backend may be active
at a time by the 'normal' interface, and only one backend per passdb_context is
permitted outside that.

This pluggable interface is designed to allow any number of passdb backends to
be compiled in, with the selection at runtime.  The 'passdb backend' paramater
has been created (and documented!) to support this.

As such, configure has been modfied to allow (for example) --with-ldap and the
old smbpasswd to be selected at the same time.

This patch also introduces two new backends:  smbpasswd_nua and tdbsam_nua.
These two backends accept 'non unix accounts', where the user does *not* exist
in /etc/passwd.  These accounts' don't have UIDs in the unix sense, but to
avoid conflicts in the algroitmic mapping of RIDs, they use the values
specified in the 'non unix account range' paramter - in the same way as the
winbind ranges are specifed.

While I was at it, I cleaned up some of the code in pdb_tdb (code copied
directly from smbpasswd and not really considered properly).  Most of this was
to do with % macro expansion on stored data.  It isn't easy to get the macros
into the tdb, and the first password change will 'expand' them.  tdbsam needs
to use a similar system to pdb_ldap in this regard.

This patch only makes minor adjustments to pdb_nisplus and pdb_ldap, becouse I
don't have the test facilities for these.  I plan to incoroprate at least
pdb_ldap into this scheme after consultation with Jerry.

Each (converted) passdb module now no longer has any 'static' variables, and
only exports 1 init function outside its .c file.

The non-unix-account support in this patch has been proven!  It is now possible
to join a win2k machine to a Samba PDC without an account in /etc/passwd!

Other changes:

Minor interface adjustments:
pdb_delete_sam_account() now takes a SAM_ACCOUNT, not a char*.

pdb_update_sam_account() no longer takes the 'override' argument that was being
ignored so often (every other passdb backend).  Extra checks have been added in
some places.

Minor code changes:
smbpasswd no longer attempts to initialise the passdb at startup, this is
now done on first use.

pdbedit has lost some of its 'machine account' logic, as this behaviour is now
controlled by the passdb subsystem directly.

The samr subsystem no longer calls 'local password change', but does the pdb
interactions directly.  This allow the ACB_ flags specifed to be transferred
direct to the backend, without interference.

Doco:

I've updated the doco to reflect some of the changes, and removed some paramters
no longer applicable to HEAD.
(This used to be commit ff354c99c5)
2002-01-20 14:30:58 +00:00
Jeremy Allison
3a851587f8 Ensure we log tdb open fails. Patch from Alexander Bokovoy <a.bokovoy@sam-solutions.net>
Jeremy.
(This used to be commit eb99e7f29c)
2002-01-18 02:15:04 +00:00
Jeremy Allison
d3e9213af7 Move SAFE_FREE into tdb.c to stop exporting it into tdb.h namespace.
Jeremy.
(This used to be commit 4f703b84cd)
2002-01-09 18:26:39 +00:00
Jeremy Allison
af85c2f062 Added int32 version of "atomic" update.
Jeremy.
(This used to be commit 1233b553e7)
2002-01-09 01:53:19 +00:00
Jeremy Allison
b6f4f3465f Added int32 versions of the endian-dependent code.
Jeremy.
(This used to be commit d57fb9a8c2)
2002-01-09 01:32:17 +00:00
Jeremy Allison
eca99f5c22 Fixed nasty cast of tdb_delete in traversals.
Jeremy.
(This used to be commit a0cdec3acc)
2002-01-03 22:48:48 +00:00
Jeremy Allison
4178f211d1 debug statement fixups.
Merge SAFE_FREE fix in tdb from 2.2, and IRIX fix.
Jeremy.
(This used to be commit eb66074665)
2002-01-02 23:28:55 +00:00
Andrew Tridgell
84ecd95dba more irix -64 portability fixes
(This used to be commit 65e857b36e)
2001-12-31 14:05:22 +00:00
Martin Pool
93b5fb3175 Ignore torture.tdb
(This used to be commit 79feca4d25)
2001-12-20 07:22:54 +00:00
Andrew Tridgell
6c7e9dfb29 net ads password and net ads chostpass commands from Remus Koos
(This used to be commit 412e79c448)
2001-12-20 03:54:52 +00:00
Jeremy Allison
e0d3a9e443 Must check against -1 for fcntl error check.
Jeremy
(This used to be commit 1d2504b5c7)
2001-12-13 02:34:43 +00:00
Herb Lewis
e4553718bb add *.po32 to ignore list
(This used to be commit fe0db4c55f)
2001-12-12 16:04:37 +00:00
Jeremy Allison
9bb0a964bf Fix up warnings. Make tdb_openXX() names const.
Jeremy.
(This used to be commit 9e3581827d)
2001-12-11 08:31:58 +00:00
Jeremy Allison
dd324a5357 Tidyups to remove warnings on tdb standalone code.
Jeremy.
(This used to be commit b03aaddcf3)
2001-12-11 08:24:36 +00:00
Martin Pool
6f151481da Doc.
(This used to be commit 6c684c89a4)
2001-12-10 07:29:34 +00:00
Martin Pool
ebc1f6fda3 Allow for internal databases which may have no name.
(This used to be commit caa08bb56e)
2001-12-10 07:27:20 +00:00
Martin Pool
dd9bdec3aa Log more error messages.
(This used to be commit 8118676f78)
2001-12-10 07:02:58 +00:00
Martin Pool
98d6d8cf9c Log more error messages.
(This used to be commit b50e566ab9)
2001-12-10 07:02:24 +00:00
Martin Pool
8c31fd48c8 Allocate tdb name up front in case log functions want to use it.
(This used to be commit a228c7efcc)
2001-12-10 06:09:42 +00:00
Martin Pool
ddeecec1f8 tdb_open_ex: More cleanups: just dynamically allocate the TDB_CONTEXT
up front, rather than working on the stack and then copying across.
(This used to be commit b1d7d80068)
2001-12-10 05:29:47 +00:00
Martin Pool
dddef5d5b2 Refactor code to check whether already open into its own function.
(This used to be commit 52ef112e10)
2001-12-10 05:22:04 +00:00
Martin Pool
77d800fb3e tdb_open_ex should always "goto fail" in case of error, rather than
just returning.  I don't think this would leak at the moment, but it's
an accident waiting to happen.
(This used to be commit fe901ec194)
2001-12-10 05:12:52 +00:00
Martin Pool
70f27f1b52 Doc.
(This used to be commit bb6c0df4bc)
2001-12-10 05:08:22 +00:00
Martin Pool
5fea33ab58 tdb_open_ex: Continue previous refactoring so that we consistently
just say "tdb" not "&tdb".
(This used to be commit fac685d30f)
2001-12-10 05:05:21 +00:00
Martin Pool
ce654f5e55 tdb_open_ex: Refactor to use a pointer to tdb, rather than an auto
tdb, to be consistent with the rest of the code.
(This used to be commit d159415049)
2001-12-10 05:00:36 +00:00
Tim Potter
aeb734a8fa Formatting fixup.
(This used to be commit d902baf709)
2001-12-10 04:59:17 +00:00
Andrew Tridgell
bd062b1856 added a simple tdbdump utility
(This used to be commit c4f5a6c65d)
2001-12-09 07:49:20 +00:00
Jean-François Micouleau
791788ea9d changed the DEBUG level of tdb_pack and tdb_unpack. Instead of 8, it's now
18.

when you're looking at a level 10, and it's all clutered with
tdb_pack/unpack, it's getting .... And anyway most of our code using
tdb_pack/unpack have DEBUG around the call if there is a problem.

	J.F.
(This used to be commit 7e20fad5ed)
2001-12-05 15:45:36 +00:00
Jeremy Allison
20fdf28178 Tidup.
Jeremy.
(This used to be commit 837f2b961b)
2001-12-04 18:37:14 +00:00
Martin Pool
84c19504d0 Put back changes to set errno, which seem to do no harm.
(This used to be commit 3dbb5dfcfb)
2001-12-04 13:21:15 +00:00
Martin Pool
65e1d4a7a5 Fix headers. This I know is correct.
(This used to be commit 58cfea3c2a)
2001-12-04 13:17:22 +00:00
Martin Pool
858f1865df Fix headers. This I know is correct.
(This used to be commit 0c22a10d73)
2001-12-04 12:44:10 +00:00
Martin Pool
84503c81f0 undo
(This used to be commit fc176f15f2)
2001-12-04 11:41:12 +00:00
Martin Pool
28e676d9c3 Implement suggestion from tridge to leave the old tdb_open interface
as it was, and add tdb_open_ex() which takes a log callback.  I guess
this makes more sense since it's a public interface.
(This used to be commit 391a65395e)
2001-12-04 11:25:44 +00:00
Martin Pool
7d9e09f527 Better error handling:
- tdb_open api changed so that you now pass an error handling
   callback when opening the file, so that errors detected during
   opening have somewhere to go.  (All calls from the body of Samba to
   this function go through a wrapper in tdbutil, which has been
   updated.)

 - Clean up logic for deciding how to open tdb.  Emit log messages if
   something goes wrong (e.g. bad magic.)

 - tdbtool now logs errors to stderr.
(This used to be commit 0aa800618e)
2001-12-04 07:40:25 +00:00
Martin Pool
8164fa34d9 Magic file for TDB databases.
(This used to be commit e9085129dd)
2001-12-04 04:03:29 +00:00
Martin Pool
6c3163cc97 Set errno in tdb_open in cases where we detect an error in opening the
database, but no underlying system call sets errno.

The particular case I had was a mangled .tdb, but there are others.
For this one, set EIO.  It's a shame Unix messages aren't more
detailed -- "bad data format" would be better.
(This used to be commit 5630a988be)
2001-12-04 02:58:42 +00:00
Jeremy Allison
15dba42364 Added prototypes for new fns. Thanks Elrond.
Jeremy.
(This used to be commit 2a7bd621b4)
2001-12-03 20:39:15 +00:00
Tim Potter
25ea74978f Don't display any data if tdb_fetch() failed in the tdbtool "fetch"
command.
(This used to be commit a1cf70ab65)
2001-12-03 04:15:26 +00:00
Tim Potter
3171064521 Updated definition of fstring.
print_asc(): Don't try to print a trailing NULL character
print_key(), print_rec(): Display key in ASCII
(This used to be commit 303b3a3595)
2001-12-03 00:23:14 +00:00
Tim Potter
d0ea72d0b7 Added a 'keys' command to tdbtool which prints out all keys in the tdb.
(This used to be commit 1d2305c233)
2001-11-28 03:58:33 +00:00
Tim Potter
e91226daea Removed #ifdef TDB_DEBUG around tdb_dump_all() and tdb_printfreelist()
so that tdbtool can be compiled without having to make clean.
(This used to be commit dad688d8c6)
2001-11-09 01:26:13 +00:00
Jeremy Allison
d96f052603 Don't core dump when using spinlocks on a read-only tdb. Unfortunately this
means that a read-write opener and a read-only opener are using different
locking mechanisms - this needs to be addressed, but it's hard as the
read-write opener using the spinlocks is usually first, so there's no
way to force them to change down to the fcntl method.
Read only access is less important anyway and can never corrupt the
tdb anyway, so errors in read-only record reads are more tolerable.
Jeremy
(This used to be commit 21f776df59)
2001-10-16 22:10:23 +00:00
Jeremy Allison
754c2feee7 Fix for tdb_oob() on TDB_INTERNAL databases.
Jeremy.
(This used to be commit 2b135fba62)
2001-10-12 00:01:35 +00:00
Anton Blanchard
032f65d5ff PPC spinlocks work again. Sorry, my bad.
(This used to be commit 6612abf827)
2001-10-06 10:36:15 +00:00
Jeremy Allison
3a17bab00f Ensure accessing NT member servers works with a Samba PDC. Don't
change these timestamp settings without good reason.
Remove CLEAR_IF_FIRST flag is tdb is read-only.
Jeremy.
(This used to be commit a71d9d98b0)
2001-10-03 22:58:37 +00:00
Andrew Tridgell
c61d1a1679 fixed compilation of tdbtorture
(This used to be commit 2f44756233)
2001-09-27 01:57:02 +00:00
Andrew Tridgell
7ef445e226 tdbtorture updates from when I was trying to track down the hp tdb bug
(This used to be commit b8d9d1fca3)
2001-09-24 04:56:56 +00:00
Jeremy Allison
0ef1acbabb Put pwrite code back in expand_file.
Jeremy.
(This used to be commit a3267551d8)
2001-09-19 06:55:25 +00:00
Andrew Tridgell
2bc9ef3846 added a hook to reopen all tdb's after the server fork
this prevents the fd seek pointer problem
(This used to be commit f49518e497)
2001-09-19 05:43:15 +00:00