Commit Graph
100 Commits
Author SHA1 Message Date
Rob Crittenden 80e87e75bd Add an option for overriding the hostname value.
Ticket 834
2011-01-26 15:53:41 -05:00
Rob Crittenden 5c88225dda Add brackets around optional parameters when prompting.
ticket 832
2011-01-25 17:08:57 -05:00
Rob Crittenden 1229fd5654 Clean up some rpmlint errors in the spec file.
Re-arrange doc and defattr to clean up rpmlint warnings
Remove conditionals on older releases
Move some man pages into admintools subpackage
Remove some explicit Requires in client that aren't needed
Consistent use of buildroot vs RPM_BUILD_ROOT

Ticket 804
2011-01-25 14:01:36 -05:00
Rob Crittenden 678c764d40 Make a copy of objectclasses so a call can't update them globally.
In the host plugin we may change the default objectclasses based on
the options selected. This was affecting it globally and causing
subsequent calls to fail.
2011-01-24 14:35:11 -05:00
Rob Crittenden 96469fbc88 Fix failed tests. API for utcoffset changed and strings are more robust.
In Python 2.7 the API for time.utcoffset() changed.

We do more automatic conversions of strings so need to loosen the tests
a bit.
2011-01-24 14:34:38 -05:00
Rob Crittenden 6e7729726f Block anonymous access to HBAC, role and some member information.
Prevents an unauthenticated user from accessing HBAC and role
information as well as memberof which could disclose roles,
memberships in HBAC, etc.

ticket 811
2011-01-24 14:33:21 -05:00
Rob Crittenden 0637bff95f Fix exception doctest failure 2011-01-24 10:42:16 -05:00
Rob Crittenden 8cc46af050 Remove del-all from dnsrecord_del from API.txt
This was from an unpushed patch I had in my tree.
2011-01-21 16:03:22 -05:00
Rob Crittenden 5f0c52ab97 Add new option to dns_del and always ask permission options to API.txt 2011-01-21 15:13:58 -05:00
Rob Crittenden cf9ec1c427 Update kerberos password policy values on LDAP binds.
On a failed bind this will update krbLoginFailedCount and krbLastFailedAuth
and will potentially fail the bind altogether.

On a successful bind it will zero krbLoginFailedCount and set
krbLastSuccessfulAuth.

This will also enforce locked-out accounts.

See http://k5wiki.kerberos.org/wiki/Projects/Lockout for details on
kerberos lockout.

ticket 343
2011-01-21 13:59:24 -05:00
Rob Crittenden 4361cd0242 Rename INTERNAL to NO_CLI for commands we hide from the cli.
Also make i18n_messages and json_metadata NO_CLI.

ticket 821
2011-01-21 13:56:02 -05:00
Rob Crittenden 35f2f1d720 Improve output when options are not found in non-interactive client install
We should still give some feedback when things go wrong when in
non-interactive mode.

ticket 828
2011-01-21 13:47:55 -05:00
Rob Crittenden fc28fae03f Add some basic filter validation to permissions and disallow empty filters
Try a query with a filter to see if it is at least legal. This doesn't
guarantee that the filter is at all otherwise sane.

ticket 808
2011-01-21 10:47:43 -05:00
Rob Crittenden 886e417fd7 Set the default Int maxvalue to the maximum XML-RPC can handle.
Also handle marshalling errors thrown by xmlrpclib more gracefully.

ticket 770
2011-01-18 10:03:55 -05:00
Rob Crittenden 84ff4ca0f1 Don't require or create the log dirs if we're just validating the API.
Fixes an error displayed in the automated builds, plus we don't want
a Makefile messing around with our homedir.
2011-01-14 17:26:49 -05:00
Rob Crittenden d7bd9138c8 Execute /usr/bin/python directly instead of /usr/bin/env python
ticket 608
2011-01-14 16:27:48 -05:00
Rob Crittenden c69d8084c1 Add API version and have server reject incompatible clients.
This patch contains 2 parts.

The first part is a small utility to create and validate the current
API. To do this it needs to load ipalib which on a fresh system
introduces a few problems, namely that it relies on a python plugin
to set the default encoding to utf8. For our purposes we can skip that.
It is also important that any optional plugins be loadable so the
API can be examined.

