1
0
mirror of https://github.com/samba-team/samba.git synced 2025-12-18 08:23:51 +03:00
Commit Graph

82 Commits

Author SHA1 Message Date
Andrew Bartlett
fe50ca8f54 Updates to the NTLMSSP code again - moving the base64 decode fuctionality out
of the SWAT code, and adding a base64 encoder.

The main purpose of this patch is to add NTLMSSP support to 'ntlm_auth', for
use with Squid.  Unfortunetly the squid side doesn't quite support what we need
yet.

Changes to winbind to get us the info we need, and a couple of consequential
changes/cleanups in the rest of the code.

Andrew Bartlett
-
Tim Potter
089729c02c Merge of remove "winbindd holding pattern" from appliance. It's a bit
simpler as the rescanning of trusted domains helps us out a bit.
-
Gerald Carter
4c48c475a2 patch to include support for daemontools from Michael Handler -
Andrew Bartlett
92a777d0ea BIG patch...
This patch makes Samba compile cleanly with -Wwrite-strings.
 - That is, all string literals are marked as 'const'.  These strings are
always read only, this just marks them as such for passing to other functions.

What is most supprising is that I didn't need to change more than a few lines of code (all
in 'net', which got a small cleanup of net.h and extern variables).  The rest
is just adding a lot of 'const'.

As far as I can tell, I have not added any new warnings - apart from making all
of tdbutil.c's function const (so they warn for adding that const string to
struct).

Andrew Bartlett
-
Jeremy Allison
842e08e52a Forward port the change to talloc_init() to make all talloc contexts
named. Ensure we can query them.
Jeremy.
-
Andrew Bartlett
13b9af53bf Remove extra headers, and ensure that we correctly bail out of winbindd if we
can't create the socket.

Andrew Bartlett
-
Andrew Bartlett
e4be82e4e2 After consultation with tpot, remove the 'winbind_domain' environment
variable hack, the feild on the pipe, and the server-side.

It only controlled some enum operations in any case.

This is to try and have less 'magic' environment variables.

Andrew Bartlett
-
Andrew Bartlett
47f3bfe956 Having waited for *way* too long, this is mimir's namecache and trusted domain
cache code.

This uses gencache, mimir's new caching code that stores at text-based cache
of various data.

Mimir has done a *lot* of work on this patch, and it is finally time to
get it in CVS.

Andrew Bartlett
-
Tim Potter
2beebe252f Bug fix from appliance - we must initialise the winbindd server state
before reading smb.conf parameters, not after.
-
Jeremy Allison
82b8f749a3 Removed global_myworkgroup, global_myname, global_myscope. Added liberal
dashes of const. This is a rather large check-in, some things may break.
It does compile though :-).
Jeremy.
-
Andrew Bartlett
81633064dd Compleatly remove support for logfile truncation. All logs are opened for
append writes.

(blessed by jra)

Andrew Bartlett
-
Tim Potter
8a6d377521 Call winbindd_param_init() earlier on in the piece so we don't get stuck in
the holding pattern when started up when security = user or security = ads.

Clean up return value of winbindd_common_init() - what a mess!
-
Tim Potter
846b549494 Some winbindd cleanups I made trying to fix cr1020:
- move winbindd client handling into accessor functions in
   winbindd_util.c

 - move some winbindd socket routines into accessor functions in
   winbindd_utils.c

(The deadlock situation mentioned in the appliance branch is probably
not applicable since we don't clear the connection cache on SIGHUP.
Perhaps we should?)
-
Andrew Tridgell
14489ff30b - we need to rescan the trusted domain list regularly to cope with
transitive trusts, and trusts that are added while winbindd is running

- removed an unnecessary call to time()
-
Jeremy Allison
042890056d Change to use sys_read/sys_write.
Jeremy.
-
Jeremy Allison
f8a0e6ad8b Reverted my earlier change. It was incorrect. We must be protected by
pidfile before doing secrets_init().
Jeremy.
-
Jeremy Allison
ffb7632d05 Only create the pidfile once we're ready to receive requests.
This allows external programs to correctly synchronise with us.
Jeremy.
-
Tim Potter
e63afabf98 Put pid number in invalid request size debug. -
Tim Potter
86433a3492 Fix typo in debug. -
Tim Potter
dad31483b3 Merge of netbios namecache code from APPLIANCE_HEAD.
Tridge suggested a generic caching mechanism for Samba to avoid the
proliferation of little cache files hanging around limpet like in the
locks directory.  Someone should probably implement this at some
stage.
-
Andrew Bartlett
167f122b67 Winbind updates!
This updates the 'winbind' authentication module and winbind's 'PAM' (actually
netlogon) code to allow smbd to cache connections to the DC.

