Fix add USERADD and GROUPADD to /etc/ublinux/users without HASH

master v2.51
Dmitry Razumov 2 years ago
parent b5a80f2f17
commit 280c16eab3
Signed by: asmeron
GPG Key ID: 50BC1DB583B79706

@ -235,3 +235,5 @@ REPOSITORY[community]=::/etc/pacman.d/mirrorlist
REPOSITORY[multilib]=::/etc/pacman.d/mirrorlist
REPOSITORY[ublinux]=::/etc/pacman.d/mirrorlist
REPOSITORY[modules]=::/etc/pacman.d/mirrorlist
UBPILE_SECRET_KEY="4a6ed27e0434490028ff63b11f12fb7c"

@ -31,14 +31,14 @@ SYSCONF="${ROOTFS}${SYSCONF}"
[[ -f ${FILE_CONFIG} ]] || install -Dm0644 /dev/null ${FILE_CONFIG}
FILE_ROOT_USERS="${SYSCONF}/.users_credential"
[[ -f ${FILE_ROOT_USERS} ]] || install -Dm0600 /dev/null ${FILE_ROOT_USERS}
zcat ${INIGZFILE} | grep -E '^DEFAULTPASSWD|^DEFAULTROOTPASSWD|^NEEDEDUSERS|^USERADD|^GROUPADD' > ${FILE_ROOT_USERS}
FILE_USERS="${SYSCONF}/users"
while read LINE; do
if [[ ${LINE} =~ ^'['([^[]*|[^]]*)']'[[:space:]]*([0-9]+|[augo]+[=+-]+[augorstwxX,=+-]*)?[[:space:]]*('['+(.*)']'+)?$ ]]; then
FILE_CONFIG=${BASH_REMATCH[1]}
FILE_CONFIG_MOD=${BASH_REMATCH[2]}
FILE_CONFIG_EXEC=${BASH_REMATCH[4]}
# Если указан файл без пути, то добавить путь по умолчанию ${SYSCONF}
[[ ${FILE_CONFIG} =~ "/" ]] && FILE_CONFIG="${ROOTFS}/${FILE_CONFIG}" || FILE_CONFIG="${SYSCONF}/${FILE_CONFIG}"
[[ ${FILE_CONFIG} =~ ^"/" ]] && FILE_CONFIG="${ROOTFS}${FILE_CONFIG}" || FILE_CONFIG="${SYSCONF}/${FILE_CONFIG}"
if [[ -n ${FILE_CONFIG_MOD} ]]; then
[[ -d ${FILE_CONFIG%/*} ]] || install -d "${FILE_CONFIG%/*}"
[[ -e ${FILE_CONFIG} ]] || touch "${FILE_CONFIG}"
@ -54,9 +54,22 @@ SYSCONF="${ROOTFS}${SYSCONF}"
NAME_VAR=${LINE%%=*}
[[ ${LINE} != ${NAME_VAR} ]] || continue
[[ -f ${FILE_CONFIG} && $(cat -n ${FILE_CONFIG}) =~ ($'\n'|^)+[[:blank:]]*([[:digit:]]+)[[:blank:]]*"${NAME_VAR}="[^$'\n']*($'\n'|$)+ ]] && sed "${BASH_REMATCH[2]}d" -i "${FILE_CONFIG}"
if [[ ${FILE_CONFIG} == ${FILE_USERS} && ${NAME_VAR} =~ ^("DEFAULTPASSWD"|"DEFAULTROOTPASSWD"|"NEEDEDUSERS"|"USERADD"|"GROUPADD") ]]; then
echo "${LINE}" >> ${FILE_ROOT_USERS}
if [[ ${NAME_VAR} == @("DEFAULTPASSWD"|"DEFAULTROOTPASSWD"|"NEEDEDUSERS") ]]; then
true
elif [[ ${LINE} =~ ^("USERADD[".*"]="[\'\"]?)([^:]*:[^:]*:[^:]*:[^:]*:[^:]*:)[^\'\"]*([\'\"]?) ]]; then
echo "${BASH_REMATCH[1]}${BASH_REMATCH[2]}${BASH_REMATCH[3]}" >> "${FILE_CONFIG}"
elif [[ ${LINE} =~ ^("GROUPADD[".*"]="[\'\"]?)([^:]*:[^:]*:[^:]*:[^:]*:)[^\'\"]*([\'\"]?) ]]; then
echo "${BASH_REMATCH[1]}${BASH_REMATCH[2]}${BASH_REMATCH[3]}" >> "${FILE_CONFIG}"
else
echo "${LINE}" >> "${FILE_CONFIG}"
fi
done < <(zcat ${INIGZFILE} | grep -Ev '^DEFAULTPASSWD|^DEFAULTROOTPASSWD|^NEEDEDUSERS|^USERADD|^GROUPADD|^\s*#|^\s*$')
else
echo "${LINE}" >> "${FILE_CONFIG}"
fi
fi
done < <(zcat ${INIGZFILE} | grep -Ev '^\s*#|^\s*$')
## Декларируем ассоциативный массив, если присутствуют соответствующие переменные
while read FILE_CONFIG; do

@ -267,22 +267,6 @@ exec_02_neededusers(){
fi
}
#declare -A UPDATEHOME
#UPDATEHOME[user-4]=yes
#declare -A USERADD_SYNC
#USERADD_SYNC[user-4]="shutdown,boot"
#USERADD_SYNC="shutdown,boot"
#declare -A USERADD
#USERADD[superadmin]='Администратор:1000:x:x:x:$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60'
#USERADD[user-1]='Пользователь-1:x:x:vboxusers,libvirt:-s /usr/bin/bash -o:$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60'
#USERADD[user-2]='Пользователь-2::users:vboxusers,libvirt:-s /usr/bin/bash -o:$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60'
#USERADD[user-3]=':::::x'
#USERADD[user-4]='Пользователь-4::users:user-2,user-3:-s /usr/bin/sh:$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60'
#declare -A USERSHADOW
#USERSHADOW[user-4]=19695:0:99999:7::
#USERSHADOW[user-4]=18000:0:120:7:14:
#USERSHADOW[user-4]="2023-12-31:0:120:7:14:2024-12-31"
# Добавить пользователя системы в /etc/passwd. Если пользователь существует, то без изменений
# $1 Команды set или remove с режимом, варианты: set=|set+=|set++=|set-=|set--=|remove
# $2 Для команды set=|set+=|set++= параметр со значением, пример: USERADD[user-1]='Пользователь-1:x:x:vboxusers,libvirt:-s /usr/bin/bash:%%plain_password'
@ -353,7 +337,7 @@ exec_03_useradd(){
sed "/USERADD\[${SELECT_USERNAME}\]=/d" -i "${FILE_ROOT_USERS}"
echo "USERADD[${SELECT_USERNAME}]='${USERADD[${SELECT_USERNAME}]}'" >> ${FILE_ROOT_USERS}
fi
[[ -f "${SYSCONF}/users" ]] && sed "/USERADD\[.*\]=/d" -i "${SYSCONF}/users"
[[ -f "${SYSCONF}/users" ]] && sed -E "s/(USERADD\[${SELECT_USERNAME}\]=[\'\"]?)([^:]*:[^:]*:[^:]*:[^:]*:[^:]*:)[^\'\"]*([\'\"]?)/\1\2\3/g" -i "${SYSCONF}/users"
fi
IFS=: read -r SELECT_GECOS SELECT_UID SELECT_GROUP SELECT_EXTRAGROUPS SELECT_OPTIONAL SELECT_PASSWORD NULL <<< "${USERADD[${SELECT_USERNAME}]}"
[[ ${SELECT_GECOS,,} == "x" ]] && unset SELECT_GECOS
@ -582,7 +566,7 @@ exec_05_groupadd(){
sed "/GROUPADD\[${SELECT_GROUP}\]=/d" -i "${FILE_ROOT_USERS}"
echo "GROUPADD[${SELECT_GROUP}]='${GROUPADD[${SELECT_GROUP}]}'" >> ${FILE_ROOT_USERS}
fi
[[ -f "${SYSCONF}/users" ]] && sed "/GROUPADD\[.*\]=/d" -i "${SYSCONF}/users"
[[ -f "${SYSCONF}/users" ]] && sed -E "s/(GROUPADD\[${SELECT_GROUP}\]=[\'\"]?)([^:]*:[^:]*:[^:]*:[^:]*:)[^\'\"]*([\'\"]?)/\1\2\3/g" -i -i "${SYSCONF}/users"
fi
IFS=: read -r SELECT_USERS SELECT_GID SELECT_OPTIONAL SELECT_ADMINISTRATORS SELECT_PASSWORD NULL <<< "${GROUPADD[${SELECT_GROUP}]}"
[[ ${SELECT_USERS} == "x" ]] && unset SELECT_USERS

@ -183,9 +183,8 @@ SERVICES_ENABLE=dbus-broker,NetworkManager,sshd,systemd-swap,cups,cockpit.socket
## Отключены: sunmd5, bsdicrypt, nt, argon2d, argon2i, argon2ds, argon2id
#HASHPASSWD=yescrypt
## You can cpecify users there whithout using "user=" boot parameter
## Пользователи системы (аналог параметра users)
## NEEDEDUSERS='name_user:id:password:show_name:, ... ' password=x=$DEFAULTPASSWD
## Пользователи системы, упращённый аналог параметра USERADD. Для совместимости со старыми версиями, будет удалён.
## NEEDEDUSERS='name_user:id:password:show_name:, ... ' password=x=${DEFAULTPASSWD}
#NEEDEDUSERS='superadmin:1000:x:Администратор'
## Добавить пользователя системы в /etc/passwd. Если пользователь существует, то без изменений
@ -616,6 +615,37 @@ GRUB_BOOT_SILENT="splash"
#SERVER_DOMAIN[type]=samba
#SERVER_DOMAIN[admin]=administrator:0J3QvtCy0YvQuV/QlNC10L3RjCEK
## Использовать приложение UBPile
## UBPILE=primary|worker|disable|clean
## primary # Выступать в роли главного сервера управляющего всеми 'Worker'
## worker # Исполнитель заданий приходящих от сервера 'Primary'
## disable # Отключить
## clean # Очистить БД и вернуть настройки по умолчанию. После процедуры очистки установится UBPILE=disable
## UBPILE[secret_key|base_app_url|...]=<value>
## secretkey # При настройке нескольких серверов все ваши серверы должны иметь один и тот же секретный ключ. Любая случайно сгенерированная строка подойдет
## base_app_url # Полный URL-адрес, включая http порт, если он нестандартный. Это используется в электронных письмах для создания URL-адресов с самостоятельными ссылками
## email_from # Адрес электронной почты, который будет использоваться в качестве адреса "От" при отправке уведомлений
## smtp_hostname # Имя хоста вашего SMTP-сервера для отправки почты. Так-же это может быть `127.0.0.1` или `localhost`
## debug_level # Уровень детализации в журналах отладки. Он варьируется от 1 (очень тихо) до 10 (очень громко). Значение по умолчанию — 4
## job_memory_max # Максимальное ограничение памяти по умолчанию для каждого задания, по умолчанию: 1073741824 (1Гб)
##
## server_comm_use_hostnames # Разрешить серверам подключаться друг к другу по именам хостов, полезно с меняющимися IP адресами. Значения: *false, true
## web_direct_connect # Разрешить веб-интерфейсу прямое подключение к главному серверу, полезно при использовании нескольких резервных серверов
## # или балансировщик нагрузки или обратного прокси. Значения: *false, true
## web_socket_use_hostnames # Разрешить веб-интерфейсу подключаться к внутренним серверам, используя их имена хостов, а не IP-адреса. Значения: *false, true
## # Это свойство вступает в силу только в том случае, если web_direct_connect=true
## WebServer.http_port # Номер порта http веб-сервера для пользовательского интерфейса. По умолчанию: 9012
## WebServer.https # Включить HTTPS, чтобы пользовательский интерфейс был зашифрован SSL. Значения: *false, true
## WebServer.https_port # Номер порта https веб-сервера для пользовательского интерфейса. По умолчанию: 9013
## ... # Могут использоваться любые переменные конфигурационного файла config.json
## UBPILE[secret_key]="4a6ed27e0434490028ff63b11f12fb7c"
## UBPILE[base_app_url]="http://localhost:80"
## UBPILE[web_direct_connect]="true"
## Использовать для UBPile преднастроенный обратный прокси, разместив приложение на указанном порту
## UBPILE_REVERSE_PROXY
## UBPILE_REVERSE_PROXY_PORT=80
#TODO: Переоценить необходимость
## Адрес сервера ublinux-server по умолчанию
#UBLINUXSERVER=192.168.1.31

Loading…
Cancel
Save