The second part is a version exchange between the client and server.
The version has a major and a minor version. The major verion is
updated whenever existing API changes. The minor version is updated when
new API is added. A request will be rejected if either the major versions
don't match or if the client major version is higher than then server
major version (though by implication new API would return a command not
found if allowed to proceed).

To determine the API version of the server from a client use the ping
command.

ticket 584
2011-01-14 14:26:22 -05:00
Rob Crittenden ce169c7fa6 Set minimum version of dogtag to 9
ticket 763
2011-01-14 09:51:01 -05:00
Rob Crittenden 6785283568 python-ldap fails gloriously if the search time limit is 0. Don't allow it.
Don't allow the time limit to be set in the API. Also add a failsafe
in the ldap driver because such bad things happen if this value is 0.
I think it literally spends 0 time on the request and just returns
immediately.

ticket 752
2011-01-14 09:48:07 -05:00
Rob Crittenden 4da9228fb2 Drop dependency on mozldap 2011-01-12 17:41:53 -05:00
Rob Crittenden c7789199f9 Fix output of failed managedby hosts, allow a host to manage itself.
The output problem was a missing label for failed managedby.

This also fixes a call to print_entry that was missing the flags argument.

Add a flag to specify whether a group can be a member of itself, defaulting
to False.

ticket 708
2011-01-11 10:23:31 -05:00
Rob Crittenden 06179dc105 Exit if a DNS A or AAAA record doesn't exist for the replica we are preparing.
Without this it is possible to prepare a replica for a host that doesn't
exist in DNS. The result when this replica file is installed is that
replication will fail because the master won't be able to communicate
to the replica by name.

ticket 680
2011-01-11 10:22:33 -05:00
Rob Crittenden 371ce528fb Enable low-level LDAP debugging. 2011-01-11 10:22:09 -05:00
Rob Crittenden f0401a9127 Make ipaDefaultLoginShell use IA5String syntax to match POSIX schema.
ticket 739
2011-01-11 10:21:04 -05:00
Rob Crittenden db29cd9849 Simple instructions to start developing IPA.
ticket 314
2011-01-10 10:40:57 -05:00
Rob Crittenden 2dac03d7d5 Ship the ipa-dns-install man page
ticket 734
2011-01-10 10:38:46 -05:00
Rob Crittenden 6f58f38748 Display the entries that failed when deleting with --continue.
We collected the failures but didn't report it back. This changes the
API of most delete commands so rather than returning a boolean it returns
a dict with the only current key as failed.

This also adds a new parameter flag, suppress_empty. This will try to
not print values that are empty if included. This makes the output of
the delete commands a bit prettier.

ticket 687
2011-01-10 10:32:10 -05:00
Rob Crittenden 0a79836082 Setting an empty set of target attributes should raise an exception.
It is possible to create an ACI with attributes and then try to set that
to None via a mod command later. We need to catch this and raise an exception.

If all attributes are set to None in an aci then the attr target is removed
from the ACI. This could result in an illegal ACI if there are no other
targets. Having no targets is a legal state, just not a legal final state.

ticket 647
2011-01-10 10:27:23 -05:00
Rob Crittenden aea1bc7959 Temporarily work around SSL connection issue causing installation to fail.
Not sure if this is an openldap-client, pem-nss or python-ldap problem yet
but the installation is failing.
2011-01-07 18:08:01 -05:00
Rob Crittenden 3f146d9622 Allow the kdc to write krbExtraData 2011-01-07 11:15:16 -05:00
Rob Crittenden a1188d95e8 Better detection when not working with a real keytab in ipa-rmkeytab.
Resolving the keytab isn't enough, this just creates a name. Try to
create a cursor into the keytab to see if it is a valid keytab.

ticket 654
2011-01-07 05:15:37 -05:00
Rob Crittenden 4f2a6e0a25 Don't use Class of Service for account activation, use attribute.
To support group-based account disablement we created a Class of Service
where group membership controlled whether an account was active or not.

Since we aren't doing group-based account locking drop that and use
nsaccountlock directly.

ticket 568
2011-01-04 17:09:56 -05:00
Rob Crittenden e7afe1dec2 Make sure that the messagebus service is started.
This will prevent certmonger failures. On very minimal installs it seems
that messagebus is not always started.

