Sisyphus repository
Last update: 1 october 2023 | SRPMs: 18631 | Visits: 37601775
en ru br
ALT Linux repos
S:0.17.1-alt7

Group :: Security/Networking
RPM: realmd

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs and FR  Repocop 

Patch: realmd-0.17.1.patch
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 ();
 }
 
design & coding: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
current maintainer: Michael Shigorin