1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-23 09:57:40 +03:00

183 Commits

Author SHA1 Message Date
Günther Deschner
0f436eab5b r22666: Expand kerberos_kinit_password_ext() to return NTSTATUS codes and make
winbindd's kerberized pam_auth use that.

Guenther
2007-10-10 12:19:54 -05:00
Stefan Metzmacher
fa322f0cc9 r22001: change prototype of dump_data(), so that it takes unsigned char * now,
which matches what samba4 has.

also fix all the callers to prevent compiler warnings

metze
2007-10-10 12:18:59 -05:00
Günther Deschner
947a59a849 r21887: Fix annoying bug where in a pam_close_session (or a pam_setcred with the
PAM_DELETE_CREDS flag set) any user could delete krb5 credential caches.
Make sure that only root can do this.

Jerry, Jeremy, please check.

Guenther
2007-10-10 12:18:44 -05:00
Volker Lendecke
e1fbfbe1c4 r21873: This is winbindd_pam.c, not pam_winbind.c :-) 2007-10-10 12:18:41 -05:00
Volker Lendecke
fcec3d1c46 r21872: Fix a debug message 2007-10-10 12:18:41 -05:00
Gerald Carter
505fc669a1 r21860: Fixes for "winbind normalize names" functionality:
* Fix getgroups() call called using a normalized name
* Fix some more name mappings that could cause for example
  a user to be unable to unlock the screen as the username
  would not match in the PAM authenticate call.
2007-10-10 12:18:39 -05:00
Günther Deschner
a6c249b592 r21537: Avoid to trigger the confusing "cached entry differs." warning when
there is just no cache around for a user.

Guenther
2007-10-10 12:18:11 -05:00
Günther Deschner
c3005c48cd r21500: Fix inappropriate creation of a krb5 ticket refreshing event when a user
changed a password via pam_chauthtok. Only do this if

a) a user logs on using an expired password (or a password that needs to
be changed immediately) or

b) the user itself changes his password.

Also make sure to delete the in-memory krb5 credential cache (when a
user did not request a FILE based cred cache).

Finally honor the krb5 settings in the first pam authentication in the
chauthtok block (PAM_PRELIM_CHECK). This circumvents confusion when
NTLM samlogon authentication is still possible with the old password after
the password has been already changed (on w2k3 sp1 dcs).

Guenther
2007-10-10 12:18:08 -05:00
Günther Deschner
b2f9115482 r21318: Fix Bug #4225.
Cached logon with pam_winbind should work now also for NT4 and samba3
domains.

Guenther
2007-10-10 12:17:56 -05:00
Günther Deschner
7e1a84b722 r21240: Fix longstanding Bug #4009.
For the winbind cached ADS LDAP connection handling
(ads_cached_connection()) we were (incorrectly) assuming that the
service ticket lifetime equaled the tgt lifetime. For setups where the
service ticket just lives 10 minutes, we were leaving hundreds of LDAP
connections in CLOSE_WAIT state, until we fail to service entirely with
"Too many open files".

Also sequence_number() in winbindd_ads.c needs to delete the cached LDAP
connection after the ads_do_search_retry() has failed to submit the
search request (although the bind succeeded (returning an expired
service ticket that we cannot delete from the memory cred cache - this
will get fixed later)).

Guenther
2007-10-10 12:17:50 -05:00
Gerald Carter
4aca986489 r21009: Patch from Danilo Almeida @ Centeris (via me).
Patch details:

Support most options in pam_winbind.conf; support comma-separated names in
require-membership-of.  Details below:

1) Provides support for almost all config options in pam_winbind.conf
   (all except for use_first_pass, use_authtok, and unknown_ok).

 - That allows us to work well when invoked via call_modules from
   pam_unix2.conf as well as allowing use of spaces in names used
   w/require_membership_of.

2) Support for comma-separated list of names or SID strings in
   require_membership_of/require-membership-of.

 - Increased require_membership_of field in winbind request from fstring
   (256) to pstring (1024).

 - In PAM side, parse out multiple names or SID strings and convert
   all of them to SID strings.

 - In Winbind side, support membership check against multiple SID strings.
2007-10-10 12:17:26 -05:00
Gerald Carter
262bb80e9c r20905: Windows 2000 returns NT_STATUS_ACCOUNT_RESTRICTION if the pw
chnage fails due to policy settings where as 2003 (the chgpasswd3()
request) fails with NT_STATUS_PASSWORD_RESTRICTION.  Thunk down
to the same return code so we correctly retreive the password policy
in both cases.
2007-10-10 12:17:18 -05:00
Volker Lendecke
1ef910f423 r20725: Get rid of a bool passed down -- gd, please check 2007-10-10 12:17:07 -05:00
Günther Deschner
668b278653 r20687: Implement grace logons for offline authentications in pam_winbind.
In case a user authenticated sucessfully and his password just expired
while beeing disconnected, we should allow a user to logon (given a
clear warning). We currently forced the user into a password change
dialogue in that scenario; this did not make much sense while offline.