ticket 528
2011-01-04 16:56:18 -05:00
Rob Crittenden 91f4bb4ae5 Remove unnecessary options from host-del.
For some reason it was inheriting LDAPCreate.options...

ticket 652
2011-01-04 16:55:14 -05:00
Rob Crittenden ecf2b252c0 Don't allow a user's uid to be set to 0.
ticket 578
2011-01-04 16:53:54 -05:00
Rob Crittenden e4c94320cb Become IPA v2 beta 1 (2.0.0.pre1) 2010-12-22 14:36:37 -05:00
Rob Crittenden d84ffd9e54 Move permissions and privileges to their own container, cn=pbac,$SUFFIX
ticket 638
2010-12-22 11:26:49 -05:00
Rob Crittenden 4d6cd89258 In meta data make ACI attributes lower-case, sorted. Add possible attributes.
The metadata contains a list of possible attributes that an ACI for that
object might need. Add a new variable to hold possible objectclasses for
optional elements (like posixGroup for groups).

To make the list easier to handle sort it and make it all lower-case.

Fix a couple of missed camel-case attributes in the default ACI list.

ticket 641
2010-12-21 13:00:15 -05:00
Rob Crittenden ffd467bd7e Translate the membergroup dn into a group name.
Drop filter from the output, it is superfluous.

ticket 634
2010-12-20 15:18:42 -05:00
Rob Crittenden 34534a026f Don't use camel-case LDAP attributes in ACI and don't clear enrolledBy
We keep LDAP attributes lower-case elsewhere in the API we should do the
same with all access controls.

There were two ACIs pointing at the manage_host_keytab permission. This
isn't allowed in general and we have decided separately to not clear out
enrolledBy when a host is unenrolled so dropping it is the obvious thing
to do.

ticket 597
2010-12-17 18:04:37 -05:00
Rob Crittenden 7035ffe49c Fix some doctests
A few had bad formatting causing the doctests to fail.
2010-12-17 18:04:37 -05:00
Rob Crittenden eb9cb783ee Catch ACI errors better when adding a permission.
We create the aci with the --test flag to test its validity but it doesn't
do the same level of tests that actually adding an aci to LDAP does. Catch
any syntax errors that get thrown and clean up as best we can.

ticket 621
2010-12-17 18:04:37 -05:00
Rob Crittenden 1600146c94 Verify that the replication plugin exists before setting up replicas.
ticket 502
2010-12-17 17:31:19 -05:00
Rob Crittenden 358b28398c Move automount, default HBAC services, netgroup and hostgroup bootstrapping.
There is no need for these to be done as updates, just add these entries
to the bootstrapping.
2010-12-17 17:31:19 -05:00
Rob Crittenden 1207a7c83f Fix the change_password permissions and the DNS access controls.
The change_password permission was too broad, limit it to users.

The DNS access controls rolled everything into a single ACI. I broke
it out into separate ACIs for add, delete and add. I also added a new
dns type for the permission plugin.

ticket 628
2010-12-17 17:16:25 -05:00
Rob Crittenden b66c680f86 Remove principal as an option when updating an existing user.
ticket 559
2010-12-17 17:08:12 -05:00
Rob Crittenden ffc967b47a Fix a slew of tests.
- Skip the DNS tests if DNS isn't configured
- Add new attributes to user entries (displayname, cn and initials)
- Make the nsaccountlock value consistent
- Fix the cert subject for cert tests
2010-12-17 17:01:57 -05:00
Rob Crittenden 623abc6bdf Properly quote passwords sent to pkisilent so special characters work.
Also check for url-encoded passwords before logging them.

ticket 324
2010-12-17 16:50:14 -05:00
Rob Crittenden 8f87aa1288 Add krb5-pkinit-openssl as a Requires on ipa-server package
ticket 599
2010-12-16 09:33:11 -05:00
Rob Crittenden e0a39234f7 Add metadata for the selfservice and delegation plugins. 2010-12-14 11:06:51 -05:00
Rob Crittenden cd7b64103b Add group to group delegation plugin.
This is a thin wrapper around the ACI plugin that manages granting group A
the ability to write a set of attributes of group B.

