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

207 Commits

Author SHA1 Message Date
Andrew Bartlett
7cad781455 Cope with non-unix accounts - we just won't get the groups for those users.
Andrew Bartlett
-
Andrew Bartlett
d8122cee05 Based orginally by work by Kai, this patch moves our NT_TOKEN generation into
our authenticaion code - removing some of the duplication from the current
code.

This also gets us *much* closer to supporting a real SAM backend, becouse the
SAM can give us the right info then.

This also changes our service.c code, so that we do a VUID (rather than uid)
cache on the connection struct, and do full NT ACL/NT_TOKEN checks (or cached
equivilant) on every packet, for the same r or rw mode the whole share was open
for.

Andrew Bartlett
-
Jelmer Vernooij
6a787a695d fix typo auth/auth_server.c
remove unused 'max packet' and 'packet size' options
-
Andrew Bartlett
f393de2310 Make 'remote_machine' private to lib/substitute.c, and fix all the user to use
the new accessor functions.

Andrew Bartlett
-
Andrew Tridgell
e358d7b24c This fixes a number of ADS problems, particularly with netbiosless
setups.

- split up the ads structure into logical pieces. This makes it much
  easier to keep things like the authentication realm and the server
  realm separate (they can be different).

- allow ads callers to specify that no sasl bind should be performed
(used by "net ads info" for example)

- fix an error with handing ADS_ERROR_SYSTEM() when errno is 0

- completely rewrote the code for finding the LDAP server. Now try DNS
  methods first, and try all DNS servers returned from the SRV DNS
  query, sorted by closeness to our interfaces (using the same sort code
  as we use in replies from WINS servers). This allows us to cope with
  ADS DCs that are down, and ensures we don't pick one that is on the
  other side of the country unless absolutely necessary.

- recognise dnsRecords as binary when displaying them

- cope with the realm not being configured in smb.conf (work it out
  from the LDAP server)

- look at the trustDirection when looking up trusted domains and don't
  include trusts that trust our domains but we don't trust
  theirs.

- use LDAP to query the alternate (netbios) name for a realm, and make
  sure that both and long and short forms of the name are accepted by
  winbindd. Use the short form by default for listing users/groups.

- rescan the list of trusted domains every 5 minutes in case new trust
  relationships are added while winbindd is running

- include transient trust relationships (ie. C trusts B, B trusts A,
  so C trusts A) in winbindd.

- don't do a gratuituous node status lookup when finding an ADS DC (we
  don't need it and it could fail)

- remove unused sid_to_distinguished_name function

- make sure we find the allternate name of our primary domain when
  operating with a netbiosless ADS DC (using LDAP to do the lookup)

- fixed the rpc trusted domain enumeration to support up to approx
  2000 trusted domains (the old limit was 3)

- use the IP for the remote_machine (%m) macro when the client doesn't
  supply us with a name via a netbios session request (eg. port 445)

- if the client uses SPNEGO then use the machine name from the SPNEGO
  auth packet for remote_machine (%m) macro

- add new 'net ads workgroup' command to find the netbios workgroup
  name for a realm
-
Andrew Bartlett
78f0d4337b Let everybody enjoy my new toy - make it the default!
Authenticaions will now attempt to use winbind, and only fall back to
'ntdomain' (the old security=domain) code if that fails (for any reason,
including wrong password).

I'll fix up the authenticaion code to better handle the different types of
failures in the near future.

Andrew Bartlett
-
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 Tridgell
ab144cd8af the ads_connect() here doesn't need to actually succeed, as its only
needed to find the DC IP. Just don't check its return value!
-
Jim McDonough
f70886df94 Fix the build for now..
Tridge, please look at this.  Did you mean to take out the last parm?
-
Andrew Tridgell
fc0d5479b5 net ads info now reports the IP of the LDAP server as well as its name - very useful in scripts -
Andrew Tridgell
d3fecdd042 a couple more minor tweaks. This now allows us to operate in ADS mode
without any 'realm =' or 'ads server =' options at all, as long as DNS
is working right.
-
Andrew Tridgell
5a11c432af 2nd try at a fix for netbiosless connections to a ADS DC. This also
make the code a fair bit cleaner as it splits up the ADS and RPC
cases, which really are very different.
-
Andrew Tridgell
fd02adab54 removed a gratuitous standard_sub_basic() on the 'password server'
field. This has got to be pointless.
-
Andrew Tridgell
72042e94ef - if we are in ADS mode then avoid an expensive netbios lookup to find
the servers netbios name when we don't need it. This also fixes ADS
  mode when the DC has netbios disabled.