Guenther
2007-10-10 12:17:02 -05:00
Günther Deschner
2d2de1ac27 r20254: The pam_chauthtok needs to go through the async interface as well.
This fixes pam password changes in the online case.

Guenther
2007-10-10 12:16:37 -05:00
Jeremy Allison
4a74c55384 r20180: Ensure that pam returns the correct error messages
when offline and or doing password changes.
Jeremy.
2007-10-10 12:16:30 -05:00
Günther Deschner
a1378979be r20171: Don't delete the krb5 credential if others still reference to it.
Guenther
2007-10-10 12:16:29 -05:00
Jeremy Allison
dbd2454d33 r19207: Properly canonicalize incoming names to the
NSS protocols auth, chauthtok, logoff, ccache_ntlm_auth.
That way we ensure winbindd only deals with fully
qualified names internally. The NSS protocols
auth_crap and chng_pswd_auth_crap should be fixed
to do the same thing.
Jeremy.
2007-10-10 12:15:21 -05:00
Jeremy Allison
40a455db78 r19148: Finish last nights patch - make offline
work again. Still under test.
Jeremy.
2007-10-10 12:15:16 -05:00
Günther Deschner
2a605a0b17 r18871: Fix copy/paste mixup.
Guenther
2007-10-10 12:14:40 -05:00
Günther Deschner
8006cf962b r18710: Prevent that our offline cache can get outdated after a password change.
Guenther
2007-10-10 12:00:50 -05:00
Jeremy Allison
a9f1151407 r18551: Implement a 30 seconds from startup, during which we
try hard to connect a DC even if we might be offline.
Jeremy.
2007-10-10 11:51:49 -05:00
Gerald Carter
3da9f80c28 r18271: Big change:
* autogenerate lsa ndr code
* rename 'enum SID_NAME_USE' to 'enum lsa_SidType'
* merge a log more security descriptor functions from
  gen_ndr/ndr_security.c in SAMBA_4_0

The most embarassing thing is the "#define strlen_m strlen"
We need a real implementation in SAMBA_3_0 which I'll work on
after this code is in.
2007-10-10 11:51:18 -05:00
Günther Deschner
576488933b r18259: Fix the non-krb5 builds.
Guenther
2007-10-10 11:51:18 -05:00
Jeremy Allison
04fe034f4a r18239: THIS IS GUENTHER'S WORK !!! He's allowing me to merge
this at the moment as I'm working on this area. Thanks
a lot Guenther.
Add the capability to get krb5 tickets even if we
log on in the offline state and have to cache
the credentials. Once we go online we should
start getting krb5 tickets again. Currently
this code waits until lp_winbind_cache_time()
seconds (5 minutes by default) before getting
tickets. This is correct in the DC down case,
but not in the global offline -> online case.
I'll later add a trigger to force an immediate refresh
on the offline -> online state transition.
Jeremy.
2007-10-10 11:51:17 -05:00
Jelmer Vernooij
1115745cae r18188: merge 3.0-libndr branch 2007-10-10 11:43:56 -05:00
Günther Deschner
95788cb291 r18158: Stop winbindd from accumulating memory creds infinitely when doing
pam offline logons.

Guenther
2007-10-10 11:43:29 -05:00
Jeremy Allison
1b2aa17354 r18062: Fix to ensure the name used by pam matches the
name that will be returned by winbindd. This
(should) fix the bug where the user logs in
with DOMAIN\user but winbindd returns only
"user" for the username due to 'winbind use
default domain' being set.
Jeremy.
2007-10-10 11:43:24 -05:00
Volker Lendecke
30df6cb65f r18028: Fix warnings on non-krb5 systems 2007-10-10 11:43:23 -05:00
Jeremy Allison
310ac0b226 r17897: Store the uid in the memory creds. Don't request the
krb5 refresh creds when doing cached NTLM auth, request
the memory creds instead.
Jeremy.
2007-10-10 11:38:57 -05:00
Jeremy Allison
679eeeb911 r17837: Split out the storing of memory cached credentials
from the krb5 ticket renewal code. This allows cached
credentials to be stored for single sign-on via ntlm_auth
for machines in a domain still using NTLM. Also (hopefully)
fixes the reference counting problem with pam_logon/logoff
so multiple logons/logoffs won't lose cached credentials.
This compiles, but I'm intending to test it over the weekend
so don't complain too much :-). I also want it in the tree
so Coverity can scan it for errors. Guenther, check this over
please - I ran through the architecture with Jerry and he's
ok with it, but this is modifying your code a lot.
Jeremy.
2007-10-10 11:38:53 -05:00
Gerald Carter
43bd8c00ab r17723: * BUG 3969: Fix unsigned time comparison with expiration policy from AD DC
* Merge patches from SLES10 to make sure we talk to the correct
  winbindd process when performing pam_auth (and pull the password policy info).