ticket 532
2010-12-13 20:15:46 -05:00
Rob Crittenden 8a534bf07b Give the memberof plugin time to work when adding/removing reverse members.
When we add/remove reverse members it looks like we're operating on group A
but we're really operating on group B. This adds/removes the member attribute
on group B and the memberof plugin adds the memberof attribute into group A.

We need to give the memberof plugin a chance to do its work so loop a few
times, reading the entry to see if the number of memberof is more or less
what we expect. Bail out if it is taking too long.

ticket 560
2010-12-13 17:58:43 -05:00
Rob Crittenden 5f8a9b9849 Add --out option to service, host and cert-show to save the cert to a file.
Override forward() to grab the result and if a certificate is in the entry
and the file is writable then dump the certificate in PEM format.

ticket 473
2010-12-13 09:58:26 -05:00
Rob Crittenden c9807f4b25 Better handle permission object updates versus aci object updates.
permissions are a real group pointed to by an aci, managed by the same
plugin. Any given update can update one or both or neither. Do a better
job at determining what it is that needs to be updated and handle the
case where only the ACI is updated so that EmptyModList is not thrown.

ticket 603
2010-12-13 09:55:28 -05:00
Rob Crittenden ba8d21f5ae Check for existence of the group when adding a user.
The Managed Entries plugin will allow a user to be added even if a group
of the same name exists. This would leave the user without a private
group.

We need to check for both the user and the group so we can do 1 of 3 things:
- throw an error that the group exists (but not the user)
- throw an error that the user exists (and the group)
- allow the uesr to be added

ticket 567
2010-12-13 09:53:29 -05:00
Rob Crittenden e8157f2628 Fix typo in migration documentation 2010-12-13 09:48:16 -05:00
Rob Crittenden be3c8e8c02 Don't import from ipaserver when not in a server context.
ticket 579
2010-12-11 12:50:17 -05:00
Rob Crittenden 33860ebb43 Pass the DM password when trying to delete a replica.
If the ticket is expired or otherwise unusable it should fall back to the DM
password. It was prompted for correctly but wasn't being passed on.

ticket 549
2010-12-11 10:42:09 -05:00
Rob Crittenden 490ae68e29 Save exception so it can be passed along. 2010-12-11 00:48:33 -05:00
Rob Crittenden e8e274c9e0 Properly handle multi-valued attributes when using setattr/addattr.
The problem was that the normalizer was returning each value as a tuple
which we were then appending to a list, so it looked like
[(u'value1',), (u'value2',),...]. If there was a single value we could
end up adding a tuple to a list which would fail. Additionally python-ldap
doesn't like lists of lists so it was failing later in the process as well.

I've added some simple tests for setattr and addattr.

ticket 565
2010-12-10 13:42:47 -05:00
Rob Crittenden 1a20d75421 Set labels on all attributes in the config object.
Make the cert subject base read-only. This is here only so replicated servers
know their base.

ticket 466
2010-12-10 13:41:35 -05:00
Rob Crittenden 5b7abefb42 If any params marked alwaysask are provided then prompt for none of them.
ticket 604
2010-12-09 15:06:42 -05:00
Rob Crittenden bfcf25cf54 Add documentation to the migrate-ds command.
ticket 539
2010-12-09 15:04:32 -05:00
Rob Crittenden 5330280f08 Fix automount tests 2010-12-08 17:28:35 -05:00
Rob Crittenden 55015d9a05 ipaHomesRootDir was changes to an IA5 string, change the matching rule too 2010-12-08 17:10:17 -05:00
Rob Crittenden 4c09809ea8 Add plugin for manage self-service ACIs
This is just a thin wrapper around the aci plugin, controlling what
types of ACIs can be added.

Right now only ACIs in the basedn can be managed with this plugin.

ticket 531
2010-12-08 13:51:10 -05:00
Rob Crittenden 6e2dd0fa5b Add new parameter type IA5Str and use this to enforce the right charset.
ticket 496
2010-12-07 16:37:42 -05:00
Rob Crittenden fee9fae941 Add more information and examples on targets.
ticket 310
2010-12-06 11:46:40 -05:00
Rob Crittenden 4f6d83e9e5 Ensure list of attrs to retrieve is unique, optimize getting indirect members
This fixes search where we were asking for the member attribute 10 or more
times.

