master v2.114
Dmitry Razumov 4 months ago
parent bf388bf124
commit 517cb2a2c6
Signed by: asmeron
GPG Key ID: 50BC1DB583B79706

@ -17,6 +17,7 @@ declare -A REPOPUBLIC_CACHE
declare -A AUTOUPDATE declare -A AUTOUPDATE
declare -A UBPILE declare -A UBPILE
declare -A AUTOINSTALL declare -A AUTOINSTALL
declare -A UPDATEHOME
##/rc.desktop/all/* is launching when desktop is ready ##/rc.desktop/all/* is launching when desktop is ready
@ -158,6 +159,7 @@ ADMGROUPS=wheel,vboxsf,disk
ADMUID=1000 ADMUID=1000
ADDADM=yes ADDADM=yes
HASHPASSWD=yescrypt HASHPASSWD=yescrypt
UPDATEHOME[root]=yes
#/rc.preinit/50-xorg #/rc.preinit/50-xorg
#NVIDIATEST="nvidia-current nvidia340 nvidia304 nvidia" #NVIDIATEST="nvidia-current nvidia340 nvidia304 nvidia"

@ -8,8 +8,10 @@ ENABLED=yes
[[ ${ENABLED} == "yes" ]] || exit 0 [[ ${ENABLED} == "yes" ]] || exit 0
# some cleanups # some cleanups
rm -fr /tmp/* /mnt/live/memory/changes/usr/share/apps/ksplash/Themes/Default 2>/dev/null rm -fr /tmp/* /mnt/live/memory/changes/usr/share/apps/ksplash/Themes/Default 2>/dev/null
#rm -f /usr/share/ublinux/wallpapers/default*.jpg 2>/dev/null # rm -f /usr/share/ublinux/wallpapers/default*.jpg 2>/dev/null
# cleanup empty dirs # cleanup empty dirs
for a in /media/* /mnt/* ;do rmdir $a >/dev/null 2>&1 ;done for a in /media/* /mnt/*; do
rmdir $a >/dev/null 2>&1
done

@ -21,47 +21,45 @@ ENABLED=yes
PATH_KERNEL=$(find /memory/layer-base/*/ -maxdepth 1 -type f -name "vmlinuz*" | head -1 | xargs dirname) PATH_KERNEL=$(find /memory/layer-base/*/ -maxdepth 1 -type f -name "vmlinuz*" | head -1 | xargs dirname)
# Удаляем модули, отмеченные на устаревшие # Удаляем модули, отмеченные на устаревшие
for F_REMOVE in $(cat ${F_UPGRADE_CONF} | uniq | grep "remove=" | sed "s/remove=//"); do [[ -f ${F_UPGRADE_CONF} ]] && for F_REMOVE in $(cat ${F_UPGRADE_CONF} | uniq | grep "remove=" | sed "s/remove=//"); do
[[ -f ${F_REMOVE} ]] && rm -f ${F_REMOVE} 2>/dev/null [[ -f ${F_REMOVE} ]] && rm -vf ${F_REMOVE} 2>/dev/null
done done
# Переименовываем модули, отмеченные на обновляемые # Переименовываем модули, отмеченные на обновляемые
for F_RENAME_UPGRADE in $(find ${PATH_BASE} ${PATH_MODULES} -type f -name "*.upgrade"); do [[ -n ${PATH_BASE} || -n ${PATH_MODULES} ]] && for F_RENAME_UPGRADE in $(find ${PATH_BASE} ${PATH_MODULES} -type f -name "*.upgrade"); do
[[ -f ${F_RENAME_UPGRADE} ]] && mv -f ${F_RENAME_UPGRADE} ${F_RENAME_UPGRADE/.${EXT}.upgrade/.${EXT}} 2>/dev/null [[ -f ${F_RENAME_UPGRADE} ]] && mv -vf ${F_RENAME_UPGRADE} ${F_RENAME_UPGRADE/.${EXT}.upgrade/.${EXT}} 2>/dev/null
done done
# Перемещаем модули, отмеченные на обновляемые # Перемещаем модули, отмеченные на обновляемые
for F_UPGRADE in $(cat ${F_UPGRADE_CONF} | uniq | grep "upgrade=" | sed "s/install=//"); do [[ -f ${F_UPGRADE_CONF} ]] && for F_UPGRADE in $(cat ${F_UPGRADE_CONF} | uniq | grep "upgrade=" | sed "s/install=//"); do
for PATH_UPGRADE_ITEM in ${PATH_UPGRADE}; do [[ -n ${PATH_UPGRADE} ]] && for PATH_UPGRADE_ITEM in ${PATH_UPGRADE}; do
[[ -f ${PATH_UPGRADE_ITEM}/${F_UPGRADE##*/} ]] && mv -f ${PATH_UPGRADE_ITEM}/${F_UPGRADE##*/} ${F_UPGRADE%/*} 2>/dev/null [[ -f ${PATH_UPGRADE_ITEM}/${F_UPGRADE##*/} ]] && mv -vf ${PATH_UPGRADE_ITEM}/${F_UPGRADE##*/} ${F_UPGRADE%/*} 2>/dev/null
done done
done done
# Перемещаем модули, отмеченные на новые на установку # Перемещаем модули, отмеченные на новые на установку
for F_INSTALL in $(cat ${F_UPGRADE_CONF} | uniq | grep "install=" | sed "s/install=//"); do [[ -f ${F_UPGRADE_CONF} ]] && for F_INSTALL in $(cat ${F_UPGRADE_CONF} | uniq | grep "install=" | sed "s/install=//"); do
for PATH_UPGRADE_ITEM in ${PATH_UPGRADE}; do [[ -n ${PATH_UPGRADE} ]] && for PATH_UPGRADE_ITEM in ${PATH_UPGRADE}; do
[[ -f ${PATH_UPGRADE_ITEM}/${F_INSTALL##*/} ]] && mv -f ${PATH_UPGRADE_ITEM}/${F_INSTALL##*/} ${F_INSTALL%/*} 2>/dev/null [[ -f ${PATH_UPGRADE_ITEM}/${F_INSTALL##*/} ]] && mv -vf ${PATH_UPGRADE_ITEM}/${F_INSTALL##*/} ${F_INSTALL%/*} 2>/dev/null
done done
done done
# Переименовываем модули, отмеченные на обновление, но отсутствующие в upgrade.conf # Переименовываем модули, отмеченные на обновление, но отсутствующие в upgrade.conf
for F_NOMARK_UPGRADE in $(find ${PATH_UPGRADE} -type f -name "*.${EXT}*"); do [[ -n ${PATH_UPGRADE} ]] && for F_NOMARK_UPGRADE in $(find ${PATH_UPGRADE} -type f -name "*.${EXT}*"); do
NAME_NOMARK_UPGRADE=${F_NOMARK_UPGRADE##*/} NAME_NOMARK_UPGRADE=${F_NOMARK_UPGRADE##*/}
if [[ ${NAME_NOMARK_UPGRADE} =~ ^[0-9]{3}-.* ]]; then if [[ ${NAME_NOMARK_UPGRADE} =~ ^[0-9]{3}-.* ]]; then
[[ -f ${F_NOMARK_UPGRADE} ]] && mv -f ${F_NOMARK_UPGRADE} $(tail -1 <<< ${PATH_BASE})/${NAME_NOMARK_UPGRADE/.upgrade/} [[ -f ${F_NOMARK_UPGRADE} ]] && mv -vf ${F_NOMARK_UPGRADE} $(tail -1 <<< ${PATH_BASE})/${NAME_NOMARK_UPGRADE/.upgrade/} 2>/dev/null
else else
[[ -f ${F_NOMARK_UPGRADE} ]] && mv -f ${F_NOMARK_UPGRADE} $(tail -1 <<< ${PATH_MODULES})/${NAME_NOMARK_UPGRADE/.upgrade/} [[ -f ${F_NOMARK_UPGRADE} ]] && mv -vf ${F_NOMARK_UPGRADE} $(tail -1 <<< ${PATH_MODULES})/${NAME_NOMARK_UPGRADE/.upgrade/} 2>/dev/null
fi fi
done done
# Удаляем модули с одинаковыми именами старых версий # Удаляем модули с одинаковыми именами старых версий
find ${PATH_BASE} ${PATH_MODULES} -maxdepth 1 -name "*.${EXT}" 2>/dev/null | sed -En "s/(.*\/)((.*)-([^-]+)-([^-]+)-[^-]+\.${EXT})/\1|\3|\2/p" | sort --field-separator="|" --key=3rbV | awk -F '|' 'prefixes[$2]++ {print $1$3}' | xargs rm -vf 2>/dev/null [[ -n ${PATH_BASE} || -n ${PATH_MODULES} ]] && find ${PATH_BASE} ${PATH_MODULES} -maxdepth 1 -name "*.${EXT}" 2>/dev/null | sed -En "s/(.*\/)((.*)-([^-]+)-([^-]+)-[^-]+\.${EXT})/\1|\3|\2/p" | sort --field-separator="|" --key=3rbV | awk -F '|' 'prefixes[$2]++ {print $1$3}' | xargs -I {} rm -vf {} 2>/dev/null
# TODO: Вырезать из файла чек сумм имена удаляемых модулей # TODO: Вырезать из файла чек сумм имена удаляемых модулей
# Обновление найденных модулей ядра # Обновление найденных модулей ядра
find ${PATH_UPGRADE} -type f -regextype sed -regex ".*/vmlinuz-[0-9.]\{5,8\}-[0-9]\{1,4\}" -exec mv -ft ${PATH_KERNEL} {} + [[ -n ${PATH_UPGRADE} && -d ${PATH_KERNEL} ]] && find ${PATH_UPGRADE} -type f -regextype sed -regex ".*/vmlinuz-[0-9.]\{5,8\}-[0-9]\{1,4\}" -exec mv -vft "${PATH_KERNEL}" {} +
find ${PATH_UPGRADE} -type f -regextype sed -regex ".*/ublinux-[0-9.]\{5,8\}-[0-9]\{1,4\}" -exec mv -ft ${PATH_KERNEL} {} + [[ -n ${PATH_UPGRADE} && -d ${PATH_KERNEL} ]] && find ${PATH_UPGRADE} -type f -regextype sed -regex ".*/ublinux-[0-9.]\{5,8\}-[0-9]\{1,4\}" -exec mv -vft "${PATH_KERNEL}" {} +
rm -f ${F_UPGRADE_CONF}
[[ -f ${F_UPGRADE_CONF} ]] && rm -vf "${F_UPGRADE_CONF}"

@ -12,6 +12,7 @@ PATH_KERNEL="/usr/lib/modules"
copy_newkernel_to_boot(){ copy_newkernel_to_boot(){
# Найти все файлы ядра и initramfs и которые отсутствуют # Найти все файлы ядра и initramfs и которые отсутствуют
mountpoint --quiet "${PATH_BOOT}" || return 0
find ${PATH_KERNEL} -maxdepth 2 -name "vmlinuz-*.*.*-*" -print | while read FIND_FILE; do find ${PATH_KERNEL} -maxdepth 2 -name "vmlinuz-*.*.*-*" -print | while read FIND_FILE; do
[[ $(stat -c%s $(readlink -e ${FIND_FILE} 2>/dev/null)) != $(stat -c%s ${PATH_BOOT}/${FIND_FILE##*/} 2>/dev/null) ]] \ [[ $(stat -c%s $(readlink -e ${FIND_FILE} 2>/dev/null)) != $(stat -c%s ${PATH_BOOT}/${FIND_FILE##*/} 2>/dev/null) ]] \
&& install -CDm400 -o root -g root $(readlink -e ${FIND_FILE}) ${PATH_BOOT}/${FIND_FILE##*/} && install -CDm400 -o root -g root $(readlink -e ${FIND_FILE}) ${PATH_BOOT}/${FIND_FILE##*/}
@ -28,28 +29,28 @@ copy_newkernel_to_boot(){
remove_oldkernel_from_boot(){ remove_oldkernel_from_boot(){
# Найти все файлы ядра "vmlinuz-*.*.*-*" и initramfs "ublinux-*.*.*-*" в ${PATH_BOOT}/boot и которые отсутствуют в /usr/modules/*/ удалить # Найти все файлы ядра "vmlinuz-*.*.*-*" и initramfs "ublinux-*.*.*-*" в ${PATH_BOOT}/boot и которые отсутствуют в /usr/modules/*/ удалить
find ${PATH_BOOT} -maxdepth 1 -name "vmlinuz-*.*.*-*" -exec bash -c "find ${PATH_KERNEL} -maxdepth 2 -name \${1##*/} -exec false \{\} + && rm -f \$1" bash {} \; mountpoint --quiet "${PATH_BOOT}" || return 0
find ${PATH_BOOT} -maxdepth 1 -name "ublinux-*.*.*-*" -exec bash -c "find ${PATH_KERNEL} -maxdepth 2 -name \${1##*/} -exec false \{\} + && rm -f \$1" bash {} \; find ${PATH_BOOT} -maxdepth 1 -name "vmlinuz-*.*.*-*" -exec bash -c "find ${PATH_KERNEL} -maxdepth 2 -name \${1##*/} -exec false \{\} + && echo rm -f \$1" bash {} \;
find ${PATH_BOOT} -maxdepth 1 -name "ublinux-*.*.*-*" -exec bash -c "find ${PATH_KERNEL} -maxdepth 2 -name \${1##*/} -exec false \{\} + && echo rm -f \$1" bash {} \;
} }
exec_prepare_menu_kernel(){ exec_prepare_menu_kernel(){
# Сформировать меню выбора версии ядра # Сформировать меню выбора версии ядра
mountpoint --quiet "${PATH_BOOT}" || return 0
FILE_LANG=${LANG%_*} FILE_LANG=${LANG%_*}
FILE_BOOTMENU_KERNEL="/memory/data/from/0/boot/grub/ublinux/grub_${FILE_LANG}_settings_kernel.cfg" FILE_BOOTMENU_KERNEL="/memory/data/from/0/boot/grub/ublinux/grub_${FILE_LANG}_settings_kernel.cfg"
PATH_BOOT_KERNEL="/memory/layer-base/0"
TXT_RETURN="Return"; TXT_SELECTKERNEL="Select kernel version" TXT_RETURN="Return"; TXT_SELECTKERNEL="Select kernel version"
TXT_RU_RETURN="Возврат"; TXT_RU_SELECTKERNEL="Выбрать версию ядра" TXT_RU_RETURN="Возврат"; TXT_RU_SELECTKERNEL="Выбрать версию ядра"
[[ ${FILE_LANG} == "ru" ]] && TXT_RETURN=${TXT_RU_RETURN} && TXT_SELECTKERNEL=${TXT_RU_SELECTKERNEL} [[ ${FILE_LANG} == "ru" ]] && TXT_RETURN=${TXT_RU_RETURN} && TXT_SELECTKERNEL=${TXT_RU_SELECTKERNEL}
[[ -d ${PATH_BOOT_KERNEL} ]] || return 0 [[ -f ${FILE_BOOTMENU_KERNEL} ]] && echo rm -f ${FILE_BOOTMENU_KERNEL}
[[ -f ${FILE_BOOTMENU_KERNEL} ]] && rm -f ${FILE_BOOTMENU_KERNEL} for VMLINUZ_FILES in ${PATH_BOOT}/vmlinuz-*; do
for VMLINUZ_FILES in ${PATH_BOOT_KERNEL}/vmlinuz-*; do
[[ -f "${VMLINUZ_FILES}" ]] || continue [[ -f "${VMLINUZ_FILES}" ]] || continue
[[ ${VMLINUZ_FILES} =~ .*\/vmlinuz\-([0-9]+\.[0-9]+\.[a-z0-9_]+\-[0-9]+)$ ]] [[ ${VMLINUZ_FILES} =~ .*\/vmlinuz\-([0-9]+\.[0-9]+\.[a-z0-9_]+\-[0-9]+)$ ]]
VMLINUZ_VER=${BASH_REMATCH[1]} VMLINUZ_VER=${BASH_REMATCH[1]}
if [[ -n ${VMLINUZ_VER} && -f ${PATH_BOOT_KERNEL}/ublinux-${VMLINUZ_VER} ]]; then if [[ -n ${VMLINUZ_VER} && -f ${PATH_BOOT}/ublinux-${VMLINUZ_VER} ]]; then
VMLINUZ_FILE="vmlinuz-\${VMLINUZ_VER}" VMLINUZ_FILE="vmlinuz-\${VMLINUZ_VER}"
UBLINUX_FILE="ublinux-\${VMLINUZ_VER}" UBLINUX_FILE="ublinux-\${VMLINUZ_VER}"
[[ -f ${PATH_BOOT_KERNEL}/addon-${VMLINUZ_VER} ]] && ADDON_FILE="addon-\${VMLINUZ_VER}" || ADDON_FILE="" [[ -f ${PATH_BOOT}/addon-${VMLINUZ_VER} ]] && ADDON_FILE="addon-\${VMLINUZ_VER}" || ADDON_FILE=""
cat << EOF >> "${FILE_BOOTMENU_KERNEL}" cat << EOF >> "${FILE_BOOTMENU_KERNEL}"
menuentry "${TXT_SELECTKERNEL}: ${VMLINUZ_VER}" --unrestricted { menuentry "${TXT_SELECTKERNEL}: ${VMLINUZ_VER}" --unrestricted {
VMLINUZ_VER="${VMLINUZ_VER}" VMLINUZ_VER="${VMLINUZ_VER}"

@ -15,7 +15,7 @@ XFCE4_LOGOUT_BUTTON=".xfsm-logout-buttons > box:first-child button:nth-child(1)
## Настройка GTK3 для XFCE4 ## Настройка GTK3 для XFCE4
if [[ -n ${XFCE4_DIALOGPOWER_LOGOUT[@]} ]]; then if [[ -n ${XFCE4_DIALOGPOWER_LOGOUT[@]} ]]; then
for SELECT_USERS in "${!XFCE4_DIALOGPOWER_LOGOUT[@]}"; do for SELECT_USERS in "${!XFCE4_DIALOGPOWER_LOGOUT[@]}"; do
USERS=$(cut -d: -f1 <<< ${SELECT_USERS} | tr " ,;" "\n") USERS=$(cut -d: -f1 <<< ${SELECT_USERS} | tr " ,;" "\n")
# Выбрать пользователей из указанных групп @.. # Выбрать пользователей из указанных групп @..
@ -27,11 +27,9 @@ XFCE4_LOGOUT_BUTTON=".xfsm-logout-buttons > box:first-child button:nth-child(1)
if [[ ${XFCE4_DIALOGPOWER_LOGOUT[${SELECT_USERS}],,} == "hide" ]]; then if [[ ${XFCE4_DIALOGPOWER_LOGOUT[${SELECT_USERS}],,} == "hide" ]]; then
grep -q "${XFCE4_LOGOUT_BUTTON}" ${FILE_GTKCSS} 2>/dev/null || echo "${XFCE4_LOGOUT_BUTTON}" >> ${FILE_GTKCSS} grep -q "${XFCE4_LOGOUT_BUTTON}" ${FILE_GTKCSS} 2>/dev/null || echo "${XFCE4_LOGOUT_BUTTON}" >> ${FILE_GTKCSS}
else else
echo sed "/${XFCE4_LOGOUT_BUTTON}/d" -i ${FILE_GTKCSS} sed "/${XFCE4_LOGOUT_BUTTON}/d" -i ${FILE_GTKCSS}
fi fi
fi fi
done < <(echo -e "$(grep -v "^@" <<< ${USERS})\n${USERS_GROUP}" | uniq) done < <(echo -e "$(grep -v "^@" <<< ${USERS})\n${USERS_GROUP}" | uniq)
done done
fi fi

@ -23,24 +23,32 @@ exec_statemode(){
## Setting state mode ## Setting state mode
STATE_MODE=$(cmdline_value ub.mode) STATE_MODE=$(cmdline_value ub.mode)
STATE_HOME=$(cmdline_value ub.home) STATE_HOME=$(cmdline_value ub.home)
STATE_COPY2RAM=$(cmdline_parameter ub.copy2ram)
sed '/SYSTEMBOOT_STATEMODE=.*/d' -i ${SYSCONF}/config
if [[ ${STATE_MODE} =~ ^"changes"$ ]]; then if [[ ${STATE_MODE} =~ ^"changes"$ ]]; then
## Полное сохранение ub.mode=changes ## Полное сохранение HDD: ub.mode=changes
sed -e '$a\SYSTEMBOOT_STATEMODE=changes' -e '/SYSTEMBOOT_STATEMODE=.*/d' -i ${SYSCONF}/config echo 'SYSTEMBOOT_STATEMODE=changes' > ${SYSCONF}/config
elif [[ ${STATE_MODE} =~ ^("toxzm"|"machines")$ ]]; then elif [[ ${STATE_MODE} =~ ^("toxzm"|"machines")$ ]]; then
## Сохранение в модуль ub.mode=toxzm ub.mode=machines ## Сохранение RAM и при выключении в модуль: ub.mode=toxzm ub.mode=machines
sed -e '$a\SYSTEMBOOT_STATEMODE=module' -e '/SYSTEMBOOT_STATEMODE=.*/d' -i ${SYSCONF}/config echo 'SYSTEMBOOT_STATEMODE=module' > ${SYSCONF}/config
elif [[ ${STATE_MODE} == "" && ${STATE_HOME} == "" ]]; then elif [[ ${STATE_MODE} == "" && ${STATE_HOME} == "" && ${STATE_COPY2RAM} == "" ]]; then
## Полная песочница RAM ub.mode= ; ub.home= ## Полная песочница, изменения в RAM: ub.mode= ; ub.home=
sed -e '$a\SYSTEMBOOT_STATEMODE=sandbox' -e '/SYSTEMBOOT_STATEMODE=.*/d' -i ${SYSCONF}/config echo 'SYSTEMBOOT_STATEMODE=sandbox' > ${SYSCONF}/config
elif [[ ${STATE_MODE} == "" && ${STATE_HOME} == "" && ${STATE_COPY2RAM} == "ub.copy2ram" ]]; then
## Полная песочница, изменения в RAM с загрузкой модулей в RAM: ub.mode= ; ub.home= ; ub.copy2ram
echo 'SYSTEMBOOT_STATEMODE=sandbox_copy2ram' > ${SYSCONF}/config
elif [[ ${STATE_MODE} == "" && ${STATE_HOME} =~ ^"/" ]]; then elif [[ ${STATE_MODE} == "" && ${STATE_HOME} =~ ^"/" ]]; then
## Песочница с сохранением профиля пользователя ub.mode= ; ub.home=/ublinux-data/homes ## Песочница, изменения в RAM с сохранением профиля пользователя: ub.mode= ; ub.home=/ublinux-data/homes
sed -e '$a\SYSTEMBOOT_STATEMODE=sandbox_ram_home' -e '/SYSTEMBOOT_STATEMODE=.*/d' -i ${SYSCONF}/config echo 'SYSTEMBOOT_STATEMODE=sandbox_ram_home' > ${SYSCONF}/config
elif [[ ${STATE_MODE} == "clear" && ${STATE_HOME} == "" ]]; then elif [[ ${STATE_MODE} == "clear" && ${STATE_HOME} == "" ]]; then
## Полная песочница HDD ub.mode=clear ; ub.home= ## Полная песочница, изменения в HDD: ub.mode=clear ; ub.home=
sed -e '$a\SYSTEMBOOT_STATEMODE=sandbox_hdd' -e '/SYSTEMBOOT_STATEMODE=.*/d' -i ${SYSCONF}/config echo 'SYSTEMBOOT_STATEMODE=sandbox_hdd' > ${SYSCONF}/config
elif [[ ${STATE_MODE} == "clear" && ${STATE_HOME} =~ ^"/" ]]; then elif [[ ${STATE_MODE} == "clear" && ${STATE_HOME} =~ ^"/" ]]; then
## Полная песочница HDD с сохранением профиля пользователя ub.mode=clear ; ub.home= ## Песочница, изменения в HDD с сохранением профиля пользователя: ub.mode=clear ; ub.home=/...
sed -e '$a\SYSTEMBOOT_STATEMODE=sandbox_hdd_home' -e '/SYSTEMBOOT_STATEMODE=.*/d' -i ${SYSCONF}/config echo 'SYSTEMBOOT_STATEMODE=sandbox_hdd_home' > ${SYSCONF}/config
else
## Режим пользователя
echo 'SYSTEMBOOT_STATEMODE=manual' > ${SYSCONF}/config
fi fi
} }

@ -738,8 +738,6 @@ exec_08_user_members(){
[[ ${SELECT_EXTRAGROUPS} == @(""|"x") ]] && SELECT_EXTRAGROUPS="${USERGROUPS},${DEFAULTGROUP}" || SELECT_EXTRAGROUPS+=",${USERGROUPS},${DEFAULTGROUP}" [[ ${SELECT_EXTRAGROUPS} == @(""|"x") ]] && SELECT_EXTRAGROUPS="${USERGROUPS},${DEFAULTGROUP}" || SELECT_EXTRAGROUPS+=",${USERGROUPS},${DEFAULTGROUP}"
[[ ${SELECT_UID} == ${ADMUID} && ${ADDADM} == "yes" ]] && SELECT_EXTRAGROUPS+=",${ADMGROUPS}" [[ ${SELECT_UID} == ${ADMUID} && ${ADDADM} == "yes" ]] && SELECT_EXTRAGROUPS+=",${ADMGROUPS}"
SELECT_EXTRAGROUPS="${SELECT_EXTRAGROUPS//;/,}"; SELECT_EXTRAGROUPS="${SELECT_EXTRAGROUPS//,,/,}" SELECT_EXTRAGROUPS="${SELECT_EXTRAGROUPS//;/,}"; SELECT_EXTRAGROUPS="${SELECT_EXTRAGROUPS//,,/,}"
# Убираем дубликаты групп
SELECT_EXTRAGROUPS=$(sort -u <<< ${SELECT_EXTRAGROUPS//,/$'\n'}); SELECT_EXTRAGROUPS=${SELECT_EXTRAGROUPS//$'\n'/,}
[[ ${SELECT_EXTRAGROUPS} =~ ','$ ]] && SELECT_EXTRAGROUPS=${SELECT_EXTRAGROUPS%*,} [[ ${SELECT_EXTRAGROUPS} =~ ','$ ]] && SELECT_EXTRAGROUPS=${SELECT_EXTRAGROUPS%*,}
[[ ${SELECT_EXTRAGROUPS:0:1} == "," ]] && SELECT_EXTRAGROUPS="${SELECT_EXTRAGROUPS:1}" [[ ${SELECT_EXTRAGROUPS:0:1} == "," ]] && SELECT_EXTRAGROUPS="${SELECT_EXTRAGROUPS:1}"
# Создавать группы из параметра SELECT_EXTRAGROUPS # Создавать группы из параметра SELECT_EXTRAGROUPS
@ -751,7 +749,7 @@ exec_08_user_members(){
user_remove_group "$(printf "%s," "${!USERADD[@]}")" "%all" user_remove_group "$(printf "%s," "${!USERADD[@]}")" "%all"
# Добавить пользователей в группы # Добавить пользователей в группы
while IFS= read -ru3 SELECT_USERNAME; do while IFS= read -ru3 SELECT_USERNAME; do
useradd_local "${SELECT_USERNAME}" useradd_local ${SELECT_USERNAME}
done 3< <(printf "%s\n" "${!USERADD[@]}" | sort -V) done 3< <(printf "%s\n" "${!USERADD[@]}" | sort -V)
elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]] && [[ ${#USERADD[@]} -ne 0 ]]; then elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]] && [[ ${#USERADD[@]} -ne 0 ]]; then
if [[ ${PARAM%%=*} =~ ^'USERADD['(.*)']' ]]; then if [[ ${PARAM%%=*} =~ ^'USERADD['(.*)']' ]]; then
@ -790,6 +788,12 @@ exec_08_user_members(){
fi fi
} }
# Для root принудительно обновить skel в домаший каталог, если включено. По умолчанию включено
exec_98_updatehome_root(){
local SELECT_USER="root"
[[ "$(declare -p UPDATEHOME 2>/dev/null)" == "declare -A"* && ${UPDATEHOME[${SELECT_USER}],,} == @(yes|y|enable) || ${UPDATEHOME} == @(yes|y|enable) ]] && create_home "${SELECT_USER}" yes
}
# Autodetect DM_HINT_PASSWORD # Autodetect DM_HINT_PASSWORD
# Если пароли по умолчанию, то DM_HINT_PASSWORD=yes # Если пароли по умолчанию, то DM_HINT_PASSWORD=yes
exec_99_dm_hint_password(){ exec_99_dm_hint_password(){

@ -21,10 +21,16 @@ SYSCONF="${ROOTFS}${SYSCONF}"
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
# Если система загружена в песочнице без HOME и HOME пустой, то HOME подключаем к TMPFS для того что-бы работал аттрибут immutable # Если система загружена в песочнице без HOME и HOME пустой, то HOME подключаем к TMPFS для того что-бы работал аттрибут immutable
exec_remounthome(){ exec_remount_home(){
[[ ${SYSTEMBOOT_STATEMODE} == @(sandbox|sandbox_hdd) ]] && find ${ROOTFS}/home -maxdepth 0 -empty -exec mount -t tmpfs tmpfs {} \; [[ ${SYSTEMBOOT_STATEMODE} == @(sandbox|sandbox_hdd) ]] && find ${ROOTFS}/home -maxdepth 0 -empty -exec mount -t tmpfs tmpfs {} \;
} }
# Если система в полной песочнице и загрузка модулей в RAM, то отмонтируем каталоги загрузки модулей
exec_unmount_root(){
[[ ${SYSTEMBOOT_STATEMODE} == sandbox_copy2ram ]] \
&& find /memory/data/from/* -maxdepth 0 -exec umount {} \; \
&& find /memory/layer-base/* -maxdepth 0 -exec umount {} \;
}
################ ################
##### MAIN ##### ##### MAIN #####
@ -33,4 +39,5 @@ exec_remounthome(){
# Если файл подключен как ресурс с функциями, то выйти # Если файл подключен как ресурс с функциями, то выйти
return 0 2>/dev/null && return 0 return 0 2>/dev/null && return 0
exec_remounthome $@ exec_remount_home
exec_unmount_root
Loading…
Cancel
Save