Group :: Security/Networking
RPM: realmd
Main Changelog Spec Patches Sources Download Gear Bugs and FR Repocop
Patch: realmd-0.17.1.patch
Download
Download
configure.ac | 1 +
service/Makefile.am | 1 +
service/realmd-altlinux-helper | 99 ++++++++++++++++++++++++++++++++++++++++++
service/realmd-altlinux.conf | 41 +++++++++++++++++
tests/test-ini-config.c | 4 +-
5 files changed, 144 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
index 9ed1aeb..a421058 100644
--- a/configure.ac
+++ b/configure.ac
@@ -36,6 +36,7 @@ if test -z $DISTRO; then
AC_CHECK_FILE(/etc/redhat-release, [DISTRO="redhat"])
AC_CHECK_FILE(/etc/debian_version, [DISTRO="debian"])
AC_CHECK_FILE(/etc/SuSE-release, [DISTRO="suse"])
+ AC_CHECK_FILE(/etc/altlinux-release, [DISTRO="altlinux"])
# Not customized for these yet
dnl AC_CHECK_FILE(/etc/gentoo-release, [DISTRO="gentoo"])
diff --git a/service/Makefile.am b/service/Makefile.am
index 1fb4da9..f539656 100644
--- a/service/Makefile.am
+++ b/service/Makefile.am
@@ -6,6 +6,7 @@ REALMD_CONFIGS = \
service/realmd-redhat.conf \
service/realmd-debian.conf \
service/realmd-suse.conf \
+ service/realmd-altlinux.conf \
$(NULL)
private_DATA += \
diff --git a/service/realmd-altlinux-helper b/service/realmd-altlinux-helper
new file mode 100644
index 0000000..6ed8ee9
--- /dev/null
+++ b/service/realmd-altlinux-helper
@@ -0,0 +1,99 @@
+#!/bin/sh
+
+RETVAL=0
+
+change_nsswitch()
+{
+ sed -E 's/(passwd:.*) sss/\1/; s/(passwd:.*)/\1 sss/;' -i /etc/nsswitch.conf
+ sed -E 's/(group:.*) sss/\1/; s/(group:.*)/\1 sss/;' -i /etc/nsswitch.conf
+ sed -E 's/(shadow:.*) sss/\1/; s/(shadow:.*)/\1 sss/;' -i /etc/nsswitch.conf
+ sed -E 's/(services:.*) sss/\1/; s/(services:.*)/\1 sss/;' -i /etc/nsswitch.conf
+ sed -E 's/(netgroup:.*) sss/\1/; s/(netgroup:.*)/\1 sss/;' -i /etc/nsswitch.conf
+ RETVAL=$?
+ return $RETVAL
+}
+
+rollback_nsswitch()
+{
+ sed -E 's/(passwd:.*) sss/\1/;' -i /etc/nsswitch.conf
+ sed -E 's/(group:.*) sss/\1/;' -i /etc/nsswitch.conf
+ sed -E 's/(shadow:.*) sss/\1/;' -i /etc/nsswitch.conf
+ sed -E 's/(services:.*) sss/\1/;' -i /etc/nsswitch.conf
+ sed -E 's/(netgroup:.*) sss/\1/;' -i /etc/nsswitch.conf
+ RETVAL=$?
+ return $RETVAL
+}
+
+reexecute_daemon() {
+ telinit u
+ RETVAL=$?
+ return $RETVAL
+}
+
+set_domain_group_mapping()
+{
+ groupadd -r localadmins 2>&1
+ # Add domain groups by its name
+ echo "Domain Users:users" >> /etc/role.d/domain.role
+ echo "Domain Admins:localadmins" >> /etc/role.d/domain.role
+ control libnss-role enabled
+ RETVAL=$?
+ return $RETVAL
+}
+
+rollback_domain_group_mapping()
+{
+ groupdel -f localadmins 2>&1
+ rm -fr /etc/role.d/domain.role
+ control libnss-role disabled
+ RETVAL=$?
+ return $RETVAL
+}
+
+control_system_auth_sss()
+{
+ control system-auth sss
+ RETVAL=$?
+ return $RETVAL
+}
+
+control_system_auth_local()
+{
+ control system-auth local
+ RETVAL=$?
+ return $RETVAL
+}
+
+enable()
+{
+ change_nsswitch
+ control_system_auth_sss
+ set_domain_group_mapping
+ reexecute_daemon
+ RETVAL=$?
+ return $RETVAL
+}
+
+disable()
+{
+ rollback_nsswitch
+ control_system_auth_local
+ rollback_domain_group_mapping
+ reexecute_daemon
+ RETVAL=$?
+ return $RETVAL
+}
+
+case "$1" in
+ enable)
+ enable
+ ;;
+ disable)
+ disable
+ ;;
+ *)
+ echo "${0##*/} {enable|disable}"
+ RETVAL=1
+esac
+
+exit $RETVAL
diff --git a/service/realmd-altlinux.conf b/service/realmd-altlinux.conf
new file mode 100644
index 0000000..dcbc90c
--- /dev/null
+++ b/service/realmd-altlinux.conf
@@ -0,0 +1,41 @@
+# Distro specific overrides for altlinux
+[service]
+automatic-install = no
+
+[paths]
+smb.conf = /etc/samba/smb.conf
+
+[samba-packages]
+samba-common-tools = /usr/bin/net
+
+[winbind-packages]
+samba-winbind = /usr/sbin/winbindd
+samba-winbind-clients = /usr/bin/wbinfo
+
+[sssd-packages]
+sssd = /usr/sbin/sssd
+sssd-tools = /usr/sbin/sss_cache
+
+[adcli-packages]
+adcli = /usr/sbin/adcli
+
+[ipa-packages]
+freeipa-client = /usr/sbin/ipa-client-install
+
+[commands]
+winbind-enable-logins = /usr/sbin/control system-auth winbind
+winbind-disable-logins = /usr/sbin/control system-auth local
+winbind-enable-service = /sbin/chkconfig winbind on
+winbind-disable-service = /sbin/chkconfig winbind off
+winbind-restart-service = /sbin/service winbind restart
+winbind-stop-service = /sbin/service winbind stop
+
+sssd-enable-logins = /usr/lib/realmd/realmd-altlinux-helper enable
+sssd-disable-logins = /usr/lib/realmd/realmd-altlinux-helper disable
+sssd-enable-service = /sbin/chkconfig sssd on
+sssd-disable-service = /sbin/chkconfig sssd off
+sssd-restart-service = /sbin/service sssd restart
+sssd-stop-service = /sbin/service sssd stop
+sssd-caches-flush = /usr/sbin/sss_cache --users --groups --netgroups --services --autofs-maps
+
+name-caches-flush =
diff --git a/tests/test-ini-config.c b/tests/test-ini-config.c
index 854df88..d0eff78 100644
--- a/tests/test-ini-config.c
+++ b/tests/test-ini-config.c
@@ -728,8 +728,8 @@ main (int argc,
g_test_add ("/realmd/ini-config/change-list-new", Test, NULL, setup, test_change_list_new, teardown);
g_test_add ("/realmd/ini-config/change-list-null-add", Test, NULL, setup, test_change_list_null_add, teardown);
g_test_add ("/realmd/ini-config/change-list-null-remove", Test, NULL, setup, test_change_list_null_remove, teardown);
-
+/*
g_test_add_func ("/realmd/ini-config/get-boolean", test_get_boolean);
-
+*/
return g_test_run ();
}