When retrieving indirect members make sure we always pass around the
size and time limits so we don't have to look it up with every call to
find_entries()

ticket 557
2010-12-06 11:43:56 -05:00
Rob Crittenden bfb3e46996 Remove accessTime from HBAC.
ticket 545
2010-12-06 11:42:13 -05:00
Rob Crittenden 1bcd4a389d When deleting multiple entries use --continue, not --continuous.
ticket 561
2010-12-03 17:32:38 -05:00
Rob Crittenden 0ca29095a8 Don't look up the CoS entry with the global password policy.
ticket 523
2010-12-03 13:51:01 -05:00
Rob Crittenden 8a63315ef3 Provide list of available attributes for use in ACI UI.
Also include flag indicating whether the object is bindable. This will
be used to determine if the object can have a selfservice ACI.

ticket 446
2010-12-03 13:01:42 -05:00
Rob Crittenden a41e69fba3 Add labels for passwords, fix output of exceptions, fix passwd output.
Passwords didn't have internationalizable labels.

Exceptions that occured during required input weren't printed as unicode
so weren't being translated properly.

Don't use output_for_cli() directly in the passwd plugin, use output.Output.

ticket 352
2010-12-02 16:31:42 -05:00
Rob Crittenden 6c393e53b0 This is the second half of a patch. Only the part that had to be
re-based got pushed for some reason.

Use better description for group names in help and always prompt for members

When running <foo>-[add|remove]-member completely interactively it didn't
prompt for managing membership, it just reported that 0 members were
handled which was rather confusing.

This will work via a shell if you want to echo too:

$ echo "" | ipa group-add-member g1

This returns 0 members because nothing is read for users or group members.

$ echo -e "g1\nadmin\n" | ipa group-add-member

This adds the user admin to the group g1. It adds it as a user because
user membership is prompted for first.

ticket 415
2010-12-02 16:29:26 -05:00
Rob Crittenden 78f1cf3629 Drop outdated install/tools/README and add QuickStart link to top README
ticket 420
2010-12-02 16:26:53 -05:00
Rob Crittenden df592c6cc8 Use better description for group names in help and always prompt for members
When running <foo>-[add|remove]-member completely interactively it didn't
prompt for managing membership, it just reported that 0 members were
handled which was rather confusing.

This will work via a shell if you want to echo too:

$ echo "" | ipa group-add-member g1

This returns 0 members because nothing is read for users or group members.

$ echo -e "g1\nadmin\n" | ipa group-add-member

This adds the user admin to the group g1. It adds it as a user because
user membership is prompted for first.

ticket 415
2010-12-02 16:21:31 -05:00
Rob Crittenden 4ad8055341 Re-implement access control using an updated model.
The new model is based on permssions, privileges and roles.
Most importantly it corrects the reverse membership that caused problems
in the previous implementation. You add permission to privileges and
privileges to roles, not the other way around (even though it works that
way behind the scenes).

A permission object is a combination of a simple group and an aci.
The linkage between the aci and the permission is the description of
the permission. This shows as the name/description of the aci.

ldap:///self and groups granting groups (v1-style) are not supported by
this model (it will be provided separately).

This makes the aci plugin internal only.

ticket 445
2010-12-01 20:42:31 -05:00
Rob Crittenden d644d17adf Reduce the number of attributes a host is allowed to write.
The list of attributes that a host bound as itself could write was
overly broad.

A host can now only update its description, information about itself
such as OS release, etc, its certificate, password and keytab.

ticket 416
2010-11-30 14:30:52 -05:00
Rob Crittenden 88133ab43c Create user private groups with a uniqueid.
If we don't then we need to add it when a group is detached causing
aci issues.

I had to move where we create the UPG template until after the DS
restart so the schema is available.

ticket 542
2010-11-30 09:52:05 -05:00
Rob Crittenden 8d235c6b71 Verify the --ip-address option when setting up DNS.
There was a corner case where the value of --ip-address was never verified
if you were also setting up DNS.

Added this bit of information to the man page too.

ticket 399
2010-11-24 09:18:57 -05:00
Rob Crittenden 0ad0f4ba6c Catch when we fail to get a cert chain from the CA during installation
Also don't free the XML document if it was never created.

