From 511256ba173b0e29d9a85912c0539355f76b67fa Mon Sep 17 00:00:00 2001 From: asmeron Date: Mon, 5 Aug 2024 07:43:02 +0600 Subject: [PATCH] Fix many warnings and save-clean --- ublinux/functions | 4 +- ublinux/rc.halt.pre/86-save-rootcopy | 15 ++++--- ublinux/rc.preinit/03-initvars | 3 +- .../05-save-clean} | 45 ++++++++----------- ublinux/rc.preinit/10-accounts | 3 +- ublinux/rc.preinit/90-save-clean | 31 ------------- 6 files changed, 34 insertions(+), 67 deletions(-) rename ublinux/{rc.halt.pre/89-save-clean => rc.preinit/05-save-clean} (72%) delete mode 100755 ublinux/rc.preinit/90-save-clean diff --git a/ublinux/functions b/ublinux/functions index 0a1ec7d..d09c8a9 100755 --- a/ublinux/functions +++ b/ublinux/functions @@ -427,7 +427,7 @@ user_add(){ sed "/^${SELECT_USERNAME}:/d" -i "${FILE_SHADOW}" printf "%s:%s:%d:%s:%s:%s:%s:%s:%s\n" "${SELECT_USERNAME}" "${SELECT_PASSWORD}" "${SELECT_LASTCHANGED}" "${SELECT_MINDAY}" "${SELECT_MAXDAY}" "${SELECT_WARN}" "${SELECT_INACTIVE}" "${SELECT_EXPIRE}" "${SELECT_NOUSE}" >> "${FILE_SHADOW}" fi - [[ -n ${VERBOSE} ]] && printf "%s:%s:%d:%d:%s:%s:%s:%d:%s:%s:%s:%s:%s\n" "${SELECT_USERNAME}" "${SELECT_GECOS}" "${SELECT_UID}" "${SELECT_GID}" "${SELECT_PASSWORD}" "${SELECT_HOME}" "${SELECT_SHELL}" "${SELECT_LASTCHANGED}" "${SELECT_MINDAY}" "${SELECT_MAXDAY}" "${SELECT_WARN}" "${SELECT_INACTIVE}" "${SELECT_EXPIRE}" + [[ -z ${VERBOSE} ]] || printf "%s:%s:%d:%d:%s:%s:%s:%d:%s:%s:%s:%s:%s\n" "${SELECT_USERNAME}" "${SELECT_GECOS}" "${SELECT_UID}" "${SELECT_GID}" "${SELECT_PASSWORD}" "${SELECT_HOME}" "${SELECT_SHELL}" "${SELECT_LASTCHANGED}" "${SELECT_MINDAY}" "${SELECT_MAXDAY}" "${SELECT_WARN}" "${SELECT_INACTIVE}" "${SELECT_EXPIRE}" } # Удалить пользователя из /etc/passwd /etc/shadow @@ -612,7 +612,7 @@ group_add(){ printf "%s:%s:%s:%s\n" "${SELECT_GROUPNAME}" "${SELECT_PASSWORD}" "${SELECT_ADMINISTRATORS}" "${SELECT_MEMBERS}" >> "${FILE_GSHADOW}" #printf "%s:%s:%s:%s\n" "${SELECT_GROUPNAME}" "${SELECT_PASSWORD}" "${SELECT_ADMINISTRATORS}" "${SELECT_MEMBERS}" fi - [[ -n ${VERBOSE} ]] && printf "%s:%d:%s:%s:%s\n" "${SELECT_GROUPNAME}" "${SELECT_GID}" "${SELECT_MEMBERS}" "${SELECT_PASSWORD}" "${SELECT_ADMINISTRATORS}" + [[ -z ${VERBOSE} ]] || printf "%s:%d:%s:%s:%s\n" "${SELECT_GROUPNAME}" "${SELECT_GID}" "${SELECT_MEMBERS}" "${SELECT_PASSWORD}" "${SELECT_ADMINISTRATORS}" } # Удалить группу из /etc/group /etc/gshadow diff --git a/ublinux/rc.halt.pre/86-save-rootcopy b/ublinux/rc.halt.pre/86-save-rootcopy index 20879e0..7faedd4 100755 --- a/ublinux/rc.halt.pre/86-save-rootcopy +++ b/ublinux/rc.halt.pre/86-save-rootcopy @@ -52,12 +52,13 @@ exec_save_sssd_rootcopy(){ [[ -n ${PATH_ROOTCOPY} ]] || PATH_ROOTCOPY="$(find /memory/layer-base/*/ -maxdepth 1 -type f -name "ublinux-data*.sgn" | head -1)" [[ -n ${PATH_ROOTCOPY} ]] && PATH_ROOTCOPY="${PATH_ROOTCOPY%/*}/${NAME_ROOTCOPY}" || exit 0 + find ${PATH_ROOTCOPY}/etc/ -maxdepth 1 -type f -name "krb5.conf" -delete + find ${PATH_ROOTCOPY}/etc/ -maxdepth 1 -type f -name "krb5.keytab" -delete + find ${PATH_ROOTCOPY}/etc/ -maxdepth 1 -type f -name "realmd.conf" -delete + find ${PATH_ROOTCOPY}/etc/sssd/ -type f -name "*.conf" -delete + # Save DOMAIN settings if [[ -n ${DOMAIN} && -w ${PATH_ROOTCOPY} ]]; then - [[ -f ${PATH_ROOTCOPY}/etc/krb5.conf ]] && rm -f ${PATH_ROOTCOPY}/etc/krb5.conf - [[ -f ${PATH_ROOTCOPY}/etc/krb5.keytab ]] && rm -f ${PATH_ROOTCOPY}/etc/krb5.keytab - [[ -f ${PATH_ROOTCOPY}/etc/realmd.conf ]] && rm -f ${PATH_ROOTCOPY}/etc/realmd.conf - find ${PATH_ROOTCOPY}/etc/sssd/ -type f -name "*.conf" -delete cd ${PATH_CHANGES} find etc/ -type f -name "krb5.conf" -exec install -CDm644 {} ${PATH_ROOTCOPY}/{} \; find etc/ -type f -name "krb5.keytab" -exec install -CDm600 {} ${PATH_ROOTCOPY}/{} \; @@ -70,6 +71,10 @@ exec_save_sssd_rootcopy(){ ##### MAIN ##### ################ - [[ ${SYSTEMBOOT_STATEMODE} == "changes" ]] && exit 0 + # Если файл подключен как ресурс с функциями, то выйти + return 0 2>/dev/null && return 0 + + #[[ ${SYSTEMBOOT_STATEMODE} == "changes" ]] + # т.к. rootcopy не работает в полном сохранении exec_save_rootcopy $@ exec_save_sssd_rootcopy $@ diff --git a/ublinux/rc.preinit/03-initvars b/ublinux/rc.preinit/03-initvars index bd9f0ef..e567576 100755 --- a/ublinux/rc.preinit/03-initvars +++ b/ublinux/rc.preinit/03-initvars @@ -16,4 +16,5 @@ SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2> debug_mode "$0" "$@" # Filter not variable sell symbols from param kernel - grep -Eiv ".*-.*=.*|.*\..*=.*" ${ROOTFS}/etc/initvars > ${ROOTFS}/etc/initvars + INITVARS_DATA=$(grep -Eiv ".*-.*=.*|.*\..*=.*" ${ROOTFS}/etc/initvars) + echo "${INITVARS_DATA}" > ${ROOTFS}/etc/initvars diff --git a/ublinux/rc.halt.pre/89-save-clean b/ublinux/rc.preinit/05-save-clean similarity index 72% rename from ublinux/rc.halt.pre/89-save-clean rename to ublinux/rc.preinit/05-save-clean index 65583d5..b6c3be8 100755 --- a/ublinux/rc.halt.pre/89-save-clean +++ b/ublinux/rc.preinit/05-save-clean @@ -36,51 +36,44 @@ exec_save_clean(){ [[ -n ${PATH_HOMES} ]] || PATH_HOMES="$(find /memory/layer-base/*/ -maxdepth 1 -type f -name "ublinux-data*.sgn" | head -1)" [[ -n ${PATH_HOMES} ]] && PATH_HOMES="${PATH_HOMES%/*}/${NAME_HOMES}" || return 1 } - check_clean_changes(){ - [[ -n $(ls -A ${PATH_CHANGES} 2>/dev/null) ]] && NEED_REBOOT=yes || return 1 - } - check_clean_rootcopy(){ - [[ -n $(ls -A ${PATH_ROOTCOPY} 2>/dev/null) ]] && NEED_REBOOT=yes || return 1 - } - check_clean_homes(){ - local STATUS= - find ${PATH_HOMES} -maxdepth 2 -type d -name ".config" | while read -r PATH_USER_HOME; do - [[ -n $(ls -A ${PATH_USER_HOME%/*} 2>/dev/null) ]] && NEED_REBOOT=yes && STATUS=1 - done - [[ -z ${STATUS} ]] || return 1 - } clean_changes(){ find ${PATH_CHANGES}/{..?*,.[!.]*,*} -delete 2>/dev/null + NEED_REBOOT=yes } clean_rootcopy(){ find ${PATH_ROOTCOPY}/{..?*,.[!.]*,*} -delete 2>/dev/null + NEED_REBOOT=yes } clean_homes(){ find ${PATH_HOMES} -maxdepth 2 -type d -name ".config" | while read -r PATH_USER_HOME; do find ${PATH_USER_HOME%/*} -delete 2>/dev/null done } + clean_home_root(){ + find ${PATH_CHANGES} -maxdepth 1 -type d -name "root" | while read -r PATH_USER_HOME; do + find ${PATH_USER_HOME} -delete 2>/dev/null + done + } # Если задан парметр, то использовать как значение - [[ -n $@ ]] && SAVE_CLEAN=$@ + CMDLINE_SAVE_CLEAN=$(cmdline_value save_clean) + [[ -z ${CMDLINE_SAVE_CLEAN} ]] || SAVE_CLEAN=${CMDLINE_SAVE_CLEAN} + local NEED_REBOOT= if [[ -n ${SAVE_CLEAN} ]]; then local NAME_CHANGES="changes" local NAME_ROOTCOPY="rootcopy" local NAME_HOMES="homes" - local NEED_REBOOT= - if [[ ${SAVE_CLEAN} =~ 'all' ]]; then - find_path_changes && check_clean_changes && clean_changes - find_path_rootcopy && check_clean_rootcopy && clean_rootcopy - find_path_homes && check_clean_homes && clean_homes - else - [[ ${SAVE_CLEAN} =~ 'changes' ]] && find_path_changes && check_clean_changes && clean_changes - [[ ${SAVE_CLEAN} =~ 'rootcopy' ]] && find_path_rootcopy && check_clean_rootcopy && clean_rootcopy - [[ ${SAVE_CLEAN} =~ 'homes' ]] && find_path_homes && check_clean_homes && clean_homes - fi - ${CMD_CHROOT} /usr/bin/ubconfig --quiet --target global remove [save] SAVE_CLEAN + #local PATH+=":${ROOTFS}/usr/bin" + PATH_DATA="$(find /memory/layer-base/*/ -maxdepth 1 -type f -name "ublinux-data*.sgn" | head -1)" + [[ -e ${PATH_DATA%/*}/ublinux.ini ]] && ${ROOTFS}/usr/bin/ubconfig --quiet --target ${PATH_DATA%/*}/ublinux.ini remove [save] SAVE_CLEAN + [[ -e ${SYSCONF}/save ]] && ${ROOTFS}/usr/bin/ubconfig --quiet --target ${SYSCONF}/save remove / SAVE_CLEAN + [[ ${SAVE_CLEAN} =~ .*(all|changes).* ]] && find_path_changes && clean_changes + [[ ${SAVE_CLEAN} =~ .*(all|rootcopy).* ]] && find_path_rootcopy && clean_rootcopy + [[ ${SAVE_CLEAN} =~ .*(all|homes).* ]] && find_path_homes && clean_homes + [[ ${SAVE_CLEAN} =~ .*(all|homes).* ]] && find_path_changes && clean_home_root sync; sync; sync; echo 3 > /proc/sys/vm/drop_caches - [[ -n ${NEED_REBOOT} ]] || return 1 fi + [[ -z ${NEED_REBOOT} ]] || poweroff --force --reboot } ################ diff --git a/ublinux/rc.preinit/10-accounts b/ublinux/rc.preinit/10-accounts index 03b0623..c9b4e21 100755 --- a/ublinux/rc.preinit/10-accounts +++ b/ublinux/rc.preinit/10-accounts @@ -99,7 +99,7 @@ create_home(){ ${CMD_CHROOT} /usr/bin/chmod -f u+rw,g-rwx,o-rwx "${SELECT_HOME}" if [[ -n ${SELECT_FORCESKEL} ]]; then cp -Taf ${ROOTFS}/etc/skel "${ROOTFS}${SELECT_HOME}" - ${CMD_CHROOT} cd /etc/skel && find . -exec chown -f ${SELECT_USERNAME}:${SELECT_GROUP} ${SELECT_HOME}/{} \; + ${CMD_CHROOT} bash -c "cd /etc/skel && find . -exec chown -f ${SELECT_USERNAME}:${SELECT_GROUP} ${SELECT_HOME}/{} \;" fi else ${CMD_CHROOT} install -dm700 -o ${SELECT_USERNAME} -g ${SELECT_GROUP} "${SELECT_HOME}" @@ -571,7 +571,6 @@ exec_06_useradd(){ if [[ ${UPDATEHOME,,} == @(yes|y|enable) || ${UPDATEHOME[${SELECT_USERNAME}],,} == @(yes|y|enable) ]]; then create_home "${SELECT_USERNAME}" force fi - } # Обработать всех пользователей у которых указан UID в первую очередь local LIST_USERADD_UID= LIST_USERADD_NOUID= diff --git a/ublinux/rc.preinit/90-save-clean b/ublinux/rc.preinit/90-save-clean deleted file mode 100755 index 2140b3d..0000000 --- a/ublinux/rc.preinit/90-save-clean +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env bash - -ENABLED=yes -[[ ${ENABLED} == "yes" ]] || exit 0 -DEBUGMODE=no - -[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; } -SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 -SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 -debug_mode "$0" "$@" - -SYSCONF="${ROOTFS}${SYSCONF}" -SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null -SOURCE=${SYSCONF}/save; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null - -## Удалить указанные изменения, после очистки параметр удаляется SAVE_CLEAN= -## Основная очиста выполняется при завершении работы /rc.halt.pre/*-save-clean, но если парметр не удалился или была задана опция в GRUB, то повторно выполнить очистку -exec_save_clean(){ - CMDLINE_SAVE_CLEAN=$(cmdline_value save_clean) - [[ -n ${CMDLINE_SAVE_CLEAN} ]] && SAVE_CLEAN=${CMDLINE_SAVE_CLEAN} - if [[ -n ${SAVE_CLEAN} ]]; then - FILE_EXEC=$(find ${ROOTFS}/usr/lib/ublinux/rc.halt.pre -iname "*-save-clean") - [[ -n ${FILE_EXEC} ]] && ${FILE_EXEC} ${SAVE_CLEAN} && poweroff --force --reboot - fi -} - -################ -##### MAIN ##### -################ - - exec_save_clean \ No newline at end of file