Fix accounts and any bugs

master v2.70
Dmitry Razumov 2 years ago
parent 94da1aec97
commit 6097885269
Signed by: asmeron
GPG Key ID: 50BC1DB583B79706

@ -783,19 +783,19 @@ user_remove_group(){
# <digital>-<digital> # Все пользователи диапазона
# <username> # Имя пользователя
get_conf_useradd_from_system(){
SOURCE=${SYSCONF}/users; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
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})
local SOURCE=${SYSCONF}/users; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
local FILE_PASSWD="${ROOTFS}/etc/passwd"
local FILE_SHADOW="${ROOTFS}/etc/shadow"
local FILE_LOGINDEFS="${ROOTFS}/etc/login.defs"
local DATA_FILE_PASSWD=$(cat ${FILE_PASSWD})
local DATA_FILE_SHADOW=$(cat ${FILE_SHADOW})
# Загрузить файлы которые совпадают в каталогах /usr/lib/sysusers.d/ и /usr/share/ublinux-sysusers/. И загрузить которые уникальные в /usr/lib/sysusers.d/
DATA_SYSUSERS=$(cat \
local 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"
local DEFAULT_HOME="/home"
local DEFAULT_SHELL="/bin/bash"
show_user(){
local SELECT_USER="$1"
local SELECT_PLAINPASSWORD SELECT_UID SELECT_GROUP SELECT_GECOS SELECT_HOME SELECT_SHELL
@ -815,7 +815,9 @@ get_conf_useradd_from_system(){
#SELECT_EXTRAGROUPS=$(printf "%s\n" $(${CHROOT} id -nrG ${SELECT_USER}) | sort -u | xargs | tr " " ",")
#SELECT_EXTRAGROUPS=${SELECT_EXTRAGROUPS//,nobody/}; SELECT_EXTRAGROUPS=${SELECT_EXTRAGROUPS//nobody/}
SELECT_EXTRAGROUPS=$(comm --nocheck-order -13 <(printf "%s\n" ${USERGROUPS//,/ } | sort -u) <(printf "%s\n" $(${CHROOT} id -nrG ${SELECT_USER}) | sort -u) | xargs | tr " " ",")
# У id убираем первую группу, это основная группа
SELECT_EXTRAGROUPS=$(comm --nocheck-order -13 <(printf "%s\n" ${USERGROUPS//,/ } ${DEFAULTGROUP//,/ } | sort -u) <(printf "%s\n" $(${CHROOT} id -nrG ${SELECT_USER} | sed -E 's/([^ ]*) (.*)/\2/') | sort -u) | xargs | tr " " ",") #'
[[ -n ${SELECT_HOME} && ${SELECT_HOME} != "${DEFAULT_HOME}/${SELECT_USER}" ]] && SELECT_OPTIONAL+=" --home-dir ${SELECT_HOME}"
[[ -n ${SELECT_SHELL} && ${SELECT_SHELL} != ${DEFAULT_SHELL} ]] && SELECT_OPTIONAL+=" --shell ${SELECT_SHELL}"
if [[ ${SELECT_PASSWORD} == "!*" ]]; then

@ -26,8 +26,8 @@ exec_useradd_sync(){
local GET_USERSHADOW=$(get_conf_usershadow_from_system ${PARAM})
${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] ${GET_USERADD}
${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] ${GET_USERSHADOW}
[[ -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}
[[ -n ${GET_USERADD} ]] && eval ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] ${GET_USERADD}
[[ -n ${GET_USERSHADOW} ]] && eval ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] ${GET_USERSHADOW}
}
if [[ ${USERADD_SYNC} =~ 'shutdown@all' ]]; then
set_ubconfig "@all"
@ -61,7 +61,7 @@ exec_groupadd_sync(){
local PARAM=$1
local GET_GROUPADD=$(get_conf_groupadd_from_system ${PARAM})
${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] GROUPADD[*]
[[ -n ${GET_GROUPADD} ]] && ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] ${GET_GROUPADD}
[[ -n ${GET_GROUPADD} ]] && eval ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] ${GET_GROUPADD}
}
if [[ ${GROUPADD_SYNC} =~ 'shutdown@all' ]]; then
set_ubconfig "@all"

@ -70,9 +70,9 @@ set_hostname_live(){
}
exec_hostname(){
DEFAULT_HOSTNAME="ublinux-live"
DEFAULT_HOSTNAME="ublinux-pc"
KERNEL_HOSTNAME=$(cmdline_value hostname)
[[ ${KERNEL_HOSTNAME} == "" ]] || HOSTNAME=${KERNEL_HOSTNAME}
[[ -n ${KERNEL_HOSTNAME} ]] && HOSTNAME=${KERNEL_HOSTNAME}
[[ -z ${HOSTNAME} ]] && HOSTNAME="${DEFAULT_HOSTNAME}"
if [[ -n ${DOMAIN} ]]; then
SET_HOSTNAME="${HOSTNAME%%.*}.${DOMAIN}"
@ -82,7 +82,7 @@ exec_hostname(){
# Если в имени хоста указан домен, то зададим на сеанс DOMAIN
[[ ${HOSTNAME} != ${HOSTNAME#*.} ]] && SET_DOMAIN="${HOSTNAME#*.}"
fi
# set_hostname "${SET_HOSTNAME}" "${SET_DOMAIN}"
set_hostname "${SET_HOSTNAME}" "${SET_DOMAIN}"
# Если выполнение в initrd, то пропустить
[[ -n ${ROOTFS} ]] || set_hostname_live "${SET_HOSTNAME}" "${SET_DOMAIN}"
}

@ -25,12 +25,12 @@ exec_authpam(){
[[ -n ${COMMAND} ]] || COMMAND="set="
[[ $(declare -p AUTHPAM 2>/dev/null) =~ "declare -A" ]] || declare -A AUTHPAM
local PARAM="$@"
AUTHSELECT_LIST_ALL=$(${CMD_CHROOT} /usr/bin/authselect list)
# AUTHSELECT_LIST_ALL=$(${CMD_CHROOT} /usr/bin/authselect list)
AUTHPAM_FEATURE=${AUTHPAM[${AUTHPAM[0]}]//,/ }; AUTHPAM_FEATURE=${AUTHPAM_FEATURE//;/ }
if [[ ${COMMAND} == @("set="|"set+="|"set++=") ]]; then
if [[ ${AUTHPAM[0]} != @(""|disable|no|none|off) ]] \
&& [[ ${AUTHSELECT_LIST_ALL} =~ (^|$'\n')([^$'\n'$])+[[:blank:]]+${AUTHPAM[0]}[[:blank:]]+([^$'\n'$])+($'\n'|$) ]] \
&& [[ ${PARAM} =~ '['${AUTHPAM[0]}']=' || ${PARAM} =~ ^'AUTHPAM='${AUTHPAM[0]}$ ]]; then
if [[ ${AUTHPAM[0]} != @(""|disable|no|none|off) ]]; then
# && [[ ${AUTHSELECT_LIST_ALL} =~ (^|$'\n')([^$'\n'$])+[[:blank:]]+${AUTHPAM[0]}[[:blank:]]+([^$'\n'$])+($'\n'|$) ]] \
# && [[ ${PARAM} =~ '['${AUTHPAM[0]}']=' || ${PARAM} =~ ^'AUTHPAM='${AUTHPAM[0]}$ ]]; then
${CMD_CHROOT} /usr/bin/authselect select ${AUTHPAM[0]} ${AUTHPAM_FEATURE} --force --nobackup --quiet
fi
elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]]; then

@ -89,22 +89,24 @@ shopt -s extglob
# $3 # Если указано, то принудительно копировать /etc/skel в домашний каталог пользователя
create_home(){
local SELECT_USERNAME="${1}"
local SELECT_GROUP="${2}"
local SELECT_FORCESKEL="${3}"
local SELECT_FORCESKEL="${2}"
local ARG_RECURSIVE=
[[ ${SELECT_GROUP} == "" || ${SELECT_GROUP} == "-" ]] && SELECT_GROUP=${SELECT_USERNAME}
[[ ${SELECT_USERNAME} != "" ]] || return 1
if [[ -d "${ROOTFS}${DEFAULT_HOME_USER}/${SELECT_USERNAME}" ]]; then
${CMD_CHROOT} /usr/bin/chmod -f u+rw,g-rwx,o-rwx "${DEFAULT_HOME_USER}/${SELECT_USERNAME}"
[[ -z ${SELECT_FORCESKEL} ]] || cp -Taf ${ROOTFS}/etc/skel "${ROOTFS}${DEFAULT_HOME_USER}/${SELECT_USERNAME}"
local SELECT_GROUP="$(${CMD_CHROOT} /usr/bin/id -g ${SELECT_USERNAME})"
local SELECT_HOME="$(${CMD_CHROOT} getent passwd ${SELECT_USERNAME} | cut -d: -f6)"
[[ -n ${SELECT_USERNAME} && -n ${SELECT_GROUP} && -n ${SELECT_HOME} ]] || return 1
if [[ -d "${ROOTFS}${SELECT_HOME}" ]]; then
${CMD_CHROOT} /usr/bin/chown -f ${SELECT_USERNAME}:${SELECT_GROUP} "${SELECT_HOME}"
${CMD_CHROOT} /usr/bin/chmod -f u+rw,g-rwx,o-rwx "${SELECT_HOME}"
if [[ -n ${SELECT_FORCESKEL} ]]; then
cp -Taf ${ROOTFS}/etc/skel "${ROOTFS}${SELECT_HOME}"
${CMD_CHROOT} cd /etc/skel && find . -exec chown -f ${SELECT_USERNAME}:${SELECT_GROUP} ${SELECT_HOME}/{} \;
fi
else
install -dm700 "${ROOTFS}${DEFAULT_HOME_USER}/${SELECT_USERNAME}"
cp -Taf ${ROOTFS}/etc/skel "${ROOTFS}${DEFAULT_HOME_USER}/${SELECT_USERNAME}"
${CMD_CHROOT} install -dm700 -o ${SELECT_USERNAME} -g ${SELECT_GROUP} "${SELECT_HOME}"
cp -Taf ${ROOTFS}/etc/skel "${ROOTFS}${SELECT_HOME}"
${CMD_CHROOT} chown -fR ${SELECT_USERNAME}:${SELECT_GROUP} ${SELECT_HOME}
fi
#rsync -rlpt --ignore-existing etc/skel/ "${ROOTFS}${DEFAULT_HOME_USER}/${SELECT_USERNAME}"
[[ -n ${ROOTFS} ]] && ARG_RECURSIVE="-R" || ARG_RECURSIVE=
${CMD_CHROOT} /usr/bin/chown -f ${ARG_RECURSIVE} "${SELECT_USERNAME}" ${DEFAULT_HOME_USER}/"${SELECT_USERNAME}"
${CMD_CHROOT} /usr/bin/chown -f ${ARG_RECURSIVE} :"${SELECT_GROUP}" "${DEFAULT_HOME_USER}/${SELECT_USERNAME}"
}
# Задаём пароль root пользователю
@ -197,7 +199,7 @@ exec_03_add_groups(){
>&2 echo "ERROR: '${SELECT_GROUP}' cannot be a group name"
fi
fi
done 3<<< "${GROUPADD_GROUPS//,/$'\n'}"
done 3< <(sort -V <<< "${GROUPADD_GROUPS//,/$'\n'}")
fi
}
@ -290,7 +292,7 @@ exec_04_groupadd(){
else
LIST_GROUPADD_NOGID+="groupadd_local ${SELECT_GROUP}; "
fi
done 3< <(printf "%s\n" "${!GROUPADD[@]}")
done 3< <(printf "%s\n" "${!GROUPADD[@]}" | sort -V)
[[ -n ${LIST_GROUPADD_GID} ]] && eval "${LIST_GROUPADD_GID}"
[[ -n ${LIST_GROUPADD_NOGID} ]] && eval "${LIST_GROUPADD_NOGID}"
elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]]; then
@ -309,7 +311,6 @@ exec_04_groupadd(){
fi
}
# Создаем пользователей из ${NEEDEDUSERS} и добавляем в группы
# $1 Команды set или remove с режимом, варианты: set=|set+=|set++=|set-=|set--=|remove
# $2 Для команды set=|set+=|set++= параметр со значением, пример:
@ -378,7 +379,7 @@ exec_05_neededusers(){
if [[ ! -d ${ROOTFS}${DEFAULT_HOME_USER}/"${SELECT_USERNAME}" \
|| ${UPDATEHOME[${SELECT_USERNAME}],,} == @(yes|y|enable) \
|| ${UPDATEHOME,,} == @(yes|y|enable) ]]; then
create_home "${SELECT_USERNAME}" - force
create_home "${SELECT_USERNAME}" force
fi
done 3< <(tr ",;" "\n" <<< "${NEEDEDUSERS}")
fi
@ -456,6 +457,8 @@ exec_06_useradd(){
local DATA_FILE_GROUP=$(cat ${FILE_GROUP})
useradd_local(){
local SELECT_USERNAME=$1
local SELECT_GECOS= SELECT_UID= SELECT_GROUP= SELECT_EXTRAGROUPS= SELECT_OPTIONAL= SELECT_PASSWORD= NULL=
local SELECT_HOME= SELECT_SHELL= SELECT_MKHOME=
# Проверяем существует ли пользователь в системе
[[ ${DATA_FILE_PASSWD} =~ ($'\n'|^)+"${SELECT_USERNAME}": ]] && IS_USERNAME_PASSWD=yes || IS_USERNAME_PASSWD=
# Проверяем отсутствие пользователя в системе или параметр принудительного обновления
@ -463,20 +466,35 @@ exec_06_useradd(){
IFS=: read -r SELECT_GECOS SELECT_UID SELECT_GROUP SELECT_EXTRAGROUPS SELECT_OPTIONAL SELECT_PASSWORD NULL <<< "${USERADD[${SELECT_USERNAME}]}"
[[ ${NULL} == "" ]] || { >&2 echo "WARNING: Unnecessary processing of the ':' character. USERADD[${SELECT_USERNAME}]"; }
#echo -e "\n===> exec_06_useradd: ${SELECT_USERNAME}=${SELECT_GECOS}:${SELECT_UID}:${SELECT_GROUP}:${SELECT_EXTRAGROUPS}:${SELECT_OPTIONAL}:${SELECT_PASSWORD}"
# -----------
[[ ${SELECT_OPTIONAL,,} == "x" ]] && SELECT_OPTIONAL=
[[ ${SELECT_OPTIONAL} =~ ("--home-dir "|"-d ")([^' ']*)(' '|$) ]] && SELECT_HOME="${BASH_REMATCH[2]}" || SELECT_HOME="${DEFAULT_HOME_USER}/${SELECT_USERNAME}"
[[ ${SELECT_OPTIONAL} =~ ("--shell "|"-s ")([^' ']*)(' '|$) ]] && SELECT_SHELL="${BASH_REMATCH[2]}" || SELECT_SHELL="+"
[[ ${SELECT_OPTIONAL} =~ ("--no-create-home"|"-M") ]] && SELECT_MKHOME= || SELECT_MKHOME="yes"
# -----------
[[ ${SELECT_PASSWORD} == @(""|"x") ]] && SELECT_PASSWORD="${DEFAULTPASSWD}"
[[ ${SELECT_PASSWORD} != @(""|'!*'|'!'|'!!'|'*') ]] && SELECT_PASSWORD="$(return_hash_password hash ${HASHPASSWD} ${SELECT_PASSWORD})"
# -----------
[[ ${SELECT_GECOS,,} == "x" ]] && SELECT_GECOS=
# -----------
[[ ${SELECT_UID,,} == "x" || ${SELECT_UID} =~ ^[^0-9]+$ ]] && SELECT_UID=
# Если существует домашний каталог пользователя, то UID берём от каталога
if [[ -z ${SELECT_UID} && -d "${ROOTFS}${SELECT_HOME}" ]]; then
SELECT_UID=$(stat -c %u "${ROOTFS}${SELECT_HOME}")
[[ ${DATA_FILE_PASSWD} =~ ($'\n'|^)+[^:]*:[^:]*:"${SELECT_UID}": ]] && SELECT_UID=
[[ ! ${DATA_FILE_PASSWD} =~ ($'\n'|^)+"${SELECT_USERNAME}":[^:]*:"${SELECT_UID}": ]] \
&& [[ ${DATA_FILE_PASSWD} =~ ($'\n'|^)+[^:]*:[^:]*:"${SELECT_UID}": ]] && SELECT_UID=
fi
if [[ -z ${SELECT_UID} && ${DATA_FILE_PASSWD} =~ ($'\n'|^)+"${SELECT_USERNAME}":[^:]*:([[:digit:]]+): ]]; then
# Если пользователь присутствует в списке, то берём его UID
SELECT_UID=${BASH_REMATCH[2]}
fi
# -----------
[[ ${SELECT_GROUP,,} == "x" ]] && SELECT_GROUP=
# Если существует домашний каталог пользователя, то GID берём от каталога
if [[ -z ${SELECT_GROUP} && -d "${ROOTFS}${SELECT_HOME}" ]]; then
SELECT_GROUP=$(stat -c %g "${ROOTFS}${SELECT_HOME}")
[[ ${DATA_FILE_PASSWD} =~ ($'\n'|^)+[^:]*:[^:]*:[^:]*:"${SELECT_GROUP}": ]] && SELECT_GROUP=
[[ ! ${DATA_FILE_PASSWD} =~ ($'\n'|^)+"${SELECT_USERNAME}":[^:]*:[^:]*:"${SELECT_GROUP}": ]] \
&& [[ ${DATA_FILE_PASSWD} =~ ($'\n'|^)+[^:]*:[^:]*:[^:]*:"${SELECT_GROUP}": ]] && SELECT_GROUP=
fi
# Если указана основная группа, но она не создана, то создать
if [[ -n ${SELECT_GROUP} && ${DATA_FILE_GROUP} =~ ($'\n'|^)+"${SELECT_GROUP}":[^$'\n']+:([[:digit:]]+):.*($'\n'|$) ]]; then
@ -486,7 +504,7 @@ exec_06_useradd(){
# Если группа имеет цифровое имя и присутствует в списке, то берём её GUID
SELECT_GROUP=${SELECT_GROUP}
elif [[ ${SELECT_OPTIONAL} =~ ("--no-user-group"|"-N") && ${DATA_FILE_GROUP} =~ ($'\n'|^)+"users":[^$'\n']+:([[:digit:]]+):.*($'\n'|$) ]]; then
# Если указан параметр не создавать группу по имени пользователя, то задаём GIT группы users
# Если указан параметр не создавать группу по имени пользователя, то задаём GID группы users
SELECT_GROUP=${BASH_REMATCH[2]}
elif [[ ${SELECT_OPTIONAL} =~ ("--system"|"-r") ]]; then
# Если указан параметр создавать системную группу
@ -513,28 +531,21 @@ exec_06_useradd(){
fi
fi
# -----------
[[ ${SELECT_OPTIONAL,,} == "x" ]] && SELECT_OPTIONAL=
[[ ${SELECT_OPTIONAL} =~ ("--home-dir "|"-d ")([^' ']*)(' '|$) ]] && SELECT_HOME="${BASH_REMATCH[2]}" || SELECT_HOME="${DEFAULT_HOME_USER}/${SELECT_USERNAME}"
[[ ${SELECT_OPTIONAL} =~ ("--shell "|"-s ")([^' ']*)(' '|$) ]] && SELECT_SHELL="${BASH_REMATCH[2]}" || SELECT_SHELL="+"
[[ ${SELECT_OPTIONAL} =~ ("--no-create-home"|"-M") ]] && SELECT_MKHOME= || SELECT_MKHOME="yes"
# -----------
[[ ${SELECT_PASSWORD} == @(""|"x") ]] && SELECT_PASSWORD="${DEFAULTPASSWD}"
[[ ${SELECT_PASSWORD} != @(""|'!*'|'!'|'!!'|'*') ]] && SELECT_PASSWORD="$(return_hash_password hash ${HASHPASSWD} ${SELECT_PASSWORD})"
# -----------
# Создаём/Изменяем пользователя
user_add "${SELECT_USERNAME}:${SELECT_GECOS}:${SELECT_UID}:${SELECT_GROUP}:${SELECT_PASSWORD}:${SELECT_HOME}:${SELECT_SHELL}:+:+:+:+:+:+"
# -----------
# Проверим права на домашнем каталоге пользователя, если не совпадают с указанным польователем, то переназначим
# Проверим права на домашнем каталоге пользователя, если не совпадают с указанным пользователем, то переназначим
if [[ -d ${ROOTFS}${SELECT_HOME} ]]; then
GET_UID_GID_HOME=$(${CMD_CHROOT} /usr/bin/stat -c "%U:%G" ${SELECT_HOME})
GET_UID_GID_SELECT="$(${CMD_CHROOT} /usr/bin/id -u ${SELECT_USERNAME} 2>/dev/null):$(${CMD_CHROOT} /usr/bin/id -g ${SELECT_GROUP:-${SELECT_USERNAME}} 2>/dev/null)"
GET_UID_GID_HOME=$(stat -c "%u:%g" "${ROOTFS}${SELECT_HOME}")
GET_UID_GID_SELECT="$(${CMD_CHROOT} /usr/bin/id -u ${SELECT_USERNAME} 2>/dev/null):$(${CMD_CHROOT} /usr/bin/id -g ${SELECT_USERNAME} 2>/dev/null)"
if [[ ${GET_UID_GID_HOME} != ${GET_UID_GID_SELECT} ]]; then
eval ${CMD_CHROOT} /usr/bin/chown -f -h "${SELECT_USERNAME}:" \
eval ${CMD_CHROOT} /usr/bin/chown -f -h "${GET_UID_GID_SELECT}" \
$(${CMD_CHROOT} find ${SELECT_HOME} -maxdepth 1 -printf '"%p"\n') \
$(cat ${ROOTFS}/etc/xdg/user-dirs.defaults 2>/dev/null | grep -v "^\s*#" | sed -E "s|.*=(.*)|${SELECT_HOME}/\1|") \
$(cat ${ROOTFS}${SELECT_HOME}/.config/user-dirs.dirs 2>/dev/null | grep -v "^\s*#"| sed -E "s|.*HOME/(.*)|${SELECT_HOME}/\"\1|")
ARG_RECURSIVE="-hRP"
eval ${CMD_CHROOT} /usr/bin/chown -f ${ARG_RECURSIVE} "${SELECT_USERNAME}:" \
# Все скрытые файлы глубиной 1
eval ${CMD_CHROOT} /usr/bin/chown -f ${ARG_RECURSIVE} "${GET_UID_GID_SELECT}" \
$(${CMD_CHROOT} find ${SELECT_HOME} -maxdepth 1 -name ".*" -printf '"%p"\n')
fi
fi
@ -556,9 +567,9 @@ exec_06_useradd(){
[[ -n ${ROOTFS} ]] || 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"
fi
# Создаём домашний каталог принудительно и копируем /etc/skel
[[ ! -d ${ROOTFS}${DEFAULT_HOME_USER}/"${SELECT_USERNAME}" && SELECT_MKHOME == "yes" ]] && UPDATEHOME[${SELECT_USERNAME}]=yes
[[ ! -d "${ROOTFS}${DEFAULT_HOME_USER}/${SELECT_USERNAME}" && ${SELECT_MKHOME} == "yes" ]] && UPDATEHOME[${SELECT_USERNAME}]="yes"
if [[ ${UPDATEHOME,,} == @(yes|y|enable) || ${UPDATEHOME[${SELECT_USERNAME}],,} == @(yes|y|enable) ]]; then
create_home "${SELECT_USERNAME}" "${SELECT_GROUP}" force
create_home "${SELECT_USERNAME}" force
fi
}
@ -572,7 +583,7 @@ exec_06_useradd(){
else
LIST_USERADD_NOUID+="useradd_local ${SELECT_USERNAME}; "
fi
done 3< <(printf "%s\n" "${!USERADD[@]}")
done 3< <(printf "%s\n" "${!USERADD[@]}" | sort -V)
eval "${LIST_USERADD_UID}"
eval "${LIST_USERADD_NOUID}"
elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]] && [[ ${#USERADD[@]} -ne 0 ]]; then
@ -645,7 +656,7 @@ exec_07_usershadow(){
[[ ${SELECT_INACTIVE} =~ (-1|^[0-9]*$) ]] || SELECT_INACTIVE=
[[ ${SELECT_EXPIRE} =~ (^[0-9]*$|^[0-9]{4,4}'-'[0-9]{1,2}'-'[0-9]{1,2}$) ]] || SELECT_EXPIRE=
user_add "${SELECT_USERNAME}:+:+:+:+:+:+:${SELECT_LASTCHANGED}:${SELECT_MINDAY}:${SELECT_MAXDAY}:${SELECT_WARN}:${SELECT_INACTIVE}:${SELECT_EXPIRE}"
done 3< <(printf "%s\n" "${!USERSHADOW[@]}")
done 3< <(printf "%s\n" "${!USERSHADOW[@]}" | sort -V)
elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]] && [[ ${#USERSHADOW[@]} -ne 0 ]]; then
if [[ ${PARAM%%=*} =~ ^.*'['(.*)']' ]]; then
local SELECT_USERNAME=${BASH_REMATCH[1]}
@ -710,7 +721,7 @@ exec_08_user_members(){
# Добавить пользователей в группы
while IFS= read -ru3 SELECT_USERNAME; do
useradd_local ${SELECT_USERNAME}
done 3< <(printf "%s\n" "${!USERADD[@]}")
done 3< <(printf "%s\n" "${!USERADD[@]}" | sort -V)
elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]] && [[ ${#USERADD[@]} -ne 0 ]]; then
if [[ ${PARAM%%=*} =~ ^'USERADD['(.*)']' ]]; then
local SELECT_USERNAME=${BASH_REMATCH[1]}
@ -735,7 +746,7 @@ exec_08_user_members(){
}
while IFS= read -ru3 SELECT_GROUP; do
groupadd_local "${SELECT_GROUP}"
done 3< <(printf "%s\n" "${!GROUPADD[@]}")
done 3< <(printf "%s\n" "${!GROUPADD[@]}" | sort -V)
elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]] && [[ ${#GROUPADD[@]} -ne 0 ]]; then
if [[ ${PARAM%%=*} =~ ^'GROUPADD['(.*)']' ]]; then
local SELECT_GROUP=${BASH_REMATCH[1]}

@ -210,9 +210,9 @@ SERVICES_ENABLE=dbus-broker,NetworkManager,sshd,systemd-swap,cups,cockpit.socket
## # Если не указан <user_group> и существует каталог /home/<user_name> , то <user_group> будет взят у этого каталога
## <extra_groups> # Дополнительные группы пользователя. Дополнительные к USERGROUPS
## # Если группа отсутствует или 'x', то 'extra_groups=users'. Если группа не существует, то будет создана. Перечисление через запятую.
## <optional> # Дополнительные параметры, например: '--shell /usr/bin/bash --create-home --no-create-home --no-user-group --non-unique'
## <optional> # Дополнительные параметры, например: '--shell /bin/bash --create-home --no-create-home --no-user-group --non-unique'
## --home-dir <ДОМ_КАТ> # Домашний каталог новой учётной записи
## -s, --shell /usr/bin/bash # Регистрационная оболочка новой учётной записи
## -s, --shell /bin/bash # Регистрационная оболочка новой учётной записи
## -r, --system # Создать системного пользователя
## -M, --no-create-home # Не создавать домашний каталог пользователя
## -N, --no-user-group # Не создавать группу с тем же именем что и у пользователя
@ -226,7 +226,7 @@ SERVICES_ENABLE=dbus-broker,NetworkManager,sshd,systemd-swap,cups,cockpit.socket
## # Первые символы '%%' работают как команда для ubconfig, что-бы не шифровать пароль, и не сохраняются в конфигурацию.
## USERADD[superadmin]='Администратор:1000:x:x:x:$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60'
## USERADD[user-1]=x
## USERADD[user-1]='Пользователь-1:x:x:vboxusers,libvirt:-s /usr/bin/bash -o:$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60'
## USERADD[user-1]='Пользователь-1:x:x:vboxusers,libvirt:-s /bin/bash -o:$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60'
## Параметры пользователя системы /etc/shadow. Если пользователь существует, то без изменений
## USERSHADOW[<user_name>]='<lastchanged>:<minday>:<maxday>:<warn>:<inactive>:<expire>'
@ -247,18 +247,19 @@ SERVICES_ENABLE=dbus-broker,NetworkManager,sshd,systemd-swap,cups,cockpit.socket
## Синхронизация пользователей системы /etc/passwd и их параметры /etc/shadow с глобальной конфигурацией
## USERADD_SYNC='boot,shutdown,shutdown@all,shutdown@users,shutdown@systems,shutdown@<min>-<max>,shutdown@<gid>'
## boot # При загрузке системы принудительно применить глобальную конфигурацию на пользователя
## shutdown # Аналогичен shutdown@users + shutdown@systems
## shutdown@all # При завершении работы системы синхронизировать всех пользователей в системе с глобальной конфигурацией
## shutdown@users # При завершении работы системы синхронизировать пользователей 1000<=UID<=6000 в системе с глобальной конфигурацией
## shutdown@systems # При завершении работы системы синхронизировать системных пользователей 500<=UID<=999 в системе с глобальной конфигурацией
## shutdown@<min>-<max> # При завершении работы системы синхронизировать диапазон UID пользователей в системе с глобальной конфигурацией
## shutdown@<gid> # При завершении работы системы синхронизировать UID пользователя в системе с глобальной конфигурацией
## USERADD_SYNC=boot,shutdown
##
## USERADD_SYNC[<user_name>]='boot,shutdown'
## <user_name> # Имя пользователя, необязательное поле. Если не указано, то применяется для всех пользователей
## boot # При загрузке системы принудительно применить глобальную конфигурацию на пользователя
## shutdown # При завершении работы системы синхронизировать указанного пользователя в системе с глобальной конфигурацией
## USERADD_SYNC=boot
## USERADD_SYNC[superadmin]=boot,shutdown
## Группы системы /etc/group. Создаст или изменит существующие группы
@ -286,6 +287,7 @@ SERVICES_ENABLE=dbus-broker,NetworkManager,sshd,systemd-swap,cups,cockpit.socket
## shutdown@systems # При завершении работы системы синхронизировать системные группы 500<=GID<=999 в системе с глобальной конфигурацией
## shutdown@<min>-<max> # При завершении работы системы синхронизировать диапазон GID групп в системе с глобальной конфигурацией
## shutdown@<gid> # При завершении работы системы синхронизировать GID группы в системе с глобальной конфигурацией
## GROUPADD_SYNC=shutdown
##
## GROUPADD_SYNC[group_name]='shutdown'
## group_name # Имя группы, необязательное поле. Если не указано, то применяется для всех групп

Loading…
Cancel
Save