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 (); }