- if the password server is specified as an IP then actually use that
  IP, don't do a lookup for the servers name :)
-
Simo Sorce
69765e4faa found nasty bug in intl/lang_tdb.c tdb structure was not tested to not be null before close
this one fixes swat not working with browsers that set more then one language.

along the way implemented language priority in web/neg_lang.c with bubble sort

also changet str_list_make to be able to use a different separator string

Simo.
-
Tim Potter
277f6bbb9a Renamed all the new_cli_netlogon_* functions to cli_netlogon_*
as they're no longer new!
-
Andrew Bartlett
8196ee908e Try to fix up warnings - particularly on the IRIX 64 bit compiler (which had a
distinction between uchar and char).

Lots of const etc.

Andrew Bartlett
-
Andrew Bartlett
07e2b36311 Add support for a weird behaviour apparently used by Win9X pass-through
authentication - we can have an NT hash in the LM hash feild.

(I need to double-check this fix with tpot, who discovered it).

Also remove silly casts back and forth between uchar and char.

Andrew Bartlett
-
Andrew Bartlett
656f1d68e8 NT_STATUS_UNSUCCESSFUL just gets clients confused - move to NO_LOGON_SERVERS
becouse thats what Win2k gives when the PDC is down.

Some of these might better go to other errors, but the Win2k text message for
'unsuccessful' is not particularly useful.  (A device attached to the system is
not functioning...)

Andrew Bartlett
-
Andrew Bartlett
6e22f39df8 Make it clear that the debug comment is the same as the command being tested
for failure.

Andrew Bartlett
-
Jeremy Allison
17cae0d683 Address the string_sub problem by changing len = 0 to mean "no expand".
Went through and checked all string_subs I could to ensure they're being
used correctly.
Jeremy.
-
Andrew Bartlett
23689b0746 Update cli_full_connection() to take a 'flags' paramater, and try to get a
few more places to use it.

Andrew Bartlett
-
Andrew Bartlett
87eba4c811 Try to get security=domain at least slightly working.
The previous code both had basic logic flaws in it, and some subtle
issues regarding the Win2k info3 response.

I've tested this against Samba (it looks like that was missed last time
due to the 'called name' corruption - which broke my testsuite) and
accomidated what I've seen from a info3 printout jmcd gave me.

I'll get this tested fully as soon as I get my VMware going again.

Andrew Bartlett
-
Andrew Bartlett
9b0dabdf4e This patch does 2 things:
It extends the 'server mutex' to conver security=server, becouse the connection
race condition exists here too, and while people *should* use security=domain,
some sites don't....

(This probably should be done in 2.2 as well).

Also, start to actually extract and use the information that the remote
server returns in the info3 struct.

The server mutex code is now in a new file.

Andrew Bartlett
-
Andrew Bartlett
622e6b64df Add another 'trivial' built in authentication module - this one is a
deveopers hack to always send a fixed challange, for the benifit
of tutorials and packet sniffing etc.

Enabling this module removes all security, so its a --enable-developer
option.

Andrew Bartlett
-
Andrew Bartlett
9fe8da6dd1 It appears that to match NT we should not use the 'samstrict' behaviour,
and that local accounts are perfectly fine.
-
Simo Sorce
4ae260adb9 moved lp_list_* functions away from param/loadparm.c, put int lib/util_str.c
and renamed to str_list_* as it is a better name.
Elrond should be satisfied now :)
-
Tim Potter
bfd8a33c68 Spelling. -
Tim Potter
de18c785ab Spelling fixes. -
Jeremy Allison
3c05f7c06f More cleanup work preparing for SMB signing.
Jeremy.
-
Tim Potter
3d0f4acad2 Spelling fixes. -
Andrew Bartlett
cdcfe3671e Clean up a few unused functions, add a bit of static etc.
Importantly:

