# Получить запись вида конфигурации USERADD из системного пользователя
# $1 # Варианты пользователей, можно указывать несколько через пробел, кроме nobody
# <пуcто> # Эквивалентно '@users @systems'
# @users # Все пользователи кроме системных, MIN_UID и MAX_UID взять из /etc/login.defs
# @systems # Только системные, SYS_MIN_UID и SYS_MAX_UID взять из /etc/login.defs
# @all # Всес UID от 0 до 65535
# <digital>-<digital> # Все пользователи диапазона
# <username> # Имя пользователя
get_conf_useradd_from_system(){
FILE_PASSWD="${ROOTFS}/etc/passwd"
FILE_SHADOW="${ROOTFS}/etc/shadow"
FILE_LOGINDEFS="${ROOTFS}/etc/login.defs"
DATA_FILE_PASSWD=$(cat ${FILE_PASSWD})
DATA_FILE_SHADOW=$(cat ${FILE_SHADOW})
# Загрузить файлы которые совпадают в каталогах /usr/lib/sysusers.d/ и /usr/share/ublinux-sysusers/. И загрузить которые уникальные в /usr/lib/sysusers.d/
DATA_SYSUSERS=$(cat \
$(comm --nocheck-order -12 <(cd /usr/lib/sysusers.d/ && ls -v1 *.conf | sed "s/\.conf//g") <(cd /usr/share/ublinux-sysusers/ && ls -v1 *.sysusers | sed "s/\.sysusers//g") | sed 's|^|/usr/share/ublinux-sysusers/|;s|$|.sysusers|') \
$(comm --nocheck-order -23 <(cd /usr/lib/sysusers.d/ && ls -v1 *.conf | sed "s/\.conf//g") <(cd /usr/share/ublinux-sysusers/ && ls -v1 *.sysusers | sed "s/\.sysusers//g") | sed 's|^|/usr/lib/sysusers.d/|;s|$|.conf|') \
)
DEFAULT_HOME="/home"
DEFAULT_SHELL="/bin/bash"
show_user(){
local SELECT_USER="$1"
local SELECT_PLAINPASSWORD SELECT_UID SELECT_GROUP SELECT_GECOS SELECT_HOME SELECT_SHELL
# Получить запись вида конфигурации GROUPADD из систеных групп
# $1 # Варианты групп, можно указывать несколько через пробел, кроме nobody
# <пусто> # Эквивалентно '@groups @systems'
# @groups # Все кроме системных, MIN_GID и MAX_GID взять из /etc/login.defs
# @systems # Только системные, SYS_MIN_GID и SYS_MAX_GID взять из /etc/login.defs
# @all # Все c GID от 0 до 65535
# <digital>-<digital> # Все пользователи диапазона
# <groupname> # Имя группы
get_conf_groupadd_from_system(){
FILE_GROUP="${ROOTFS}/etc/group"
FILE_GSHADOW="${ROOTFS}/etc/gshadow"
FILE_LOGINDEFS="${ROOTFS}/etc/login.defs"
DATA_FILE_GROUP=$(cat ${FILE_GROUP})
DATA_FILE_GSHADOW=$(cat ${FILE_GSHADOW})
# Загрузить файлы которые совпадают в каталогах /usr/lib/sysusers.d/ и /usr/share/ublinux-sysusers/. И загрузить которые уникальные в /usr/lib/sysusers.d/
DATA_SYSUSERS=$(cat \
$(comm --nocheck-order -12 <(cd /usr/lib/sysusers.d/ && ls -v1 *.conf | sed "s/\.conf//g") <(cd /usr/share/ublinux-sysusers/ && ls -v1 *.sysusers | sed "s/\.sysusers//g") | sed 's|^|/usr/share/ublinux-sysusers/|;s|$|.sysusers|') \
$(comm --nocheck-order -23 <(cd /usr/lib/sysusers.d/ && ls -v1 *.conf | sed "s/\.conf//g") <(cd /usr/share/ublinux-sysusers/ && ls -v1 *.sysusers | sed "s/\.sysusers//g") | sed 's|^|/usr/lib/sysusers.d/|;s|$|.conf|') \
)
show_group(){
local SELECT_GROUP="$1"
local SELECT_PLAINPASSWORD SELECT_GID SELECT_MEMBERS
${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] USERADD[${SELECT_USER}]="${SELECT_GECOS}:${SELECT_UID}:${SELECT_GROUP}:${SELECT_EXTRAGROUPS}:${SELECT_OPTIONAL}:${SELECT_PASSWORD}"
${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] USERSHADOW[${SELECT_USER}]="${SELECT_LASTCHANGED}:${SELECT_MINDAY}:${SELECT_MAXDAY}:${SELECT_WARN}:${SELECT_INACTIVE}:${SELECT_EXPIRE}"
set_ubconfig(){
local PARAM=$1
local GET_USERADD=$(get_conf_useradd_from_system ${PARAM})
local GET_USERSHADOW=$(get_conf_usershadow_from_system ${PARAM})
[[ -n ${GET_USERADD} ]] && ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] ${GET_USERADD}
[[ -n ${GET_USERSHADOW} ]] && ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] ${GET_USERSHADOW}
${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] GROUPADD[${SELECT_GROUP}]="${SELECT_GUSERS}:${SELECT_GID}::${SELECT_ADMINISTRATORS}:${SELECT_PASSWORD}"
set_ubconfig(){
local PARAM=$1
local GET_GROUPADD=$(get_conf_groupadd_from_system ${PARAM})
[[ -n ${GET_GROUPADD} ]] && ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] ${GET_GROUPADD}
echo "INFO: The user '${SELECT_USERNAME}' exists in the system, the settings are not applied. To force the settings, enable the '[users] USERADD_SYNC[${SELECT_USERNAME}]=boot' option"
@ -640,7 +648,7 @@ exec_05_groupadd(){
sed "/GROUPADD\[${SELECT_GROUP}\]=/d" -i "${FILE_ROOT_USERS}"