From fcb951f6a56eecf0bb2b3c2f87c7d36be8f7ed5c Mon Sep 17 00:00:00 2001 From: asmeron Date: Mon, 22 Jan 2024 12:50:20 +0600 Subject: [PATCH] Add fix/new options --- ublinux/default | 1 + ublinux/rc.halt.pre/10-shutdown | 2 +- ublinux/rc.post.d/45-disk-quota | 16 +++---- ublinux/rc.preinit.d/20-services | 16 ++++--- ublinux/templates/ublinux-data.ini | 68 +++++++++++++++++------------- 5 files changed, 58 insertions(+), 45 deletions(-) diff --git a/ublinux/default b/ublinux/default index 7ec901b..41986d9 100644 --- a/ublinux/default +++ b/ublinux/default @@ -140,6 +140,7 @@ ADDADM=yes #/rc.preinit/10-accounts HASHPASSWD=yescrypt +HASHPASSWD_SAVE=yes #/rc.preinit/50-xorg #NVIDIATEST="nvidia-current nvidia340 nvidia304 nvidia" diff --git a/ublinux/rc.halt.pre/10-shutdown b/ublinux/rc.halt.pre/10-shutdown index cd2bc81..cbb5ce3 100755 --- a/ublinux/rc.halt.pre/10-shutdown +++ b/ublinux/rc.halt.pre/10-shutdown @@ -17,7 +17,7 @@ SOURCE=${SYSCONF}/desktop; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null # Stop DisplayManager -#HALTSERVICESSTOP="$HALTSERVICESSTOP $(echo $SERVICESSTART | tr "," " ") display-manager.service" +#HALTSERVICESSTOP="$HALTSERVICESSTOP $(echo $SERVICES_ENABLE | tr "," " ") display-manager.service" #HALTSERVICESSTOP="$HALTSERVICESSTOP $(systemctl list-units --type=service --state=running | egrep "$DISPLAYMANAGER.*running" | awk '{$1=$1;print}' | cut -d ' ' -f 1 | xargs)" # Stop all running service #HALTSERVICESSTOP="$HALTSERVICESSTOP $(systemctl list-units --type=service --state=running | egrep "running" | awk '{$1=$1;print}' | cut -d ' ' -f 1 | egrep -v " $HALTEXCLUDESTOP" | xargs)" diff --git a/ublinux/rc.post.d/45-disk-quota b/ublinux/rc.post.d/45-disk-quota index ad17abb..04fd2e9 100755 --- a/ublinux/rc.post.d/45-disk-quota +++ b/ublinux/rc.post.d/45-disk-quota @@ -96,11 +96,11 @@ exec_disk_quota(){ true fi if [[ -z ${ROOTFS} ]]; then - /usr/bin/ubconfig --quiet --source system get system SERVICESSTART | grep -q systemd-quotacheck 2>/dev/null \ - || /usr/bin/ubconfig --quiet --target system set system SERVICESSTART+=,systemd-quotacheck + /usr/bin/ubconfig --quiet --source system get system SERVICES_ENABLE | grep -q systemd-quotacheck 2>/dev/null \ + || /usr/bin/ubconfig --quiet --target system set system SERVICES_ENABLE++=systemd-quotacheck else - chroot . /usr/bin/ubconfig --quiet --source system get system SERVICESSTART | grep -q systemd-quotacheck 2>/dev/null \ - || /usr/bin/ubconfig --quiet --noexecute --target system set system SERVICESSTART+=,systemd-quotacheck + chroot . /usr/bin/ubconfig --quiet --source system get system SERVICES_ENABLE | grep -q systemd-quotacheck 2>/dev/null \ + || /usr/bin/ubconfig --quiet --noexecute --target system set system SERVICES_ENABLE++=systemd-quotacheck fi else [[ -n ${ISFS_EXT234} && ${ISFS_EXT234_FEATURES} == no ]] && ${ROOTFS}/usr/bin/tune2fs -Q ${MOUNT_DISK_ATTR[${PATH_DEVICE}]} ${PATH_DEVICE} #2>/dev/null @@ -113,9 +113,9 @@ exec_disk_quota(){ ${ROOTFS}/usr/bin/quotaoff -${ARG_CMD} ${PATH_DEVICE} &>/dev/null if [[ ${ATTR_QUOTA} == quota ]]; then if [[ -z ${ROOTFS} ]]; then - /usr/bin/ubconfig --quiet --target system set system SERVICESSTART--=,systemd-quotacheck + /usr/bin/ubconfig --quiet --target system set system SERVICES_ENABLE--=systemd-quotacheck else - chroot . /usr/bin/ubconfig --quiet --noexecute --target system set system SERVICESSTART--=,systemd-quotacheck + chroot . /usr/bin/ubconfig --quiet --noexecute --target system set system SERVICES_ENABLE--=systemd-quotacheck fi cat /proc/mounts | grep -q "${PATH_DEVICE}.*${ATTR_QUOTA}" && mount -o remount,noquota ${PATH_DEVICE} &>/dev/null fi @@ -277,7 +277,7 @@ exec_disk_quota(){ ${ROOTFS}/usr/bin/quotaoff -augP 2>/dev/null ${ROOTFS}/usr/bin/quotacheck -aug 2>/dev/null ${ROOTFS}/usr/bin/quotaon -augP 2>/dev/null - #${ROOTFS}/usr/bin/ubconfig --quiet set system SERVICESSTART+=,quotaon.service + #${ROOTFS}/usr/bin/ubconfig --quiet set system SERVICES_ENABLE++=quotaon.service fi elif [[ ${ALL_VALUE_QUOTA,,} == disable ]]; then @@ -286,7 +286,7 @@ exec_disk_quota(){ else disable_quota ${ROOTFS}/usr/bin/quotaoff -augP 2>/dev/null - #${ROOTFS}/usr/bin/ubconfig --quiet set system SERVICESSTART--=,quotaon.service + #${ROOTFS}/usr/bin/ubconfig --quiet set system SERVICES_ENABLE--=quotaon.service fi elif [[ ${ALL_VALUE_QUOTA,,} == clean ]]; then [[ -n ${PATH_DEVICE} ]] && clean_quota diff --git a/ublinux/rc.preinit.d/20-services b/ublinux/rc.preinit.d/20-services index d4911b4..d8ff4fa 100755 --- a/ublinux/rc.preinit.d/20-services +++ b/ublinux/rc.preinit.d/20-services @@ -30,7 +30,7 @@ exec_copy_to_initd(){ } exec_services_enabledisable(){ -# Функция включения/отключения сервисов в предзагрузке +# Функция включения/отключения сервисов в предзагрузке SERVICES_ENABLE= # $1 Команды set или remove с режимом, варианты: set=|set+=|set++=|set-=|set--=|remove # $2 Параметр со значением, пример: SERVICES_ENABLE=pcscd.service,nmb,smb # null Если отсутствует $@, то применяем из системной конфигурации SERVICESSTART SERVICESNOSTART SERVICESMASK SERVICESUNMASK @@ -86,9 +86,9 @@ exec_services_enabledisable(){ } exec_services_startstop_live(){ -# Функция запуска/остановка сервисов в загруженной системе +# Функция запуска/остановка сервисов в загруженной системе SERVICES_ENABLE= # $1 Команды set или remove с режимом, варианты: set=|set+=|set++=|set-=|set--=|remove -# $2 Параметр со значением. Пример: SERVICESSTART=pcscd.service,nmb,smb +# $2 Параметр со значением. Пример: SERVICES_ENABLE=pcscd.service,nmb,smb # null Если отсутствует $@, то применяем из системной конфигурации SERVICESSTART SERVICESNOSTART SERVICESMASK SERVICESUNMASK SERVICES_ENABLE SERVICES_DISABLE SERVICES_MASK SERVICES_UNMASK # Если выполнение в initrd, то выход [[ -z ${ROOTFS} ]] || return 0 @@ -123,9 +123,10 @@ exec_services_startstop_live(){ done 3< <(tr ',; ' '\n' <<< "${SERVICESNOSTART},${SERVICESMASK},${SERVICES_DISABLE},${SERVICES_MASK}" | tr -s '\n') } -#Выключил, т.к. проблематично проигнорировать все SERVICE[*] из os-config, если заданы SERVICE[*] в глобальном конфиге +#Выключил, т.к. не перезапишет параметры по умолчанию +# т.к. проблематично проигнорировать все SERVICE[*] из /usr/lib/default, если заданы SERVICE[*] в глобальном конфиге #exec_services_enabledisable_new(){ -## Функция включения/отключения сервисов в предзагрузке +## Функция включения/отключения сервисов в предзагрузке SERVICE[*]= ## $1 Команды set или remove с режимом, варианты: set=|set+=|set++=|set-=|set--=|remove ## $2 Параметр со значением, пример: SERVICE[smb]=enable ## null Если отсутствует $@, то применяем из системной конфигурации SERVICE[]=start|enable|on|stop|disable|off|mask|unmask @@ -180,9 +181,10 @@ exec_services_startstop_live(){ # fi #} -#Выключил, т.к. проблематично проигнорировать все SERVICE[*] из os-config, если заданы SERVICE[*] в глобальном конфиге +#Выключил, т.к. не перезапишет параметры по умолчанию +# т.к. проблематично проигнорировать все SERVICE[*] из /usr/lib/default, если заданы SERVICE[*] в глобальном конфиге #exec_services_startstop_live_new(){ -## Функция запуска/остановка сервисов в загруженной системе +## Функция запуска/остановка сервисов в загруженной системе SERVICE[*]= ## $1 Команды set или remove с режимом, варианты: set=|set+=|set++=|set-=|set--=|remove ## $2 Параметр со значением, пример: SERVICE[smb]=enable ## null Если отсутствует $@, то применяем из системной конфигурации SERVICE[*]=start|enable|on|stop|disable|off|mask|unmask diff --git a/ublinux/templates/ublinux-data.ini b/ublinux/templates/ublinux-data.ini index f2bc4ce..8c2d8d6 100644 --- a/ublinux/templates/ublinux-data.ini +++ b/ublinux/templates/ublinux-data.ini @@ -28,9 +28,13 @@ ################################################################################ ################################################################################ -# Поддерживаемые команды Grub -# services_enable # Перечень сервисов/юнитов который должны быть запущены, разделитель (,) или (;). Пример: services_enable=sbm,nmb,cockpit.socket -# services_disable # Перечень сервисов/юнитов которые должны быть выключены, разделитель (,) или (;). Пример: services_disable=sbm,nmb,cockpit.socket +# Поддерживаемые параметры Grub +# services_enable=item_1,item_2,...,item_n # Перечень сервисов/юнитов который должны быть запущены, разделитель (,) или (;). Пример: services_enable=sbm,nmb,cockpit.socket +# services_disable=item_1,item_2,...,item_n # Перечень сервисов/юнитов которые должны быть выключены, разделитель (,) или (;). Пример: services_disable=sbm,nmb,cockpit.socket +# useradd=;...; # Перечень пользователей, см. USERADD. +# Пример: useradd=admin:::::pass;admin2:Administrator-2:1010:admin2:wheel,users:pass2 +# + ################################################################################ [/etc/ublinux/config] @@ -47,15 +51,19 @@ VERSION= ## Базовые настройки системы ################################################################################ +## Имя хоста системы +## HOSTNAME= +## # Произвольное имя. Пример: myhost или myhost.mydomain.com HOSTNAME=ublinux-install ## You can specify your /etc/machine-id there. If MACHINEID=RANDOM then will be -## created random number. # In other case, it will be based on internal hardware list. -## Номер машины, который попадает в /etc/machine-id. -## =hardware | =hw # Сформируется в зависимости от аппаратной начинки материнской платы и MAC -## =random | =rnd # Создастся случайный номер -## Можно привязать к носителю, указав свой номер (в формате вывода утилиты md5sum) -## к примеру, echo mynumber | md5sum +## created random number. In other case, it will be based on internal hardware list. +## Идентификатор устройства, который попадает в /etc/machine-id +## MACHINEID=| +## hardware | hw # ID в зависимости от аппаратной начинки материнской платы и MAC +## random | rnd # Случайный ID +## # Уникальный ID. Пример: 91ec1cd57b484d479893f012b26f89ea +## Можно привязать к носителю, указав свой номер (в формате вывода утилиты md5sum). Пример: echo | md5sum #MACHINEID=91ec1cd57b484d479893f012b26f89ea #MACHINEID=hardware MACHINEID=hardware @@ -167,6 +175,10 @@ SERVICES_ENABLE=dbus-broker,NetworkManager,sshd,systemd-swap,cups,cockpit.socket ## Имя пользователя по умолчанию, будет добавлен в группу whell, при условии если переменная NEEDEDUSERS пустая (стандартно superadmin) #DEFAULTUSER=superadmin +## Хранить в конфигурации хеш пароля. Если в параметрах USERADD или GROUPADD пароль не хеширован, то захешировать по алгоритму HASHPASSWD и сохранить в конфигурации +## HASHPASSWD_SAVE=*enable|yes|y|disable|no|n|none +#HASHPASSWD_SAVE=no + ## Default hash algoritm for user password ## Алгоритм хеширования паролей, возможные значения: des, md5, yescrypt, gost-yescrypt, scrypt, bf, bcrypt, sha512crypt, sha256crypt, md5crypt, descrypt ## Алгоритмы GOST R 34.11-2012 (Streebog): gost-yescrypt @@ -179,11 +191,12 @@ SERVICES_ENABLE=dbus-broker,NetworkManager,sshd,systemd-swap,cups,cockpit.socket NEEDEDUSERS='superadmin:1000:x:Администратор' ## Добавить пользователя системы в /etc/passwd. Если пользователь существует, то без изменений +## USERADD=no|none|disable # Отключить управление прользователями конфигурации ## USERADD[user_name]='gecos:uid:user_group:extra_groups:optional:password_hash|x' ## user_name # Имя пользователя, обязательное поле ## gecos # Поле GECOS, с подробным описанием пользователя, можно локализованное, не обязательное ## uid # UID пользователя, если необходимо автоматически рассчитывать, то оставить пустым или 'x' -## user_group # Основная группа пользователя, если выбрано пусто или 'x', то 'user_group=user_name' +## 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' @@ -192,7 +205,7 @@ NEEDEDUSERS='superadmin:1000:x:Администратор' ## -r, --system # Создавать системную группу ## -M, --no-create-home # Не создавать домашний каталог пользователя ## -N, --no-user-group # Не создавать группу с тем же именем что и у пользователя -## -o, --non-unique # Разрешить создание пользователей с повторяющимися (не уникальными) UID +## -o, --non-unique # Разрешить создание пользователей с повторяющимися (не уникальными) UID, использовать только совместно с параметром ## --badnames # Не проверять имя на несоответствие правилам использования символов ## password_hash|x # Хеш пароля пользователя, если выбрано 'x', то 'password_hash=${DEFAULTPASSWD}' ## # Если первые символы (!*) то аутентификация запрещена @@ -201,42 +214,39 @@ NEEDEDUSERS='superadmin:1000:x:Администратор' ## USERADD[user-1]=x ## USERADD[user-1]='Пользователь-1:x:x:vboxusers,libvirt:-s /usr/bin/bash -o:$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60' -## Синхронизация пользователей системы /etc/passwd с глобальной конфигурацией -## USERADD_SYNC[user_name]='boot,shutdown' -## user_name # Имя пользователя, необязательное поле. Если не указано, то применяется для всех пользователей -## boot # При загрузке системы принудительно применить глобальную конфигурацию на пользователя -## shutdown # При завершении работы системы синхронизировать указанных пользователей в системе с глобальной конфигурацией - ## Параметры пользователя системы /etc/shadow. Если пользователь существует, то без изменений ## USERSHADOW[user_name]='lastchanged:minday:maxday:warn:inactive:expire' ## user_name # Имя пользователя, обязательное поле -## lastchanged # Дата последнего изменения пароля. Указывается количество дней, исчисляется с 1 января 1970 года (дата эпохи) +## lastchanged # Дата последнего изменения пароля. Указывается количество дней, исчисляется с 1 января 1970 года (дата эпохи). Возможно указать дату формата: YYYY-MM-DD ## minday # Минимальное количество дней действия пароля, прежде чем пароль пользователя может быть изменен. По умолчанию 0 означает отсутствие минимального срока действия пароля ## maxday # Максимальное количество дней действия пароля после смены пароля пользователя. По умолчанию этот номер установлен на 99999 -## warn # Количество дней предупреждения, в течение которого пользователь получает предупреждение о необходимости изменения пароля +## warn # Количество дней предупреждения, в течение которого пользователь получает предупреждение о необходимости изменения пароля. По умолчанию 7 ## inactive # Количество дней не активности пароля до отключения учетной записи пользователя. По умолчанию пустое -## expire # Дата, когда учетная запись была отключена. Указывается количество дней, исчисляется с 1 января 1970 года (дата эпохи) +## expire # Дата, когда учетная запись была отключена. Указывается количество дней, исчисляется с 1 января 1970 года (дата эпохи). Возможно указать дату формата: YYYY-MM-DD ## # Если один из параметров не задан, содержит пустое значение, то исходное значение не изменяется -## USERSHADOW[superadmin]=19695:0:99999:7::: +## # Конвертировать кол-во дней от эпохи в понятную дату: date --date=@$(( DDDDD*(60*60*24) )); date --date=@EPOCH +## USERSHADOW[superadmin]=2024-01-01:0:99999:7::: ## USERSHADOW[superadmin]=18009:0:120:7:14:: -## Синхронизация параметры пользователей системы /etc/shadow с глобальной конфигурацией -## USERSHADOW_SYNC[user_name]='boot,shutdown' +## Синхронизация пользователей системы /etc/passwd и их параметры /etc/shadow с глобальной конфигурацией +## USERADD_SYNC[user_name]='boot,shutdown' ## user_name # Имя пользователя, необязательное поле. Если не указано, то применяется для всех пользователей ## boot # При загрузке системы принудительно применить глобальную конфигурацию на пользователя ## shutdown # При завершении работы системы синхронизировать указанных пользователей в системе с глобальной конфигурацией -## Группы системы -## GROUPADD[group_name]='group_users:gid:optional:password_hash|x' + +## Группы системы /etc/group. Создаст или изменит существующие группы +## GROUPADD[group_name]='group_users:gid:optional:administrators:password_hash|x' ## group_name # Имя группы -## group_users # Пользователи группы, перечисление через запятую. Может быть пусто. +## group_users # Пользователи группы, перечисление через запятую, если выбрано 'x' то пусто. Может быть пусто. ## gid # GID группы, если необходимо автоматически рассчитывать, то оставить пустым или 'x' -## optional # Дополнительные параметры, например: '--system --non-unique' -## -o, --non-unique # Разрешить создание групп с повторяющимися (не уникальными) GID +## optional # Дополнительные параметры, например: '--system --non-unique', если выбрано 'x' то пусто +## -o, --non-unique # Разрешить создание групп с повторяющимися (не уникальными) GID, использовать только совместно с параметром ## -r, --system # Cоздавать системную группу +## administrators # Администраторы группы которые могут менять пароль группы и добавлять членов. Список с разделителем запятая ## password_hash|x # Хеш пароля группа, если выбрано 'x' или пусто, то группа без пароля ## GROUPADD[g_department_1]=ob.ivanov,rv.smirnov -## GROUPADD[g_department_2]='ob.ivanov,rv.smirnov:1001:$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60' +## GROUPADD[g_department_2]='ob.ivanov,rv.smirnov:1001:x:superadmin,mv.rubin:$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60' ## Groups for users ## Дополнительные группы, для всех пользователей, по умолчанию: scanner,power,audio,lp,optical,storage,video,sambashare,vboxusers,libvirt