ticket 404
2010-11-24 08:39:00 -05:00
Rob Crittenden 97e9309db3 Gracefully handle an empty members list
This can occur if you do something like:

$ ipa hbac-add-host --hosts="" testrule

options will have an entry for 'host' but it will be None whcih is
not iterable.

ticket 486
2010-11-24 08:38:48 -05:00
Rob Crittenden d824eee8fa Display user and host membership in netgroups.
This uses an enhanced memberof plugin that allows multiple attributes
to be configured to create memberOf attributes.

tickets 109 and 110
2010-11-24 08:38:41 -05:00
Rob Crittenden 6d51a48af8 Add ability to add/remove DNS records when adding/removing a host entry.
A host in DNS must have an IP address so a valid IP address is required
when adding a host. The --force flag will be needed too since you are
adding a host that isn't in DNS.

For IPv4 it will create an A and a PTR DNS record.

IPv6 isn't quite supported yet. Some basic work in the DNS installer
is needed to get this working. Once the get_reverse_zone() returns the
right value then this should start working and create an AAAA record and
the appropriate reverse entry.

When deleting a host with the --updatedns flag it will try to remove all
records it can find in the zone for this host.

ticket 238
2010-11-23 18:23:29 -05:00
Rob Crittenden 861a0fdba9 Don't use full pathnames for kerberos binaries, let PATH find them.
Kerberos binaries may be in /usr/kerberos/*bin or /usr/*bin, let PATH
sort it out.
2010-11-22 14:52:09 -05:00
Rob Crittenden f6b094156d Handle wget failures trying to retrieve the CA during the client install
ticket 405
2010-11-22 14:47:15 -05:00
Rob Crittenden 53d1553755 Give a detached group a full set of group objectclasses.
The UUID plugin handles adding ipaUniqueId for us as well as the access
control for it.

ticket 250
2010-11-19 13:47:09 -05:00
Rob Crittenden 1b166c9e8b Fix returning effective rights for password policy.
This also returns the rights for cospriority if the policy is for a group.

ticket 449
2010-11-19 12:36:31 -05:00
Rob Crittenden d4f25453e1 Add managedby to Host entries
This will allow others to provision on behalf of the host.

ticket 280
2010-11-19 10:31:42 -05:00
Rob Crittenden 2046eddb7a Revoke a host's certificate (if any) when it is deleted or disabled.
Disable any services when its host is disabled.

This also adds displaying the certificate attributes (subject, etc)
a bit more universal and centralized in a single function.

ticket 297
2010-11-19 10:31:42 -05:00
Rob Crittenden eead9eec99 Fix build error due to rename of index.xhtml to index.html 2010-11-19 09:37:03 -05:00
Rob Crittenden d658b0de5c Use a different user for dogtag DS instance
Also shut down all services before starting uninstall.

ticket 349
2010-11-12 17:26:43 -05:00
Rob Crittenden 25469cf4f1 Increase # of chars in users and groups to 255 and default username to 32.
ticket 434
2010-11-12 17:25:40 -05:00
Rob Crittenden 1db42b5461 Don't include INTERNAL commands in ipa help commands output.
ticket 463
2010-11-10 20:20:29 -05:00
Rob Crittenden 6a6db10dbc Become IPA v2 alpha 5 (1.9.0.pre5) 2010-11-09 15:03:20 -05:00
Rob Crittenden fcf3cbbe8b Fix NotFound exception in ipa-nis-manage.
The signature of ldap2.get_entry() changed so normalize wasn't being
handled properly so the basedn was always being appended causing our
entry in cn=config to be not found.

ticket 414
2010-11-09 13:33:04 -05:00
Rob Crittenden a3c4c7e891 Add some examples to ipa-replica-install.1
ticket 290
2010-11-09 13:32:10 -05:00
Rob Crittenden c819b27f9e Rename 60sudo.ldif to 60ipasudo.ldif to not overwrite the 389-ds version.
This meant that the compat sudo schema was not available.

ticket 439
2010-11-09 13:30:45 -05:00
Rob Crittenden 537f4074d1 Add usercategory and hostcategory and fix displaying members in netgroup_show
ticket 443
2010-11-08 15:23:41 -05:00