7e394400eefd0e7c5ba0c64ab3fa28bee21ef2d7 |
|
28-Nov-2016 |
Sumit Bose <sbose@redhat.com> |
krb5: Use command line arguments instead env vars for krb5_child
Resolves:
https://fedorahosted.org/sssd/ticket/697
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com> |
fedfb7c62b4efa89d18d0d3a7895a2a34ec4ce42 |
|
08-Sep-2016 |
Jakub Hrozek <jhrozek@redhat.com> |
KRB5: Send the output username, not internal fqname to krb5_child
krb5_child calls krb5_kuserok() during the access phase which checks if
a particular user is allowed to authenticate as a particular principal.
We used to pass the internal fqname to krb5_kuserok() which broke the
functionality and all users were denied access.
This patch changes that to send the 'output' username to krb5_child,
because that's the username the system receives through getpwnam() or
getpwuid() anyway. The patch also adds a new structure member fo the
krb5child_req structure to avoid reusing the pd->user variable but have
an explicit one that serves as the input for the child process.
Resolves:
https://fedorahosted.org/sssd/ticket/3172
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com> |
45e11be651dbd3855a35de4abd2922e5b9d4b963 |
|
31-May-2016 |
Jakub Hrozek <jhrozek@redhat.com> |
Do not leak fds in case of failures setting up a child process
Resolves:
https://fedorahosted.org/sssd/ticket/3006
The handling of open pipes in failure cases was suboptimal. Moreover,
the faulty logic was copied all over the place. This patch introduces
helper macros to:
- initialize the pipe endpoints to -1
- close an open pipe fd and set it to -1 afterwards
- close both ends unless already closed
These macros are used in the child handling code.
The patch also uses child_io_destructor in the p11_child code for safer
fd handling.
Reviewed-by: Petr Cech <pcech@redhat.com> |
de8815aba87d08b6b7ac5d502dcb1755787e0857 |
|
19-May-2016 |
Jakub Hrozek <jhrozek@redhat.com> |
UTIL: exit() the forked process if exec()-ing a child process fails
When exec() fails, we should not attempt to continue, but just kill the
forked process. The patch adds this logic to the exec_child() and
exec_child_ex() functions to avoid code duplication
Resolves:
https://fedorahosted.org/sssd/ticket/3016
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com> |
9dcc7dbf04466cd8cd90aa0bb8acbebef9aca832 |
|
19-Jan-2016 |
Sumit Bose <sbose@redhat.com> |
UTIL: allow to skip default options for child processes
Currently the SSSD default options like e.g. --debug-level are added
unconditionally to the command line options of a child process when
started with the child helper functions.
If a binary from a different source should be started as a child by SSSD
those options might not be known or used differently. This patch adds an
option to exec_child_ex() which allows to skip the default options and
only add specific options.
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com> |
9f0bffebd070115ab47a92eadc6890a721c7b78d |
|
31-Aug-2015 |
Michal Židek <mzidek@redhat.com> |
sssd: incorrect checks on length values during packet decoding
https://fedorahosted.org/sssd/ticket/1697
It is safer to isolate the checked (unknown/untrusted)
value on the left hand side in the conditions
to avoid overflows/underflows.
Reviewed-by: Petr Cech <pcech@redhat.com> |
4b1b2e60d0764fed289eada9a7afbfd1993cadcd |
|
08-May-2015 |
Sumit Bose <sbose@redhat.com> |
krb5-child: add preauth and split 2fa token support
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com> |
f3d91181d4ee9da3f8bbf4ddf8782951c0ae46c1 |
|
15-Jan-2015 |
Jakub Hrozek <jhrozek@redhat.com> |
UTIL: Unify the fd_nonblocking implementation
The responder and child_common modules each had their own
implementation. Unify it instead and add a unit test.
Reviewed-by: Pavel Březina <pbrezina@redhat.com> |
16cb0969f0a9ea71524d852077d6a480740d4f12 |
|
13-Jan-2015 |
Jakub Hrozek <jhrozek@redhat.com> |
UTIL: Allow dup-ing child pipe to a different FD
Related to:
https://fedorahosted.org/sssd/ticket/2544
Adds a new function exec_child_ex and moves setting the extra_argv[]
to exec_child_ex() along with specifying the input and output fds.
Reviewed-by: Sumit Bose <sbose@redhat.com> |
543d1652e0185abadd5d8b45c718a3db96cd2828 |
|
03-Dec-2014 |
Jakub Hrozek <jhrozek@redhat.com> |
KRB5: Create the fast ccache in a child process
Related:
https://fedorahosted.org/sssd/ticket/2503
In order to avoid calling Kerberos library calls as root, the krb5_child
forks itself and recreates the FAST ccache as the SSSD user.
Reviewed-by: Sumit Bose <sbose@redhat.com> |
b4f87b42b18888c396e44e7359f7aafb092221bf |
|
03-Dec-2014 |
Jakub Hrozek <jhrozek@redhat.com> |
Add extra_args to exec_child()
Related:
https://fedorahosted.org/sssd/ticket/2503
Currently all child processes use the same arguments, the construction
of argv[] is even hardcoded in exec_child(). Add an extra_args[] array
that extends the common set of argvs so that we can have child-specific
arguments. Also adds a unit test.
Reviewed-by: Sumit Bose <sbose@redhat.com> |
2745b0156f12df7a7eb93d57716233243658e4d9 |
|
18-Nov-2014 |
Jakub Hrozek <jhrozek@redhat.com> |
KRB5: Move all ccache operations to krb5_child.c
The credential cache operations must be now performed by the krb5_child
completely, because the sssd_be process might be running as the sssd
user who doesn't have access to the ccaches.
src/providers/krb5/krb5_ccache.c is still linked against libsss_krb5
until we fix Kerberos ticket renewal as non-root.
Also includes a new error code that indicates that the back end should
remove the old ccache attribute -- the child can't do that if it's
running as the user.
Related:
https://fedorahosted.org/sssd/ticket/2370
Reviewed-by: Sumit Bose <sbose@redhat.com>
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com> |
476b78b3f66abc7a0f805154ea1a29f54628224a |
|
18-Nov-2014 |
Jakub Hrozek <jhrozek@redhat.com> |
KRB5: Drop privileges in the child, not the back end
In future patches, sssd_be will be running as a non-privileged user, who
will execute the setuid krb5_child. In this case, the child will start
as root and drop the privileges as soon as possible.
However, we need to also remove the privilege drop in sssd_be, because
if we dropped to the user who is authenticating, we wouldn't be even
allowed to execute krb5_child. The krb5_child permissions should be
4750, owned by root.sssd, to make sure only root and sssd can execute
the child and if executed by sssd, the child will run as root.
Related:
https://fedorahosted.org/sssd/ticket/2370
Reviewed-by: Sumit Bose <sbose@redhat.com>
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com> |
06f10b2a0ebb26f2460cd445f8040e9205de7500 |
|
05-Nov-2014 |
Jakub Hrozek <jhrozek@redhat.com> |
UTIL: Remove code duplication of struct io
We had struct io and the associated destructor copied twice in the code
already and need it again in the SELinux provider. Instead of adding
another copy, move the code to a shared subtree under util/
Reviewed-by: Michal Židek <mzidek@redhat.com> |
83bf46f4066e3d5e838a32357c201de9bd6ecdfd |
|
12-Feb-2014 |
Nikolai Kondrashov <Nikolai.Kondrashov@redhat.com> |
Update DEBUG* invocations to use new levels
Use a script to update DEBUG* macro invocations, which use literal
numbers for levels, to use bitmask macros instead:
grep -rl --include '*.[hc]' DEBUG . |
while read f; do
mv "$f"{,.orig}
perl -e 'use strict;
use File::Slurp;
my @map=qw"
SSSDBG_FATAL_FAILURE
SSSDBG_CRIT_FAILURE
SSSDBG_OP_FAILURE
SSSDBG_MINOR_FAILURE
SSSDBG_CONF_SETTINGS
SSSDBG_FUNC_DATA
SSSDBG_TRACE_FUNC
SSSDBG_TRACE_LIBS
SSSDBG_TRACE_INTERNAL
SSSDBG_TRACE_ALL
";
my $text=read_file(\*STDIN);
my $repl;
$text=~s/
^
(
.*
\b
(DEBUG|DEBUG_PAM_DATA|DEBUG_GR_MEM)
\s*
\(\s*
)(
[0-9]
)(
\s*,
)
(
\s*
)
(
.*
)
$
/
$repl = $1.$map[$3].$4.$5.$6,
length($repl) <= 80
? $repl
: $1.$map[$3].$4."\n".(" " x length($1)).$6
/xmge;
print $text;
' < "$f.orig" > "$f"
rm "$f.orig"
done
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Reviewed-by: Stephen Gallagher <sgallagh@redhat.com>
Reviewed-by: Simo Sorce <simo@redhat.com> |
a3c8390d19593b1e5277d95bfb4ab206d4785150 |
|
12-Feb-2014 |
Nikolai Kondrashov <Nikolai.Kondrashov@redhat.com> |
Make DEBUG macro invocations variadic
Use a script to update DEBUG macro invocations to use it as a variadic
macro, supplying format string and its arguments directly, instead of
wrapping them in parens.
This script was used to update the code:
grep -rwl --include '*.[hc]' DEBUG . |
while read f; do
mv "$f"{,.orig}
perl -e \
'use strict;
use File::Slurp;
my $text=read_file(\*STDIN);
$text=~s#(\bDEBUG\s*\([^(]+)\((.*?)\)\s*\)\s*;#$1$2);#gs;
print $text;' < "$f.orig" > "$f"
rm "$f.orig"
done
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Reviewed-by: Stephen Gallagher <sgallagh@redhat.com>
Reviewed-by: Simo Sorce <simo@redhat.com> |
07270cd9739b942c63602ef57c513c6a50e6f7ee |
|
22-Jan-2014 |
Pavel Reichl <preichl@redhat.com> |
krb5: hint to increase krb5_auth_timeout
Resolves:
https://fedorahosted.org/sssd/ticket/2202 |
fe521d1ad610920ce5411589a158157d6a5f0794 |
|
09-Jan-2014 |
Alexander Bokovoy <ab@samba.org> |
FAST: when parsing krb5_child response, make sure to not miss OTP message if it was last one
The last message in the stream might be with empty payload which means we get
only message type and message length (0) returned, i.e. 8 bytes left remaining
in the stream after processing preceding message. This makes our calculation at
the end of a message processing loop incorrect -- p+2*sizeof(int32_t) can be
equal to len, after all.
Fixes FAST processing for FreeIPA native OTP case:
https://fedorahosted.org/sssd/ticket/2186 |
84fbb0cad534308254a8a8ad837d1924496cfe71 |
|
15-Nov-2013 |
Michal Zidek <mzidek@redhat.com> |
krb5: Alignment warning reported by clang
Do not store address from byte buffer into pointer
of diffrent type!
https://fedorahosted.org/sssd/ticket/1359 |
b9dadaa81c2d08fc6857442d557a145c45a93b52 |
|
23-Sep-2013 |
Sumit Bose <sbose@redhat.com> |
krb5: do not expand enterprise principals is offline
Expanding a principle to an enterprise principal only makes sense if
there is a KDC available which can process it. If we are offline the
plain principal should be used, e.g. to create an expired ccache.
Fixes https://fedorahosted.org/sssd/ticket/2060 |
937928d1161a4f7bd894cb365ada97569ab0f78f |
|
11-Sep-2013 |
Lukas Slebodnik <lslebodn@redhat.com> |
Fix formating of variables with type: time_t |
0e65abe5cf2abf5d4b431cf6bd161b419f07901d |
|
11-Sep-2013 |
Lukas Slebodnik <lslebodn@redhat.com> |
Fix formating of variables with type: size_t |
71e234151ddc6b50576364c30bda2b72264b1083 |
|
11-Sep-2013 |
Lukas Slebodnik <lslebodn@redhat.com> |
Fix formating of variables with type: ssize_t |
48657b5de36a63b0c13ed5d53065871d59d8f10b |
|
23-Jul-2013 |
Jakub Hrozek <jhrozek@redhat.com> |
KRB5: Do not send PAC in server mode
The krb5 child contacts the PAC responder for any user except for the
IPA native users if the PAC is configured. This works fine for the
general case but the ipa_server_mode is a special one. The PAC responder
is there, but since in the server mode we should be operating as AD
provider default, the PAC shouldn't be analyzed either in this case. |
08e3f641a8b8d6b5d7eb0b523599702eda960da2 |
|
22-Jul-2013 |
Lukas Slebodnik <lslebodn@redhat.com> |
Fix warnings: uninitialized variable |
711bba7e2f72a816774effa389ad13bcc46e7843 |
|
17-Jul-2013 |
Pavel Březina <pbrezina@redhat.com> |
SIGCHLD handler: do not call callback when pvt data where freed
https://fedorahosted.org/sssd/ticket/1992 |
695cc8754aecb3dcc3a617d86b7d4b6470af175d |
|
25-Jun-2013 |
Sumit Bose <sbose@redhat.com> |
krb5: do not use enterprise principals for renewals
When renewing a ticket we already know the canonical principal hence it
is not needed to expand it to an enterprise principal but we can contact
the KDC of the corresponding realm directly. |
fa4a9c4afcc0c62a693034e21f33356e64735687 |
|
25-Jun-2013 |
Sumit Bose <sbose@redhat.com> |
krb5: do not send pac for IPA users from the local domain
So far we didn't send the PAC of IPA users to the PAC responder during
password authentication because group memberships for IPA users can be
retrieved efficiently with LDAP calls. Recently patches added PAC
support for the AD provider as well and removed the restriction for the
IPA users. This patch restores the original behaviour by introducing a
new flag in struct krb5_ctx which is only set for the IPA provider.
Additionally a different flag is renamed to make it's purpose more
clear.
Fixes https://fedorahosted.org/sssd/ticket/1995 |
1de61a60ea50700ef687969b0b70d53907994255 |
|
24-Jun-2013 |
Sumit Bose <sbose@redhat.com> |
Fix typo in pack_authtok() |
edaa983d094c239c3e1ba667bcd20ed3934be3b8 |
|
22-Apr-2013 |
Sumit Bose <sbose@redhat.com> |
Allow usage of enterprise principals
Enterprise principals are currently most useful for the AD provider and
hence enabled here by default while for the other Kerberos based
authentication providers they are disabled by default.
If additional UPN suffixes are configured for the AD domain the user
principal stored in the AD LDAP server might not contain the real
Kerberos realm of the AD domain but one of the additional suffixes which
might be completely randomly chooses, e.g. are not related to any
existing DNS domain. This make it hard for a client to figure out the
right KDC to send requests to.
To get around this enterprise principals (see
http://tools.ietf.org/html/rfc6806 for details) were introduced.
Basically a default realm is added to the principal so that the Kerberos
client libraries at least know where to send the request to. It is not
in the responsibility of the KDC to either handle the request itself,
return a client referral if he thinks a different KDC can handle the
request or return and error. This feature is also use to allow
authentication in AD environments with cross forest trusts.
Fixes https://fedorahosted.org/sssd/ticket/1842 |
9acfb09f7969a69f58bd45c856b01700541853ca |
|
02-Apr-2013 |
Lukas Slebodnik <lslebodn@redhat.com> |
Making the authtok structure really opaque.
Definition of structure sss_auth_token was removed from header file
authtok.h and there left only declaration of this structure.
Therefore only way how to use this structure is to use accessory function from
same header file.
To creating new empty authotok can only be used newly created function
sss_authtok_new(). TALLOC context was removed from copy and setter functions,
because pointer to stuct sss_auth_token is used as a memory context.
All declaration of struct sss_auth_token variables was replaced with
pointer to this structure and related changes was made in source code.
Function copy_pam_data can copy from argument src which was dynamically
allocated with function create_pam_data() or zero initialized struct pam_data
allocated on stack.
https://fedorahosted.org/sssd/ticket/1830 |
9f37bb2012faa136ef7c1f9fe93689ce2be85637 |
|
13-Mar-2013 |
Ondrej Kos <okos@redhat.com> |
Fix initialization of multiple variables |
b40583c6d52b72e41bf01106534535e54b4fba4f |
|
08-Mar-2013 |
Nathaniel McCallum <npmccallum@redhat.com> |
Add support for krb5 1.11's responder callback.
krb5 1.11 adds support for a new method for responding to
structured data queries. This method, called the responder,
provides an alternative to the prompter interface.
This patch adds support for this method. It takes the password
and provides it via a responder instead of the prompter. In the
case of OTP authentication, it also disables the caching of
credentials (since the credentials are one-time only). |
64af76e2bef2565caa9738f675c108a4b3789237 |
|
10-Jan-2013 |
Simo Sorce <simo@redhat.com> |
Change pam data auth tokens.
Use the new authtok abstraction and interfaces throught the code. |
d3dca30d3a6feba062d0299718d1a9fcdc8b9d17 |
|
26-Oct-2012 |
Sumit Bose <sbose@redhat.com> |
krb5_child: send back the client principal
In general Kerberos is case sensitive but the KDC of Active Directory
typically handles request case in-sensitive. In the case where we guess
a user principal by combining the user name and the realm and are not
sure about the cases of the letters used in the user name we might get a
valid ticket from the AD KDC but are not able to access it with the
Kerberos client library because we assume a wrong case.
The client principal in the returned credentials will always have the
right cases. To be able to update the cache user principal name the
krb5_child will return the principal for further processing. |
916674f6c54a64980f181790befe861a6e2b8daf |
|
26-Oct-2012 |
Sumit Bose <sbose@redhat.com> |
krb5_auth: send different_realm flag to krb5_child
The different_realm flag which was set by the responder is send to the
krb5_child so that it can act differently on users from other realms. To
avoid code duplication and inconsistent behaviour the krb5_child will
not set the flag on its own but use the one from the provider. |
8bbf89c5ab798c112773fe23515c3a9df56dde71 |
|
18-Jul-2012 |
Nick Guay <nguay@redhat.com> |
Fix uninitialized values
https://fedorahosted.org/sssd/ticket/1379 |
92c6d2bbff680c3f4a83fbb1360eed098e7bcf2e |
|
09-Jul-2012 |
Stephen Gallagher <sgallagh@redhat.com> |
Fix uninitialized memcpy error
Coverity #12784 |
7b14a9e64fd248103149eb1cb422ee752d91ba58 |
|
14-Jun-2012 |
Jakub Hrozek <jhrozek@redhat.com> |
Split parse_krb5_child_response so it can be reused
krb5-child-test will be another consumer. It also makes the code more
readable by splitting a huge function. |
248a24eda712d738127897264290ad1b751faf12 |
|
14-Jun-2012 |
Jakub Hrozek <jhrozek@redhat.com> |
Allow redefining the KRB5_CHILD path
The krb5-child-test will want to run the child from the current
directory. |
87c07559af5cfcd2752295ef7c425bd3205f426f |
|
19-Dec-2011 |
Stephen Gallagher <sgallagh@redhat.com> |
Move child_common routines to util |
f3f9ce8024d7610439d6c70ddafab1ab025cf8a8 |
|
03-Dec-2010 |
Sumit Bose <sbose@redhat.com> |
Add support for automatic Kerberos ticket renewal |
369983d509540d8289e62675c6cf7009f964abd7 |
|
03-Dec-2010 |
Sumit Bose <sbose@redhat.com> |
Send authtok_type to krb5_child |
b87233035e26cee919dcf46adaec29ba7fdaa51e |
|
04-Nov-2010 |
Sumit Bose <sbose@redhat.com> |
Make handle_child_* request public
I took the opportunity to move everything related to the handling of the
krb5_child into a separate file and cleaned the interfaces and related
structures a bit. |