This is particulary relevent when we need mutex locks already - there is no
parallelism to be gained anyway.

The winbind code authenticates the user, and if successful, passes back the
'info3' struct describing the user.  smbd then interprets that in exactly the
same way as an 'ntdomain' logon.

Also, add parinoia to winbind about null termination.

Andrew Bartlett
-
Andrew Bartlett
897cc4a610 Another smattering of static and const -
Andrew Tridgell
e3f73256d3 this is a trick to work around the fact that posix does not supply
a getgr*() function that lists groups without numerating all the
group members. Instead of definiing a new nss method (which might
cause problems) I added an environment variable WINBIND_GETGRLST
that tells winbind not to fill in the group members in a gergrent()
request. This can speed up group listing by a factor of 20 or more
(on my test system with 50000 groups it reduces the time from an hour
to 2 minutes)
-
Jeremy Allison
2c1e787024 Merge pidfile fix.
Jeremy.
-
Tim Potter
1c3c0d7cb6 Merge of secrets_init() paranoia fix from 2.2 -
Andrew Tridgell
fdfde9b84c main() needs to be indented to make sure it doesn't generate a
prototype
-
Andrew Tridgell
c0feff97ee a new "dual daemon" operating mode for winbindd
this mode improves the response time of winbindd by having a
background process update the cache while the forground process
responds to queries from cache.

You can enable this mode using the -B command line option. It is quite
experimental, which is why it is not the default.
-
Jeremy Allison
a9895fcb30 Tidy up winbindd debug. Added Bill Moran's hide unreadable fix.
Jeremy.
-
Jeremy Allison
b2350ed36c Fix up conversion code from old winbindd versions (some testing needed).
Added time based cache size check (#ifdef'ed out by default, just didn't
want to lose the code).
Jeremy.
-
Herb Lewis
205399dc17 merge winbindd WINS changes from 2.2 -
Tim Potter
f1cb5ff6c4 Unblock sigusr1 on startup. -
Tim Potter
144f0481c8 Added code for smb messaging. winbindd now responds to the smbcontrol
ping, debug and pool-usage messages.
-
Andrew Tridgell
d6a4a10f58 added a -h usage option to winbindd -
Jeremy Allison
cad82926a8 Now we have reliable signals take SIGTERM inband.
Jeremy.
-
Andrew Tridgell
e84c740017 fixed a memory leak thanks to dleducq@arkoon.net -
Jeremy Allison
3af16ade17 Fix from Michael Steffens <michael_steffens@hp.com> to make signal
processing work correctly in winbindd. This is a really good patch
that gives full select semantics to the Samba modified select.
Jeremy.
-
Andrew Tridgell
bcd234a3da added 'wbinfo --sequence' to show sequence numbers of all domains -
Tim Potter
6a58c9bd06 Removed version number from file header.
Changed "SMB/Netbios" to "SMB/CIFS" in file header.
-
Andrew Bartlett
ce1b4d4c30 Change the winbind interface to use seperate 'domain' and 'username' feilds for
the sid->uid and uid->sid conversions.

Remove some duplicate arguments from these funcitons, and update the
request/response structures for this and the 'winbind domain name' feature.

As such 'winbindd_lookup_name' now takes both a domain and username.
-
Tim Potter
fa05a7de6d Call pidfile_create() as part of init sequence. -
Jeremy Allison
1bd96b3094 Fix to close winbindd_idmap on exit. Pointed out by Alexander Bokovoy.
Jeremy.
-
Andrew Bartlett
e6a3a01f79 I'm doing some things towards the NamedPipes game with lckl and he has asked me
to move this from being a static to matching its mate in lib/util_sock.c.

In any case, this should discorage anybody from using the 'wrong' version of
this function.  (ie the one from TNG, which needs a bit more error checking
depending on use).

