diff --git a/ublinux/default b/ublinux/default index 637ba92..98ccda4 100644 --- a/ublinux/default +++ b/ublinux/default @@ -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" diff --git a/ublinux/rc.preinit/01-inifile b/ublinux/rc.preinit/01-inifile index 07a053c..b011000 100755 --- a/ublinux/rc.preinit/01-inifile +++ b/ublinux/rc.preinit/01-inifile @@ -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}" - echo "${LINE}" >> "${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 + else + echo "${LINE}" >> "${FILE_CONFIG}" + fi fi - done < <(zcat ${INIGZFILE} | grep -Ev '^DEFAULTPASSWD|^DEFAULTROOTPASSWD|^NEEDEDUSERS|^USERADD|^GROUPADD|^\s*#|^\s*$') + done < <(zcat ${INIGZFILE} | grep -Ev '^\s*#|^\s*$') ## Декларируем ассоциативный массив, если присутствуют соответствующие переменные while read FILE_CONFIG; do diff --git a/ublinux/rc.preinit/10-accounts b/ublinux/rc.preinit/10-accounts index 01e744e..8f7ad46 100755 --- a/ublinux/rc.preinit/10-accounts +++ b/ublinux/rc.preinit/10-accounts @@ -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 diff --git a/ublinux/templates/ublinux-data.ini b/ublinux/templates/ublinux-data.ini index 7756c7d..61fd677 100644 --- a/ublinux/templates/ublinux-data.ini +++ b/ublinux/templates/ublinux-data.ini @@ -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|...]= +## 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