summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile35
-rwxr-xr-xipa-server/freeipa-server.spec4
-rw-r--r--ipa-server/freeipa-server.spec.in4
-rw-r--r--ipa-server/ipa-install/ipa-server-install8
-rw-r--r--ipa-server/ipa-kpasswd/Makefile5
-rw-r--r--ipa-server/ipa-kpasswd/ipa_kpasswd.c13
-rw-r--r--ipa-server/ipa-slapi-plugins/ipa-pwd-extop/plugin-conf.ldif4
-rw-r--r--ipa-server/ipaserver/krbinstance.py15
8 files changed, 61 insertions, 27 deletions
diff --git a/Makefile b/Makefile
index 8a7f7909..2e920830 100644
--- a/Makefile
+++ b/Makefile
@@ -2,6 +2,8 @@ SUBDIRS=ipa-server ipa-admintools ipa-python
PRJ_PREFIX=freeipa
+RPMBUILD ?= $(PWD)/rpmbuild
+
# set to 1 to produce a debug build of all subprojects
#DEBUG=1
@@ -94,25 +96,32 @@ tarballs:
cd dist; tar cfz $(PYTHON_TARBALL) $(PYTHON_TARBALL_PREFIX)
rm -fr dist/$(PYTHON_TARBALL_PREFIX)
+rpmroot:
+ mkdir -p $(RPMBUILD)/BUILD
+ mkdir -p $(RPMBUILD)/RPMS
+ mkdir -p $(RPMBUILD)/SOURCES
+ mkdir -p $(RPMBUILD)/SPECS
+ mkdir -p $(RPMBUILD)/SRPMS
+
rpm-ipa-server:
- cp dist/$(SERV_TARBALL) ~/rpmbuild/SOURCES/.
- rpmbuild -ba ipa-server/freeipa-server.spec
- cp ~/rpmbuild/RPMS/*/$(PRJ_PREFIX)-server-$(SERV_VERSION)-*.rpm dist/.
- cp ~/rpmbuild/SRPMS/$(PRJ_PREFIX)-server-$(SERV_VERSION)-*.src.rpm dist/.
+ cp dist/$(SERV_TARBALL) $(RPMBUILD)/SOURCES/.
+ rpmbuild --define "_topdir $(RPMBUILD)" -ba ipa-server/freeipa-server.spec
+ cp rpmbuild/RPMS/*/$(PRJ_PREFIX)-server-$(SERV_VERSION)-*.rpm dist/.
+ cp rpmbuild/SRPMS/$(PRJ_PREFIX)-server-$(SERV_VERSION)-*.src.rpm dist/.
rpm-ipa-admin:
- cp dist/$(ADMIN_TARBALL) ~/rpmbuild/SOURCES/.
- rpmbuild -ba ipa-admintools/freeipa-admintools.spec
- cp ~/rpmbuild/RPMS/noarch/$(PRJ_PREFIX)-admintools-$(ADMIN_VERSION)-*.rpm dist/.
- cp ~/rpmbuild/SRPMS/$(PRJ_PREFIX)-admintools-$(ADMIN_VERSION)-*.src.rpm dist/.
+ cp dist/$(ADMIN_TARBALL) $(RPMBUILD)/SOURCES/.
+ rpmbuild --define "_topdir $(RPMBUILD)" -ba ipa-admintools/freeipa-admintools.spec
+ cp rpmbuild/RPMS/noarch/$(PRJ_PREFIX)-admintools-$(ADMIN_VERSION)-*.rpm dist/.
+ cp rpmbuild/SRPMS/$(PRJ_PREFIX)-admintools-$(ADMIN_VERSION)-*.src.rpm dist/.
rpm-ipa-python:
- cp dist/$(PYTHON_TARBALL) ~/rpmbuild/SOURCES/.
- rpmbuild -ba ipa-python/freeipa-python.spec
- cp ~/rpmbuild/RPMS/noarch/$(PRJ_PREFIX)-python-$(PYTHON_VERSION)-*.rpm dist/.
- cp ~/rpmbuild/SRPMS/$(PRJ_PREFIX)-python-$(PYTHON_VERSION)-*.src.rpm dist/.
+ cp dist/$(PYTHON_TARBALL) $(RPMBUILD)/SOURCES/.
+ rpmbuild --define "_topdir $(RPMBUILD)" -ba ipa-python/freeipa-python.spec
+ cp rpmbuild/RPMS/noarch/$(PRJ_PREFIX)-python-$(PYTHON_VERSION)-*.rpm dist/.
+ cp rpmbuild/SRPMS/$(PRJ_PREFIX)-python-$(PYTHON_VERSION)-*.src.rpm dist/.
-rpms: rpm-ipa-server rpm-ipa-admin rpm-ipa-python
+rpms: rpmroot rpm-ipa-server rpm-ipa-admin rpm-ipa-python
dist: version-update archive tarballs archive-cleanup rpms
diff --git a/ipa-server/freeipa-server.spec b/ipa-server/freeipa-server.spec
index c292177b..05e915da 100755
--- a/ipa-server/freeipa-server.spec
+++ b/ipa-server/freeipa-server.spec
@@ -11,7 +11,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: fedora-ds-base-devel openldap-devel krb5-devel nss-devel mozldap-devel openssl-devel mhash-devel
-Requires: python fedora-ds-base krb5-server krb5-server-ldap nss-tools openldap-clients httpd mod_python mod_auth_kerb python-ldap freeipa-python ntpd cyrus-sasl-gssapi nss TurboGears
+Requires: python fedora-ds-base krb5-server krb5-server-ldap nss-tools openldap-clients httpd mod_python mod_auth_kerb python-ldap freeipa-python ntp cyrus-sasl-gssapi nss TurboGears
%define httpd_conf /etc/httpd/conf.d
%define plugin_dir /usr/lib/fedora-ds/plugins
@@ -43,7 +43,7 @@ rm -rf %{buildroot}
%{_sbindir}/ipa-server-install
%{_sbindir}/ipa-server-setupssl
%{_sbindir}/ipa_kpasswd
-
+%attr(755,root,root) %{_initrddir}/ipa-kpasswd
%dir %{_usr}/share/ipa
%{_usr}/share/ipa/*
diff --git a/ipa-server/freeipa-server.spec.in b/ipa-server/freeipa-server.spec.in
index 7685a78e..5fc83311 100644
--- a/ipa-server/freeipa-server.spec.in
+++ b/ipa-server/freeipa-server.spec.in
@@ -11,7 +11,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: fedora-ds-base-devel openldap-devel krb5-devel nss-devel mozldap-devel openssl-devel mhash-devel
-Requires: python fedora-ds-base krb5-server krb5-server-ldap nss-tools openldap-clients httpd mod_python mod_auth_kerb python-ldap freeipa-python ntpd cyrus-sasl-gssapi nss TurboGears
+Requires: python fedora-ds-base krb5-server krb5-server-ldap nss-tools openldap-clients httpd mod_python mod_auth_kerb python-ldap freeipa-python ntp cyrus-sasl-gssapi nss TurboGears
%define httpd_conf /etc/httpd/conf.d
%define plugin_dir /usr/lib/fedora-ds/plugins
@@ -43,7 +43,7 @@ rm -rf %{buildroot}
%{_sbindir}/ipa-server-install
%{_sbindir}/ipa-server-setupssl
%{_sbindir}/ipa_kpasswd
-
+%attr(755,root,root) %{_initrddir}/ipa-kpasswd
%dir %{_usr}/share/ipa
%{_usr}/share/ipa/*
diff --git a/ipa-server/ipa-install/ipa-server-install b/ipa-server/ipa-install/ipa-server-install
index 8ba8425d..316fe254 100644
--- a/ipa-server/ipa-install/ipa-server-install
+++ b/ipa-server/ipa-install/ipa-server-install
@@ -113,7 +113,7 @@ def main():
krb.create_instance(options.ds_user, options.realm_name, host_name,
options.password, options.master_password)
- # Restart ds after the krb instance have add the sasl map
+ # Restart ds after the krb instance has changed ds configurations
ds.restart()
# Restart apache
@@ -128,6 +128,12 @@ def main():
# Set the KDC to start on boot
run(["/sbin/chkconfig", "krb5kdc", "on"])
+ # Set the Kpasswd to start on boot
+ run(["/sbin/chkconfig", "ipa-kpasswd", "on"])
+
+ # Start Kpasswd
+ run(["/sbin/service", "ipa-kpasswd", "start"])
+
# Create the config file
fd = open("/etc/ipa/ipa.conf", "w")
fd.write("[defaults]\n")
diff --git a/ipa-server/ipa-kpasswd/Makefile b/ipa-server/ipa-kpasswd/Makefile
index 11755a9a..7384ed88 100644
--- a/ipa-server/ipa-kpasswd/Makefile
+++ b/ipa-server/ipa-kpasswd/Makefile
@@ -1,5 +1,6 @@
PREFIX ?= $(DESTDIR)/usr
SBIN = $(PREFIX)/sbin
+INITDIR = $(DESTDIR)/etc/rc.d/init.d
LDFLAGS +=-lkrb5 -llber -lldap
CFLAGS ?= -Wall -Wshadow -O2
@@ -15,8 +16,10 @@ all: $(OBJS)
install:
-mkdir -p $(SBIN)
install -m 755 ipa_kpasswd $(SBIN)
+ -mkdir -p $(INITDIR)
+ install -m 755 ipa-kpasswd.init $(INITDIR)/ipa-kpasswd
clean:
rm -f *.o
rm -f ipa_kpasswd
- rm -f *~ \ No newline at end of file
+ rm -f *~
diff --git a/ipa-server/ipa-kpasswd/ipa_kpasswd.c b/ipa-server/ipa-kpasswd/ipa_kpasswd.c
index 811ae34d..bc89a1b8 100644
--- a/ipa-server/ipa-kpasswd/ipa_kpasswd.c
+++ b/ipa-server/ipa-kpasswd/ipa_kpasswd.c
@@ -21,6 +21,7 @@
#include <ldap.h>
#include <sasl/sasl.h>
+#define DEFAULT_KEYTAB "FILE:/var/kerberos/krb5kdc/kpasswd.keytab"
#define TMP_TEMPLATE "/tmp/kpasswd.XXXXXX"
#define KPASSWD_PORT 464
#define KPASSWD_TCP 1
@@ -108,7 +109,7 @@ int remove_blacklist(pid_t pid)
int debug = 1;
char *srv_pri_name = "kadmin/changepw";
-char *keytab_name = "FILE:/var/kerberos/krb5kdc/kpasswd.keytab";
+char *keytab_name = NULL;
static int get_krb5_ticket(char *tmp_file)
{
@@ -864,6 +865,16 @@ int main(int argc, char *argv[])
int tcp_s, udp_s;
int tru = 1;
int ret;
+ char *key;
+
+ key = getenv("KRB5_KTNAME");
+ if (!key) {
+ key = DEFAULT_KEYTAB;
+ }
+ keytab_name = strdup(key);
+ if (!keytab_name) {
+ fprintf(stderr, "Out of memory!\n");
+ }
tcp_s = socket(AF_INET, SOCK_STREAM, 0);
if (tcp_s == -1) {
diff --git a/ipa-server/ipa-slapi-plugins/ipa-pwd-extop/plugin-conf.ldif b/ipa-server/ipa-slapi-plugins/ipa-pwd-extop/plugin-conf.ldif
index 738ef7ab..6240c10f 100644
--- a/ipa-server/ipa-slapi-plugins/ipa-pwd-extop/plugin-conf.ldif
+++ b/ipa-server/ipa-slapi-plugins/ipa-pwd-extop/plugin-conf.ldif
@@ -3,12 +3,12 @@ objectclass: top
objectclass: nsSlapdPlugin
objectclass: extensibleObject
cn: ipa_pwd_extop
-nsslapd-pluginpath: /usr/lib/fedora-ds/plugins/libipa_pwd_extop.so
+nsslapd-pluginpath: libipa_pwd_extop.so
nsslapd-plugininitfunc: ipapwd_init
nsslapd-plugintype: extendedop
nsslapd-pluginenabled: on
nsslapd-pluginid: Multi-hash Change Password Extended Operation
nsslapd-pluginversion: 1.0
nsslapd-pluginvendor: RedHat
-nsslapd-plugindescription: Support saving passwords in multiple fornmats for different consumers like krb5, samba, freeradius, etc.
+nsslapd-plugindescription: Support saving passwords in multiple formats for different consumers (krb5, samba, freeradius, etc.)
nsslapd-pluginarg0: /var/kerberos/krb5kdc/.k5.$REALM
diff --git a/ipa-server/ipaserver/krbinstance.py b/ipa-server/ipaserver/krbinstance.py
index e31312a7..99687370 100644
--- a/ipa-server/ipaserver/krbinstance.py
+++ b/ipa-server/ipaserver/krbinstance.py
@@ -87,12 +87,12 @@ class KrbInstance:
self.__create_http_keytab()
- self.__set_kadmin_changepw_preauth()
-
- self.__export_kadmin_changepw_keytab()
+ self.__export_kadmin_changepw_keytab()
self.__create_sample_bind_zone()
+ self.__add_pwd_extop_module()
+
self.start()
def stop(self):
@@ -185,7 +185,7 @@ class KrbInstance:
pent = pwd.getpwnam(self.ds_user)
os.chown("/etc/sysconfig/fedora-ds", pent.pw_uid, pent.pw_gid)
- def __set_kadmin_changepw_preauth(self):
+ def __export_kadmin_changepw_keytab(self):
(kwrite, kread, kerr) = os.popen3("/usr/kerberos/sbin/kadmin.local")
kwrite.write("modprinc +requires_preauth kadmin/changepw\n")
kwrite.flush()
@@ -193,7 +193,6 @@ class KrbInstance:
kread.close()
kerr.close()
- def __export_kadmin_changepw_keytab(self):
(kwrite, kread, kerr) = os.popen3("/usr/kerberos/sbin/kadmin.local")
kwrite.write("ktadd -k /var/kerberos/krb5kdc/kpasswd.keytab kadmin/changepw\n")
kwrite.flush()
@@ -201,6 +200,12 @@ class KrbInstance:
kread.close()
kerr.close()
+ cfg_fd = open("/etc/sysconfig/ipa-kpasswd", "a")
+ cfg_fd.write("export KRB5_KTNAME=/var/kerberos/krb5kdc/kpasswd.keytab\n")
+ cfg_fd.close()
+ pent = pwd.getpwnam(self.ds_user)
+ os.chown("/etc/sysconfig/ipa-kpasswd", pent.pw_uid, pent.pw_gid)
+
def __create_http_keytab(self):
(kwrite, kread, kerr) = os.popen3("/usr/kerberos/sbin/kadmin.local")
kwrite.write("addprinc -randkey HTTP/"+self.fqdn+"@"+self.realm+"\n")