From 8830f2c71ef78ce8446c2ffc8dacaf4bf5ee1e0c Mon Sep 17 00:00:00 2001 From: asmeron Date: Mon, 12 May 2025 15:42:36 +0600 Subject: [PATCH] Fix empty password [system] USERADD --- ublinux/rc.preinit/10-accounts | 56 +++++++++++++++++------------- ublinux/templates/ublinux-data.ini | 12 ++++--- 2 files changed, 38 insertions(+), 30 deletions(-) diff --git a/ublinux/rc.preinit/10-accounts b/ublinux/rc.preinit/10-accounts index 4dad3d1..c56c5f6 100755 --- a/ublinux/rc.preinit/10-accounts +++ b/ublinux/rc.preinit/10-accounts @@ -392,30 +392,36 @@ exec_05_neededusers(){ # Для команды set-=|set--=|remove параметр только с именем, пример: USERADD[superadmin] # null Если отсутствует $@, то применяем из системной конфигурации USERADD[*] ## -## USERADD=no|none|disable # Отключить управление прользователями конфигурации -## USERADD[user_name]='gecos:uid:user_group:extra_groups:optional:password|x' -## user_name # Имя пользователя, обязательное поле -## gecos # Поле GECOS, с подробным описанием пользователя, можно локализованное, не обязательное -## uid # UID пользователя, если необходимо автоматически рассчитывать, то оставить пустым или 'x' -## user_group # Основная группа пользователя, номер или имя, если выбрано пусто или 'x', то 'user_group=user_name' -## extra_groups # Дополнительные группы пользователя. Дополнительные к USERGROUPS -## # Если группа отсутствует или 'x', то 'extra_groups=users'. Если группа не существует, то будет создана. Перечисление через запятую. -## optional # Дополнительные параметры, например: '--shell /usr/bin/bash --create-home --no-create-home --no-user-group --non-unique' -## --home-dir <ДОМ_КАТ> # Домашний каталог новой учётной записи -## -s, --shell /usr/bin/bash # Регистрационная оболочка новой учётной записи -## -r, --system # Создавать системную группу -## -M, --no-create-home # Не создавать домашний каталог пользователя -## -N, --no-user-group # Не создавать группу с тем же именем что и у пользователя -## -o, --non-unique # Разрешить создание пользователей с повторяющимися (не уникальными) UID, использовать только совместно с параметром +## USERADD=no|none|disable # Отключить управление пользователями конфигурации +## USERADD[]=':::::' +## # Имя пользователя, обязательное поле +## # Поле GECOS, с подробным описанием пользователя, можно локализованное, не обязательное +## # UID пользователя, если необходимо автоматически рассчитывать, то оставить пустым или 'x' +## # Если не указан и существует каталог /home/ , то будет взят у этого каталога +## # Если указано 's' или 'system', то свободный uid системного пользователя +## # Основная группа пользователя, номер или имя, если выбрано пусто или 'x', то 'user_group=user_name' +## # Если не указан и существует каталог /home/ , то будет взят у этого каталога +## # Дополнительные группы пользователя. Дополнительные к USERGROUPS +## # Если группа отсутствует или 'x', то 'extra_groups=users'. Если группа не существует, то будет создана. Перечисление через запятую. +## # Дополнительные параметры, например: '--shell /bin/bash --create-home --no-create-home --no-user-group --non-unique' +## --home-dir <ДОМ_КАТ> # Домашний каталог новой учётной записи +## -s, --shell /bin/bash # Регистрационная оболочка новой учётной записи +## -r, --system # Создать системного пользователя +## -M, --no-create-home # Не создавать домашний каталог пользователя +## -N, --no-user-group # Не создавать группу с тем же именем что и у пользователя +## -o, --non-unique # Разрешить создание пользователей с повторяющимися (не уникальными) UID, использовать только совместно с параметром ## --badnames # Не проверять имя на несоответствие правилам использования символов -## password|x # Хеш пароля пользователя, если пусто или 'x', то 'password=${DEFAULTPASSWD}', -## # Если первые символы (%%), то пароль хранится в нешифрованном виде -## # Если первые символы (!*), то аутентификация запрещена -## # Если первый символ (*) или (!), то аутентификация по паролю заблокирована. Но другие методы входа, -## # такие как аутентификация на основе ключей или переключение на пользователя, по-прежнему разрешены +## # Хеш пароля пользователя, если 'x', то 'password=${DEFAULTPASSWD}' +## # Если user_name=root, то пароль не применяется, а используется password=${DEFAULTROOTPASSWD} +## # Если пароль не задан, поле пустое, то вход без пароля +## # Если пароль состоит из символов '!*' или '!' или '*' или '!!', то аутентификация запрещена +## # Если первый символ '!' , то аутентификация по паролю заблокирована, +## # но другие методы входа, такие как аутентификация на основе ключей или переключение на пользователя, по-прежнему разрешены. +## # Если для команды ubconfig хеш пароля содержит первые символы '%%', то пароль хранится в нешифрованном виде. +## # Первые символы '%%' работают как команда для ubconfig, чтобы не шифровать пароль, и не сохраняются в конфигурацию. ## USERADD[superadmin]='Администратор:1000:x:x:x:$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60' ## USERADD[user-1]=x -## USERADD[user-1]='Пользователь-1:x:x:vboxusers,libvirt:-s /usr/bin/bash:%%plain_password' +## USERADD[user-1]='Пользователь-1:x:x:vboxusers,libvirt:-s /bin/bash -o:$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60' ## ## Синхронизация пользователей системы /etc/passwd с глобальной конфигурацией ## USERADD_SYNC[user_name]='boot,shutdown' @@ -473,7 +479,7 @@ exec_06_useradd(){ [[ ${SELECT_OPTIONAL} =~ ("--shell "|"-s ")([^' ']*)(' '|$) ]] && SELECT_SHELL="${BASH_REMATCH[2]}" || SELECT_SHELL="+" [[ ${SELECT_OPTIONAL} =~ ("--no-create-home"|"-M") ]] && SELECT_MKHOME= || SELECT_MKHOME="yes" # ----------- - [[ ${SELECT_PASSWORD} == @(""|"x") && ${SELECT_USERNAME} != "root" ]] && SELECT_PASSWORD="${DEFAULTPASSWD}" + [[ ${SELECT_PASSWORD} == "x" && ${SELECT_USERNAME} != "root" ]] && SELECT_PASSWORD="${DEFAULTPASSWD}" [[ ${SELECT_USERNAME} == "root" ]] && SELECT_PASSWORD="${DEFAULTROOTPASSWD}" [[ ${SELECT_PASSWORD} != @(""|'!*'|'!'|'!!'|'*') ]] && SELECT_PASSWORD="$(return_hash_password hash ${HASHPASSWD} ${SELECT_PASSWORD})" # ----------- @@ -511,7 +517,7 @@ exec_06_useradd(){ elif [[ ${SELECT_OPTIONAL} =~ ("--system"|"-r") ]]; then # Если указан параметр создавать системную группу SELECT_GROUP="system" - else + else if [[ -n ${SELECT_GROUP} && -n ${GROUPADD[${SELECT_GROUP}]} ]]; then # Если группа указана и присутствует в списке групп GROUPADD[.] exec_04_groupadd "GROUPADD[${SELECT_GROUP}]=${GROUPADD[${SELECT_GROUP}]}" @@ -589,7 +595,7 @@ exec_06_useradd(){ eval "${LIST_USERADD_NOUID}" elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]] && [[ ${#USERADD[@]} -ne 0 ]]; then if [[ ${PARAM%%=*} =~ ^.*'['(.*)']' ]]; then - # Удалим пользователей + # Удалим пользователей local SELECT_USERNAME=${BASH_REMATCH[1]} delete_select_username(){ local SELECT_USERNAME=$1 @@ -787,7 +793,7 @@ exec_99_dm_hint_password(){ ################ ##### MAIN ##### ################ - + # Если файл подключен как ресурс с функциями, то выйти return 0 2>/dev/null && return 0 #rm -f "${FILE_ROOT_USERS}" diff --git a/ublinux/templates/ublinux-data.ini b/ublinux/templates/ublinux-data.ini index ff243ad..c581aba 100644 --- a/ublinux/templates/ublinux-data.ini +++ b/ublinux/templates/ublinux-data.ini @@ -196,9 +196,10 @@ VERSION= ## Чтобы получить хэш "openssl passwd -6 " | "mkpasswd2 -m sha256crypt " | "mkpasswd2 -m help" ## Пароль для пользователей без паролей или "x" в переменных USERADD или NEEDUSERS, по умолчанию: ublinux ## DEFAULTPASSWD= -## password # Хеш пароля или если первые символы (%%), то пароль хранится в нешифрованном виде -## # Если пароль =DEFAULTROOTPASSWD, то включен первый запуск для настройки системы, -## # отображается подсказка пароля на фоне рабочего стола Lightdm и "[config] firstboot=yes" +## password # Хеш пароля или если первые символы (%%), то пароль хранится в нешифрованном виде +## # Если пароль состоит из символов '!*', то аутентификация запрещена +## # Если пароль =DEFAULTROOTPASSWD, то включен первый запуск для настройки системы, +## # отображается подсказка пароля на фоне рабочего стола Lightdm и "[config] firstboot=yes" #DEFAULTPASSWD='$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60' ## Хеш пароля для пользователя root, по умолчанию: ublinux @@ -240,9 +241,10 @@ VERSION= ## -N, --no-user-group # Не создавать группу с тем же именем что и у пользователя ## -o, --non-unique # Разрешить создание пользователей с повторяющимися (не уникальными) UID, использовать только совместно с параметром ## --badnames # Не проверять имя на несоответствие правилам использования символов -## # Хеш пароля пользователя, если пусто или 'x', то 'password=${DEFAULTPASSWD}' +## # Хеш пароля пользователя, если 'x', то 'password=${DEFAULTPASSWD}' ## # Если user_name=root, то пароль не применяется, а используется password=${DEFAULTROOTPASSWD} -## # Если пароль состоит из символов '!*' или '!' или '*' , то аутентификация запрещена +## # Если пароль не задан, поле пустое, то вход без пароля +## # Если пароль состоит из символов '!*' или '!' или '*' или '!!', то аутентификация запрещена ## # Если первый символ '!' , то аутентификация по паролю заблокирована, ## # но другие методы входа, такие как аутентификация на основе ключей или переключение на пользователя, по-прежнему разрешены. ## # Если для команды ubconfig хеш пароля содержит первые символы '%%', то пароль хранится в нешифрованном виде.