From 354d32a80bb86db24294a73a66d165edc955a74b Mon Sep 17 00:00:00 2001 From: asmeron Date: Mon, 11 Aug 2025 23:18:24 +0600 Subject: [PATCH] Fix USERADD_SYNC and GROUPADD_SYNC --- ublinux/functions | 8 ++++---- ublinux/rc.halt.pre/25-accounts-sync | 14 ++++++++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/ublinux/functions b/ublinux/functions index c3794cb..e1d0153 100755 --- a/ublinux/functions +++ b/ublinux/functions @@ -1512,10 +1512,10 @@ ubconfig_exec_system(){ USERADD\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.preinit/10-accounts exec_06_useradd "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; USERSHADOW\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.preinit/10-accounts exec_07_usershadow "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; GROUPADD\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.preinit/10-accounts exec_04_groupadd "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; - USERADD_SYNC) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/25-accounts-sync exec_useradd_sync "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; - USERADD_SYNC\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/25-accounts-sync exec_useradd_sync "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; - GROUPADD_SYNC) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/25-accounts-sync exec_groupadd_sync "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; - GROUPADD_SYNC\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/25-accounts-sync exec_groupadd_sync "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + USERADD_SYNC) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/25-accounts-sync exec_01_useradd_sync "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + USERADD_SYNC\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/25-accounts-sync exec_01_useradd_sync "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + GROUPADD_SYNC) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/25-accounts-sync exec_02_groupadd_sync "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + GROUPADD_SYNC\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/25-accounts-sync exec_02_groupadd_sync "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; *) NO_FIND_EXCUTE=1 ;; esac ;; diff --git a/ublinux/rc.halt.pre/25-accounts-sync b/ublinux/rc.halt.pre/25-accounts-sync index 09b2c0a..cb32dcc 100755 --- a/ublinux/rc.halt.pre/25-accounts-sync +++ b/ublinux/rc.halt.pre/25-accounts-sync @@ -35,7 +35,7 @@ SOURCE=${SYSCONF}/users; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null ## boot # При загрузке системы принудительно применить глобальную конфигурацию на пользователя ## shutdown # При завершении работы системы синхронизировать указанного пользователя в системе с глобальной конфигурацией ## USERADD_SYNC[superadmin]=boot,shutdown -exec_useradd_sync(){ +exec_01_useradd_sync(){ remove_ubconfig(){ # Удалить пользователей из глобальной конфигурации local PARAM="$1" @@ -95,6 +95,10 @@ exec_useradd_sync(){ local GET_USERADD=$(get_conf_useradd_from_system "${PARAM}") if [[ ${GET_USERADD} != "" ]]; then eval ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] ${GET_USERADD} + # Если в системной конфигурации заданы USERADD_SYNC= USERADD_SYNC[${PARAM}]= то установить в глобальной конфигурации + [[ -n ${USERADD_SYNC} ]] && ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] USERADD_SYNC="${USERADD_SYNC}" + [[ -n ${PARAM} && "$(declare -p USERADD_SYNC 2>/dev/null)" == "declare -A"* && -n ${USERADD_SYNC[${PARAM}]} ]] \ + && ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] USERADD_SYNC["${PARAM}"]="${USERADD_SYNC[${PARAM}]}" local GET_USERSHADOW=$(get_conf_usershadow_from_system ${PARAM}) # TODO: Если задан диапазон пользователей, пример 0-999, то GET_USERSHADOW будет содержать всех пользователей в этом диапазоте # А нужно выбрать только пользователей которые содержатся в GET_USERADD @@ -157,13 +161,17 @@ exec_useradd_sync(){ ## group_name # Имя группы, необязательное поле. Если не указано, то применяется для всех групп ## shutdown # При завершении работы системы синхронизировать указанную группу в системе с глобальной конфигурацией ## GROUPADD_SYNC[users]='shutdown' -exec_groupadd_sync(){ +exec_02_groupadd_sync(){ set_ubconfig(){ local PARAM="$1" local GET_GROUPADD=$(get_conf_groupadd_from_system "${PARAM}") if [[ ${GET_GROUPADD} != "" ]]; then eval ${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] ${GET_GROUPADD} eval ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] ${GET_GROUPADD} + # Если в системной конфигурации заданы GROUPADD_SYNC= GROUPADD_SYNC[${PARAM}]= то установить в глобальной конфигурации + [[ -n ${GROUPADD_SYNC} ]] && ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] GROUPADD_SYNC="${GROUPADD_SYNC}" + [[ -n ${PARAM} && "$(declare -p GROUPADD_SYNC 2>/dev/null)" == "declare -A"* && -n ${GROUPADD_SYNC[${PARAM}]} ]] \ + && ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] GROUPADD_SYNC["${PARAM}"]="${GROUPADD_SYNC[${PARAM}]}" fi } [[ $1 == @("set="|"set+="|"set++="|"set-="|"set--="|"remove") ]] && COMMAND=$1 && shift @@ -201,7 +209,6 @@ exec_groupadd_sync(){ fi } - ################ ##### MAIN ##### ################ @@ -220,4 +227,3 @@ exec_groupadd_sync(){ done eval ${FUNCTION#*; } fi -