diff --git a/ublinux/default b/ublinux/default index a02f103..ca6b65e 100644 --- a/ublinux/default +++ b/ublinux/default @@ -21,7 +21,7 @@ declare -A AUTOINSTALL #rc.desktop/all/placeondesktop #rc.desktop/deonly/xfce4-ubinstall-trust -UBINSTALL_DESKTOP="ubinstall,ubinstall.cli" +UBINSTALL_DESKTOP="ubinstall-gtk,ubinstall.cli" #rc.desktop/all/fusion-icon # timeout to start fusion-icon @@ -267,5 +267,8 @@ UBPILE[web_socket_use_hostnames]="false" AUTOINSTALL[part_size]="16G" AUTOINSTALL[part_fs_type]="ext4" +AUTOINSTALL[user_name]="superadmin" +AUTOINSTALL[user_gecos]="Administrator" +AUTOINSTALL[user_password]="ublinux" AUTOINSTALL[log]=yes diff --git a/ublinux/functions b/ublinux/functions index d09c8a9..05d6c96 100755 --- a/ublinux/functions +++ b/ublinux/functions @@ -110,8 +110,6 @@ remove_userhome(){ # Если запущенно без параметра, то все пароли зашифровать в переменных USERADD GROUPADD DEFAULTPASSWD DEFAULTROOTPASSWD globalconf_convert_pass_plain_to_hash(){ [[ -z ${ROOTFS} ]] || return 0 - SOURCE=${SYSCONF}/users; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null - SOURCE=${SYSCONF}/.users_credential; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null local PARAM="$@" local -A USERADD local -A GROUPADD @@ -120,36 +118,39 @@ globalconf_convert_pass_plain_to_hash(){ [[ -n ${HASHPASSWD} ]] || HASHPASSWD=$(/usr/bin/ubconfig --raw --default get users HASHPASSWD) [[ -n ${HASHPASSWD} && ${HASHPASSWD} != "(null)" ]] || HASHPASSWD='yescrypt' if [[ -n ${PARAM} ]]; then - [[ ${PARAM%%=*} =~ [!\$%\&()*+,/\;\<\=\>?\^\{|\}~] ]] || eval "${PARAM%%=*}=\${PARAM#*=}" + [[ ${PARAM%%=*} =~ [!\$%\&()*+,/\;\<\=\>?\^\{|\}~] ]] || eval ${PARAM%%=*}=${PARAM#*=} + else + SOURCE=${SYSCONF}/users; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null + SOURCE=${SYSCONF}/.users_credential; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null fi # Проверим DEFAULTPASSWD, если не указан в $1, то подгрузить из глобальной конфигурации [[ -n ${PARAM} ]] || DEFAULTPASSWD=$(ubconfig --raw --source global get [users] DEFAULTPASSWD) if [[ -n ${DEFAULTPASSWD} && ${DEFAULTPASSWD} != "(null)" ]]; then if [[ -n ${PARAM} && $(is_hash_password ${DEFAULTPASSWD}) ]]; then - ubconfig --noexecute --target global set [users] DEFAULTPASSWD="${DEFAULTPASSWD}" + ubconfig set [users] DEFAULTPASSWD="${DEFAULTPASSWD}" else #return_hash_password "${DEFAULTPASSWD}" #[[ -n ${HASH_PASSWORD_NEW} ]] && ubconfig --noexecute --target global set [users] DEFAULTPASSWD="${HASH_PASSWORD_NEW}" - ubconfig --noexecute --target global set [users] DEFAULTPASSWD="$(return_hash_password hash ${HASHPASSWD} ${DEFAULTPASSWD})" + ubconfig set [users] DEFAULTPASSWD="$(return_hash_password hash ${HASHPASSWD} ${DEFAULTPASSWD})" fi fi # Проверим DEFAULTROOTPASSWD, если не указан в $1, то подгрузить из глобальной конфигурации [[ -n ${PARAM} ]] || DEFAULTROOTPASSWD=$(ubconfig --raw --source global get [users] DEFAULTROOTPASSWD) if [[ -n ${DEFAULTROOTPASSWD} && ${DEFAULTROOTPASSWD} != "(null)" ]]; then if [[ -n ${PARAM} && $(is_hash_password ${DEFAULTROOTPASSWD}) ]]; then - ubconfig --noexecute --target global set [users] DEFAULTROOTPASSWD="${DEFAULTROOTPASSWD}" + ubconfig set [users] DEFAULTROOTPASSWD="${DEFAULTROOTPASSWD}" else #return_hash_password "${DEFAULTROOTPASSWD}" #[[ -n ${HASH_PASSWORD_NEW} ]] && ubconfig --noexecute --target global set [users] DEFAULTROOTPASSWD="${HASH_PASSWORD_NEW}" - ubconfig --noexecute --target global set [users] DEFAULTROOTPASSWD="$(return_hash_password hash ${HASHPASSWD} ${DEFAULTROOTPASSWD})" + ubconfig set [users] DEFAULTROOTPASSWD="$(return_hash_password hash ${HASHPASSWD} ${DEFAULTROOTPASSWD})" fi fi # Проверим USERADD, если не указан в $1, то подгрузить из глобальной конфигурации [[ -n ${PARAM} ]] || while IFS= read -r SELECT_USERADD; do if [[ ! ${SELECT_USERADD%%=*} =~ [!\$%\&()*+,/\;\<\=\>?\^\{|\}~] ]]; then VAR_NAME=${SELECT_USERADD%%=*} - VAR_VALUE=${SELECT_USERADD#*=}; VAR_VALUE=${VAR_VALUE//\'/} - eval "${VAR_NAME}=\${VAR_VALUE}" + VAR_VALUE=${SELECT_USERADD#*=}; VAR_VALUE=${VAR_VALUE//(\'|\")/} + eval ${VAR_NAME}=${VAR_VALUE} fi done < <(ubconfig --source global get [users] USERADD[*]) if [[ ${#USERADD[@]} != 0 ]]; then @@ -157,11 +158,11 @@ globalconf_convert_pass_plain_to_hash(){ IFS=: read -r SELECT_GECOS SELECT_UID SELECT_GROUP SELECT_EXTRAGROUPS SELECT_OPTIONAL SELECT_PASSWORD NULL <<< "${USERADD[${SELECT_USERNAME}]}" if [[ ${SELECT_PASSWORD} != "" ]]; then if [[ -n ${PARAM} && $(is_hash_password ${SELECT_PASSWORD}) ]]; then - ubconfig --noexecute --target global set [users] USERADD[${SELECT_USERNAME}]="${SELECT_GECOS}:${SELECT_UID}:${SELECT_GROUP}:${SELECT_EXTRAGROUPS}:${SELECT_OPTIONAL}:${SELECT_PASSWORD}" + ubconfig set [users] USERADD[${SELECT_USERNAME}]="${SELECT_GECOS}:${SELECT_UID}:${SELECT_GROUP}:${SELECT_EXTRAGROUPS}:${SELECT_OPTIONAL}:${SELECT_PASSWORD}" else #return_hash_password "${SELECT_PASSWORD}" #[[ -n ${HASH_PASSWORD_NEW} ]] && ubconfig --noexecute --target global set [users] USERADD[${SELECT_USERNAME}]="${SELECT_GECOS}:${SELECT_UID}:${SELECT_GROUP}:${SELECT_EXTRAGROUPS}:${SELECT_OPTIONAL}:${HASH_PASSWORD_NEW}" - ubconfig --noexecute --target global set [users] USERADD[${SELECT_USERNAME}]="${SELECT_GECOS}:${SELECT_UID}:${SELECT_GROUP}:${SELECT_EXTRAGROUPS}:${SELECT_OPTIONAL}:$(return_hash_password hash ${HASHPASSWD} ${SELECT_PASSWORD})" + ubconfig set [users] USERADD[${SELECT_USERNAME}]="${SELECT_GECOS}:${SELECT_UID}:${SELECT_GROUP}:${SELECT_EXTRAGROUPS}:${SELECT_OPTIONAL}:$(return_hash_password hash ${HASHPASSWD} ${SELECT_PASSWORD})" fi fi done 3< <(printf "%s\n" "${!USERADD[@]}") @@ -170,8 +171,8 @@ globalconf_convert_pass_plain_to_hash(){ [[ -n ${PARAM} ]] || while IFS= read -r SELECT_GROUPADD; do if [[ ! ${SELECT_GROUPADD%%=*} =~ [!\$%\&()*+,/\;\<\=\>?\^\{|\}~] ]]; then VAR_NAME=${SELECT_GROUPADD%%=*} - VAR_VALUE=${SELECT_GROUPADD#*=}; VAR_VALUE=${VAR_VALUE//\'/} - eval "${VAR_NAME}=\${VAR_VALUE}" + VAR_VALUE=${SELECT_GROUPADD#*=}; VAR_VALUE=${VAR_VALUE//(\'|\")/} + eval ${VAR_NAME}=${VAR_VALUE} fi done < <(ubconfig --source global get [users] GROUPADD[*]) if [[ ${#GROUPADD[@]} != 0 ]]; then @@ -179,11 +180,11 @@ globalconf_convert_pass_plain_to_hash(){ IFS=: read -r SELECT_USERS SELECT_GID SELECT_OPTIONAL SELECT_ADMINISTRATORS SELECT_PASSWORD NULL <<< "${GROUPADD[${SELECT_GROUP}]}" if [[ ${SELECT_PASSWORD} != "" ]]; then if [[ -n ${PARAM} && $(is_hash_password ${SELECT_PASSWORD}) ]]; then - ubconfig --noexecute --target global set [users] GROUPADD[${SELECT_GROUP}]="${SELECT_USERS}:${SELECT_GID}:${SELECT_OPTIONAL}:${SELECT_ADMINISTRATORS}:${SELECT_PASSWORD}" + ubconfig set [users] GROUPADD[${SELECT_GROUP}]="${SELECT_USERS}:${SELECT_GID}:${SELECT_OPTIONAL}:${SELECT_ADMINISTRATORS}:${SELECT_PASSWORD}" else #return_hash_password "${SELECT_PASSWORD}" #[[ -n ${HASH_PASSWORD_NEW} ]] && ubconfig --noexecute --target global set [users] GROUPADD[${SELECT_GROUP}]="${SELECT_USERS}:${SELECT_GID}:${SELECT_OPTIONAL}:${SELECT_ADMINISTRATORS}:${HASH_PASSWORD_NEW}" - ubconfig --noexecute --target global set [users] GROUPADD[${SELECT_GROUP}]="${SELECT_USERS}:${SELECT_GID}:${SELECT_OPTIONAL}:${SELECT_ADMINISTRATORS}:$(return_hash_password hash ${HASHPASSWD} ${SELECT_PASSWORD})" + ubconfig set [users] GROUPADD[${SELECT_GROUP}]="${SELECT_USERS}:${SELECT_GID}:${SELECT_OPTIONAL}:${SELECT_ADMINISTRATORS}:$(return_hash_password hash ${HASHPASSWD} ${SELECT_PASSWORD})" fi fi done 3< <(printf "%s\n" "${!GROUPADD[@]}") diff --git a/ublinux/rc.halt.pre/25-accounts-sync b/ublinux/rc.halt.pre/25-accounts-sync index 9dc37bd..5b0b287 100755 --- a/ublinux/rc.halt.pre/25-accounts-sync +++ b/ublinux/rc.halt.pre/25-accounts-sync @@ -43,7 +43,8 @@ exec_useradd_sync(){ if [[ "$(declare -p USERADD_SYNC 2>/dev/null)" == "declare -A"* ]]; then while IFS= read -u3 SELECT_USER; do #[[ ${USERADD_SYNC[${SELECT_USER}]} =~ 'shutdown' ]] && sync_user ${SELECT_USER} - if [[ ${USERADD_SYNC[${SELECT_USER}]} =~ 'shutdown' ]]; then + # В массиве 0 запись игнорируем, т.к. это параметр не ассоциативного массива + if [[ ${SELECT_USER} != 0 && ${USERADD_SYNC[${SELECT_USER}]} =~ 'shutdown' ]]; then set_ubconfig "${SELECT_USER}" fi done 3< <(printf "%s\n" "${!USERADD_SYNC[@]}") @@ -76,7 +77,8 @@ exec_groupadd_sync(){ fi if [[ "$(declare -p GROUPADD_SYNC 2>/dev/null)" == "declare -A"* ]]; then while IFS= read -u3 SELECT_GROUP; do - if [[ ${GROUPADD_SYNC[${SELECT_GROUP}]} =~ 'shutdown' ]]; then + # В массиве 0 запись игнорируем, т.к. это параметр не ассоциативного массива + if [[ ${SELECT_GROUP} != 0 && ${GROUPADD_SYNC[${SELECT_GROUP}]} =~ 'shutdown' ]]; then set_ubconfig "${SELECT_GROUP}" fi done 3< <(printf "%s\n" "${!GROUPADD_SYNC[@]}") diff --git a/ublinux/templates/ublinux-data.ini b/ublinux/templates/ublinux-data.ini index 88c71d1..61dd5d5 100644 --- a/ublinux/templates/ublinux-data.ini +++ b/ublinux/templates/ublinux-data.ini @@ -256,7 +256,7 @@ SERVICES_ENABLE=dbus-broker,NetworkManager,sshd,swapspace,systemd-timesyncd,cups ## shutdown@users # При завершении работы системы синхронизировать пользователей 1000<=UID<=6000 в системе с глобальной конфигурацией ## shutdown@systems # При завершении работы системы синхронизировать системных пользователей 500<=UID<=999 в системе с глобальной конфигурацией ## shutdown@- # При завершении работы системы синхронизировать диапазон UID пользователей в системе с глобальной конфигурацией -## shutdown@ # При завершении работы системы синхронизировать UID пользователя в системе с глобальной конфигурацией +## shutdown@ # При завершении работы системы синхронизировать UID пользователя в системе с глобальной конфигурацией ## USERADD_SYNC=boot,shutdown ## ## USERADD_SYNC[]='boot,shutdown'