Andrew Bartlett
-
Andrew Bartlett
80c2aefbe7 Many thanks to Alexander Bokovoy <a.bokovoy@sam-solutions.net>.
This work was sponsored by Optifacio Software Services, Inc.

Andrew Bartlett

(various e-mails announcements merged into some form of commit message below:)

This patch which adds basics of universal groups support
into Samba 3. Currently, only Winbind with RPC calls supports this, ADS
support requires additional (possibly huge) work on KRB5 PAC. However,
basic infrastructure is here.

This patch adds:

1. Storing of universal groups for particular user logged into Samba
software (smbd/ two winbind-pam methods) into netlogon_unigrp.tdb as array
of uint32 supplemental group rids keyed as DOMAIN_SID/USER_RID in tdb.

2. Fetching of unversal groups for given user rid and domain sid from
netlogon_unigrp.tdb.

Since this is used in both smbd and winbindd, main code is in
source/lib/netlogon_uingrp.c. Dependencies are added to AUTH_OBJ as
UNIGRP_OBJ and WINBINDD_OBJ as UNIGRP_OBJ.

This patch has had a few versions, the final version in particular:

Many thanks to Andrew Bartlett for critics and comments, and partly
rewritten code.

New:
- updated fetching code to changed byte order macros
- moved functions to proper namespace
- optimized memory usage by reusing caller's memory context
- enhanced code to more follow Samba coding rules

Todo:
- proper universal group expiration after timeout
-
Tim Potter
37216c649a Always query the PDC for the list of trusted domains rather than interating
the list received at startup or we get an out of date list.  I thought
there might be some sequence number that is incremented when a trusted
domain is added or removed - perhaps there is but I just haven't found it
yet.

 - Renamed get_domain_info() to init_domain_list()

 - Made an accessor function to return the list of trusted domains rather
   than using a global so we don't have to remember to put a magic init
   function

 - The getent state can not keep a pointer to a winbind_domain structure as
   it may be freed if init_domain_list() is called again so we keep the
   domain name instead
-
Tim Potter
a4af65b9b9 Since AB has been changing the winbind interface it's time to add the "mock
swedish" test to client calls.  This is putting a length field at the
start of a request so we can disconnect clients talking with an out of date
libnss_winbind.so rather than deadlock them.

Misc cleanups:

 - made some int values uint32
 - moved WINBIND_INTERFACE_VERSION to start of cmd list
-
Andrew Bartlett
2bd2a092ee Return the winbind separator over the socket, so programs don't have to parse
smb.conf to get it right.

While wb_client needs its lp_load() for samba dependency reasons, it now uses
the new method both to example and test the new code.

Also add an interface version function, and return the winbind's samba version
string.

In preperation for default domains, its now up to winbindd to reject plaintext
auths that don't have a seperator, but NTLM (CRAP) auths now have two feilds,
hence need parsing.

Andrew Bartlett
-
Andrew Bartlett
6df29bfe33 This changes the winbind protcol a bit:
It adds a 'ping' request, just to check winbind is in fact alive

It also changes winbindd_pam_auth_crap to take usernames and domain seperatly.

(backward incompatible change, needs merge to 2.2, but this is not yet released
code, so no workarounds)

Finally, it adds some debugs and fixes a few memory leaks (uses talloc to do
it).

Andrew Bartlett
-
Tim Potter
eeb8af9c1a A big tidyup while thinking about getting trusted domains being re-read
when they are added or removed on the PDC.

 - renamed GETPWNAM_FROM_{UID,USER} constants and functions to GETPW{NAM,UID}

 - renamed GETGRNAM_FROM_{GID,GROUP} constants and functions to GETGR{NAM,GID}

 - use SIGUSR2 in winbindd for debugging/logging instead of SIGUSR1 in
   preparation for moving to smbcontrol type messages (not sure whether to
   ditch this altogether or not)

 - tidy debugging messages in top level winbind user and group routines

 - convert talloc_init() to talloc_init_named()

 - make enumerations of the domain list use the same local variable names
-
Jeremy Allison
fffae94dd5 When running interactive we want to set our own process group for
signal management.
Jeremy.
-
Tim Potter
54d2765615 Append to log.winbindd instead of overwriting it so we are consistent with
smbd/nmbd behaviour.
-