The removal of the silly 'delete user script' behaviour when secuity=domain.

I have left the name the same - as it still does the (previously documented,
but not in smb.conf(5)) sane behaviour of deleting users on request.

When we decide what to do with the 'add user' functionality, we might
rename it.

Andrew Bartlett
-
Andrew Bartlett
c92f4f4d72 Name the authentication modules, and therfore fix up both the build farm
and secuirty=server.

I *love* automated testing...

Andrew Bartlett
-
Andrew Bartlett
c205b18bd6 Remove the password length paramater from cli_full_connection - it really
didn't make any sense, and its was always just strlen(password) anyway.

This fixes it to be strlen(password)+1

Andrew Bartlett
-
Andrew Bartlett
3897cf5e04 Move the authenticaion subsystem over to the same 'module:options' syntax
that the passdb code now uses.  Similarly, move the 'pluggable' stuff
over from passdb as well, allowing runtime loading of new authenticaion
modules.

(NOTE:  The interfaces here can *and do* change - module writers are
not assured source-level compatibilty, and certainly not binary
compatibility).
-
Andrew Bartlett
31e074cea5 Nobody uses this function, and there really doesn't seem much point to
it, so we may as well reduce the complexity.

Andrew Bartlett
-
Andrew Bartlett
302dad4990 Cleanups!
Make some code static, add some const to the PAM code, and make the plaintext
password code actually function - particulary without the requirement to
modify the 'struct passwd' (which it assumed was made up of fstrings)

This kills some particularly ugly code in lib/util_pw.c

Andrew Bartlett
-
Simo Sorce
5b3b65aafe typo day :-( -
Simo Sorce
d222bc8c4b typo, sorry -
Simo Sorce
ae5d24873a debug classized -
Jeremy Allison
d162b6285d Ensure auth requests from the same machine are completely serialized.
NT4.x DC's require this.
Jeremy.
-
Andrew Bartlett
0bdd94cb99 Partly based on the work by mimir (Rafal Szczesniak
<mimir@diament.ists.pwr.wroc.pl>) this patch allows samba to correctly
enumerate its trusted domains - by exaimining the keys in the secrets.tdb file.

This patch has been tested with both NT4 and rpcclient/wbinfo, and adds
some extra functionality to talloc and rpc_parse to allow it to deal with
already unicode strings.

Finally, this cleans up some const warnings that were in net_rpc.c by pushing
another dash of const into the rpc client code.

Andrew Bartlett
-
Tim Potter
423985ed56 Spelling. -
Jeremy Allison
e144c174ea Moved debug messages for grabbing/releasing mutex.
Jeremy.
-
Jeremy Allison
1b9f1a368f Don't hold the mutex for more than 20 seconds.
Jeremy.
-
Tim Potter
a5ac2ac4ad Spelling fixes. -
Andrew Bartlett
aa5f125bc0 Extra parinoa and DEBUG()s for the make_user_info_map() code. -
Tim Potter
1f007d3ed4 Renamed get_nt_error_msg() to nt_errstr(). -
Andrew Bartlett
f81882fc95 Ensure we never use "" as a domain name (Win9X apparently does this for 'net use' duirng login).
Picked up from a post to a TNG list by Volker.

Andrew Bartlett
-
Andrew Bartlett
ac8c24a9a8 Allow Samba to trust NT4 Domains.
This commit builds on the auth subsystem to give Samba support for trusting NT4
domains.  It is off by default, but is enabled by adding 'trustdomain' to the
'auth methods' smb.conf paramater.

Tested against NT4 only - there are still some issues with the join code for
Win2k servers (spnego stuff).

The main work TODO involves enumerating the trusted domains (including the RPC
calls to match), and getting winbind to run on the PDC correctly.

Similarly, work remains on getting NT4 to trust Samba domains.

Andrew Bartlett
-