2007-10-10 11:38:46 -05:00
Jeremy Allison
89d0163a97 r17617: Take Andrew Bartletts excellent advice and don't store
the nt hash directly in the winbindd cache, store a
salted version (MD5 of salt + nt_hash). This is what
we do in the LDAP password history code. We store
this salted cache entry under the same name as an old
entry (CRED/<sid>) but detect it on read by checking
if there are 17 bytes of data after the first stored
hash (1 byte len, 16 bytes hash). GD PLEASE CHECK.
Jeremy.
2007-10-10 11:38:43 -05:00
Jeremy Allison
ae7cc298a1 r17610: Added the ability for firefox to drive the winbindd
ntlm_auth module to allow it to use winbindd cached
credentials.The credentials are currently only stored
in a krb5 MIT environment - we need to add an option to
winbindd to allow passwords to be stored even in an NTLM-only
environment.
Patch from Robert O'Callahan, modified with some fixes
by me.
Jeremy.
2007-10-10 11:38:43 -05:00
Volker Lendecke
05268d7a73 r17605: Some C++ warnings 2007-10-10 11:38:42 -05:00
Andrew Bartlett
967292b713 r17005: Add a new helper mode to ntlm_auth: ntlm-change-password-1
This mode proxies pre-calculated blobs from a remote (probably VPN)
client into the domain.  This allows clients to change their password
over a PPTP connection (where they would not be able to connect to
SAMR directly).

The precalculated blobs do not reveal the plaintext password.

Original patch by Alexey Kobozev <cobedump@gmail.com>
2007-10-10 11:19:17 -05:00
Jeremy Allison
4e7262c81a r16610: Subtle one from Klocwork #2076. If multiple flags
are set in a winbindd request it might overwrite existing
state->response.extra_data.data values without freeing.
Jeremy.
2007-10-10 11:19:03 -05:00
Günther Deschner
5853525f11 r16480: (Ugly) workaround before the set_dc_type_flags & friends cleanup:
When trying to login using krb5 with a trusted domain account, we
need to make sure that our and the remote domain are AD.

Guenther
2007-10-10 11:18:56 -05:00
Günther Deschner
520777f794 r16473: There is no point in calling set_dc_type_and_flags() before each
pam_auth login (when using kerberos).

Guenther
2007-10-10 11:18:55 -05:00
Günther Deschner
216125fe13 r15983: Honour the krb5 principal name change (of the new ads join code) in the
kerberized winbind pam_auth.

Guenther
2007-10-10 11:17:16 -05:00
Günther Deschner
3f5a2e49c1 r15982: Fix confusing order of DEBUG statements in winbindds pam_auth.
Guenther
2007-10-10 11:17:16 -05:00
Jeremy Allison
2e65fcc9de r15539: Use portable wrapper functions instead of seteuid
directly in winbindd.
Jeremy.
2007-10-10 11:16:56 -05:00
Günther Deschner
a75dd80c62 r15523: Honour the time_offset also when verifying kerberos tickets. This
prevents a nasty failure condition in winbindd's pam_auth where a tgt
and a service ticket could have been succefully retrieved, but just not
validated.

Guenther
2007-10-10 11:16:55 -05:00
Günther Deschner
7f64a66d25 r15398: Attempt to send the correct warning when a password change was attempted
too early.

Guenther
2007-10-10 11:16:40 -05:00
Günther Deschner
7420b09507 r15396: Cleanup credential caches from winbind's linked list.
Guenther
2007-10-10 11:16:39 -05:00
Günther Deschner
8b2ba11508 r15240: Correctly disallow unauthorized access when logging on with the
kerberized pam_winbind and workstation restrictions are in effect.

The krb5 AS-REQ needs to add the host netbios-name in the address-list.

We don't get the clear NT_STATUS_INVALID_WORKSTATION code back yet from
the edata of the KRB_ERROR but the login at least fails when the local
machine is not in the workstation list on the DC.

Guenther
2007-10-10 11:16:29 -05:00
Günther Deschner
77407c0219 r15229: Save useless roundtrips in pam_auth (fallback to samlogon) when we know
that the DC is not available.

Guenther
2007-10-10 11:16:29 -05:00
Gerald Carter
a95d11345e r15053: fix portabilities issues between 32-bit winbind clients and a 64-bit winbindd server 2007-10-10 11:16:00 -05:00
Günther Deschner
25a2fb3896 r14753: Fix the kerberized pam_auth: As we could have created a new credential
cache with a valid TGT in it but we werent able to get or verify the
service ticket for this local host afterwards and therefor didn't get
the PAC, we need to remove that ccache entirely.

Also remove an ugly pair of (not needed) seteuid calls around the ticket
destroy wrapper.

Guenther
2007-10-10 11:15:45 -05:00
Günther Deschner
24afdda2ae r14674: Further cleanup for cached logins, only dump hashes with DEBUG_PASSWORD.
Guenther
2007-10-10 11:15:43 -05:00