Fix 10-accounts

master v2.47
Dmitry Razumov 2 years ago
parent 5b00baf7ef
commit b553f9396e
Signed by: asmeron
GPG Key ID: 50BC1DB583B79706

@ -74,6 +74,7 @@ return_hash_password(){
# Remove user home directories. Used ubl-settings-usergroup
# $1 # Users name a comma separated list
# TODO: Запросить хомяк по умолчанию из /etc/default/useradd HOME=
remove_userhome(){
local LIST_USERNAME="$@"
[[ ${LIST_USERNAME} != "" ]] || return 1

@ -0,0 +1,139 @@
#!/usr/bin/env bash
ENABLED=yes
[[ ${ENABLED} == "yes" ]] || exit 0
DEBUGMODE=no
SOURCE=/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
SOURCE=/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/update; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
debug_mode "$0" "$@"
## Настройка подключения репозиториев
## REPOSITORY[<name_repo>]=disable | <siglevel>:<usage>:<server_path_1>,<server_path_2>,...,<server_path_n>
## <name_repo> # Произвольное имя репозитория. Обязательный
## disable # Отключить отдин из репозиториев по умолчанию: core,extra,community,multilib,ublinux,modules
## <siglevel> # Уровень проверки подписи репозитория, можно выбрать одну из основных и вторую из дополнительных, разделитель запятая. Не обязательный
## # Последовательность имеет значение, т.к. накладываются правила каскадно. По умолчанию: Required,DatabaseOptional
## Never # Проверка подписи выполняться не будет. Основная
## PackageNever # Только для пакетов. Дополнительная
## DatabaseNever # Только для базы данных. Дополнительная
## Optional # Подписи будут проверяться при их наличии, но неподписанные базы данных и пакеты также будут приниматься. Основная
## PackageOptional # Только для пакетов. Дополнительная
## *DatabaseOptional # Только для базы данных. Дополнительная
## *Required # Подписи будут необходимы для всех пакетов и баз данных. Основная
## PackageRequired # Только для пакетов. Дополнительная
## DatabaseRequired # Только для базы данных. Дополнительная
## TrustedOnly # Если подпись проверяется для пакетов и базы, она должна находиться в связке ключей и быть полностью доверенной; маргинальное доверие не применимо
## PackageTrustedOnly # Если подпись проверяется только для пакетов
## DatabaseTrustedOnly # Если подпись проверяется только для базы данных
## TrustAll # Если подпись проверена, она должна находиться в связке ключей, но ей не требуется назначать уровень доверия (например, неизвестное или предельное доверие)
## PackageTrustAll # Если подпись проверена только для пакетов
## DatabaseTrustAll # Если подпись проверена только для базы данных
## <usage> # Уровень использования этого репозитория. Не обязательный
## *All # Включать все перечисленные функции для репозитория. Это значение по умолчанию
## Sync # Включать обновления для этого репозитория
## Search # Включать поиск этого репозитория
## Install # Включать установку пакетов из этого репозитория во время операции --sync
## Upgrade # Позволить этому репозиторию быть действительным источником пакетов при выполнении --sysupgrade
## <server_path_n> # Полный URL-адрес места, где можно найти базу данных, пакеты и подписи (если доступны) для этого репозитория. Обязательный
## # Возможно указать несколько, через запятую.
## <file> # Если указан доступный файл, то подключить как дополнительный файл расширения конфигурации
## file:// # URL префикс для репозитория в каталоге
## ftp:// # URL префикс для репозитория FTP
## http:// # URL префикс для репозитория HTTP
## https:// # URL префикс для репозитория HTTPS
## REPOSITORY[modules]=::http://192.168.0.1:8080/repo/2204
## REPOSITORY[webmyrepo]=never::http://myweb.org/myrepo
## REPOSITORY[localmyrepo]=never::file:///home/myrepo
exec_repository(){
true
}
## Опубликовать локальный репозиторий в локальной сети, подключиться к сети распределённых репозиториев.
## При установке пакета пакет ищется в распределённой сети репозиториев и устанавливается самой последней доступной версией.
## REPOPUBLIC_NET=<name_repos_1>,...,<name_repos_n>
## <name_repo> # Подключенное имя репозитория, например: core,extra,community,multilib,ublinux,modules
## all # Если name_repo=all, то опубликовать все подключенные репозитории
## REPOPUBLIC_NET=all
## REPOPUBLIC_NET=modules
exec_repopublic_net(){
true
}
## Опубликовать локальный репозиторий в виде локального WEB ресурса
## REPOPUBLIC_WEB[<path>]=enable|disable,listing:<port>:<auth_name>:<auth_pass>:<auth_hash>
## <path> # Путь до каталога репозитория, который будет опубликован
## enable # Включить публикацию
## disable # Выключить публикацию
## listing # Включить WEB обозреватель файлов. Не обязятельный
## <port> # Порт по которому доступен репозиторий. По умолчанию: 8080. Не обязательный
## <auth_name> # Параметры авторизации, имя пользователя. Не обязательный
## <auth_pass> # Параметры авторизации, открытый пароль или тип хеша. Не обязательный
## password # Не зашифрованный пароль
## sha256 # Использовать зашифрованный пароль SHA256
## sha512 # Использовать зашифрованный пароль SHA512
## <auth_hash> # Параметры авторизации, зашифроваггый пароль SHA256 или SHA512. Не обязательный
## REPOPUBLIC_WEB[/home/myrepo]=enable
exec_repopublic_web(){
true
}
## Опубликовать ленивое зеркало подключенных репозиториев в виде локального WEB ресурса.
## Получая запрос от пользователя, загружает с удалённого репозитория пакет и сохраняет в кеше передавая его пользователю.
## REPOPUBLIC_CACHE[<path>]=enable|disable:<port>:<server_name_1>@<server_url_1>,...,<server_name_n>@<server_url_n>
## <path> # Путь до каталога файлов кеша, если не указан, то по умолчанию: /mnt/livedata/ublinux-data/repopublic_cache
## enable # Включить публикацию
## disable # Выключить публикацию
## <port> # Порт по которому доступен репозиторий. По умолчанию: 8080. Не обязательный
##
## <server_name> # Произвольное имя репозитория
## <server_url> # Полный адрес репозитория URL или файл
## # Если не указано <server_name>@<server_url>, то по умолчанию системные /etc/pacman.d/mirrorlist
## # Возможно указать несколько, через запятую.
## <file> # Файл списка зеркал, подключается как список зеркал с синтаксисом /etc/pacman.d/mirrorlist
## # Важно: в подключенном списке не должно быть адреса текущего сервера
## http:// # URL префикс для репозитория на HTTP
## https:// # URL префикс для репозитория на HTTPS
## REPOPUBLIC_CACHE[/mnt/livedata/ublinux-data/repopublic_cache]=enable
## REPOPUBLIC_CACHE[/mnt/livedata/ublinux-data/repopublic_cache]=enable:80:myrepo@http://192.168.0.1:8080/repo/2204
exec_repopublic_cache(){
true
}
## Настройка автообновления системы
## AUTOUPDATE=enable | <mode>:<interval>:<repository>
## enable # Включает автообновление с параметрами modsys:boot:core,extra,community,multilib,ublinux,modules
## <mode> # Режимы обновления
## *modsys # Вначале обновлять все модули и после систему
## module # Обновлять только модули
## system # Обновлять всё в порядке указанных репозиториев
## <interval> # Интервал обновления
## *boot # Каждую загрузку
## 12h # Каждые 12 часов
## 7d # Каждые 7 дней
## 1m # Один раз в месяц
## <repository> # Имена репозиториев с которых будет происходить обновление. Если не указано, то по умолчанию: core,extra,community,multilib,ublinux,modules
## AUTOUPDATE=enable
exec_autoupdate(){
true
}
################
##### MAIN #####
################
# Если файл подключен как ресурс с функциями, то выйти
return 0 2>/dev/null && return 0
if [[ -z $@ ]]; then
while read -ru3 FUNCTION; do
$"${FUNCTION##* }"
done 3< <(declare -F | grep "declare -f exec_")
else
while [[ $# -gt 0 ]]; do
declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" && shift || { FUNCTION+=" '${1}'" && shift; }
done
eval ${FUNCTION#*; }
fi

@ -186,6 +186,7 @@ exec_03_neededusers(){
if [[ -n ${PARAM} ]]; then
[[ ${PARAM%%=*} =~ [!\$%\&()*+,/\;\<\=\>?\^\{|\}~] ]] || eval "${PARAM%%=*}=\${PARAM#*=}"
fi
# Если по умолчанию нет ни одного пользователя, то создаём администратора
#[[ -z ${NEEDEDUSERS} ]] && NEEDEDUSERS="${DEFAULTUSER}:${ADMUID}:${DEFAULTPASSWD}:Administrator"
[[ -z $(cmdline_value users) ]] || NEEDEDUSERS=$(cmdline_value users)
[[ ${NOSECUREROOTPASSWD} == ${DEFAULTROOTPASSWD} ]] && ADDADM=yes
@ -534,8 +535,9 @@ exec_06_groupadd(){
[[ ${SELECT_OPTIONAL} == "x" ]] && unset SELECT_OPTIONAL
[[ ${SELECT_PASSWORD} == @(""|"x") ]] && unset SELECT_PASSWORD
[[ ${SELECT_PASSWORD} != @(""|'!*'|'!'|'*') ]] && SELECT_PASSWORD=$(return_hash_password hash ${HASHPASSWD} ${SELECT_PASSWORD})
# Поиск имени и GID в шаблонах пользователей/групп systemd
# Поиск по имени в шаблонах пользователей/групп systemd
[[ $(cat ${ROOTFS}/usr/share/ublinux-sysusers/*.sysusers) =~ ($'\n'|^)+'g'[[:blank:]]+"${SELECT_GROUP}"[[:blank:]]+([[:digit:]]+)[^$'\n']*($'\n'|$)+ ]] && FINDGROUP_ID=${BASH_REMATCH[2]} || unset FINDGROUP_ID
# Поиск по GID в шаблонах пользователей/групп systemd
[[ -z ${FINDGROUP_ID} ]] \
&& [[ $(cat ${ROOTFS}/usr/share/ublinux-sysusers/*.sysusers) =~ ($'\n'|^)+'g'[[:blank:]]+([^$'\n']+)[[:blank:]]+"${SELECT_GROUP}"[^$'\n']*($'\n'|$)+ ]] && FINDGROUP_NAME=${BASH_REMATCH[2]} || unset FINDGROUP_NAME
[[ -n ${FINDGROUP_ID} ]] && SELECT_GID="${FINDGROUP_ID}"
@ -606,9 +608,22 @@ exec_06_groupadd(){
# Если пароли по умолчанию, то firststart
exec_99_firststart(){
#echo "exec_99_firststart"
if grep -q "^root:${DEFAULTROOTPASSWD}:" ${ROOTFS}/etc/shadow \
&& grep -q "^$(grep ".*:x:${ADMUID}:" ${ROOTFS}/etc/passwd | cut -d: -f1):${DEFAULTPASSWD}:" ${ROOTFS}/etc/shadow; then
grep -q "^FIRSTSTART$" ${SYSCONF}/config 2>/dev/null || echo "FIRSTSTART=yes" >> ${SYSCONF}/config
[[ $1 == @("set="|"set+="|"set++="|"set-="|"set--="|"remove") ]] && COMMAND=$1 && shift
[[ -n ${COMMAND} ]] || COMMAND=
local PARAM="$@"
if [[ -n ${PARAM} ]]; then
local FIRSTSTART=
[[ ${PARAM%%=*} =~ [!\$%\&()*+,/\;\<\=\>?\^\{|\}~] ]] || eval "${PARAM%%=*}=\${PARAM#*=}"
fi
if [[ ${COMMAND} == "" ]]; then
if grep -q "^root:${DEFAULTROOTPASSWD}:" ${ROOTFS}/etc/shadow \
&& grep -q "^$(grep ".*:x:${ADMUID}:" ${ROOTFS}/etc/passwd | cut -d: -f1):${DEFAULTPASSWD}:" ${ROOTFS}/etc/shadow; then
grep -q "^FIRSTSTART$" ${SYSCONF}/config 2>/dev/null || echo "FIRSTSTART=yes" >> ${SYSCONF}/config
fi
elif [[ ${COMMAND} == @("set="|"set+="|"set++=") ]] && [[ -n ${FIRSTSTART} ]]; then
[[ $(cat ${SYSCONF}/config 2>/dev/null) =~ ($'\n'|^)+'FIRSTSTART=' ]] || echo "FIRSTSTART=yes" >> ${SYSCONF}/config
elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]]; then
sed "/FIRSTSTART=/d" -i ${SYSCONF}/config
fi
}

Loading…
Cancel
Save