FIX param POLKIT, duplicat groups

master
Dmitry Razumov 4 months ago
parent 078c8964a0
commit f38a8dd721
Signed by: asmeron
GPG Key ID: 50BC1DB583B79706

@ -736,6 +736,8 @@ user_add_group(){
SELECT_GID=${VOL_FILEP_GID} SELECT_GID=${VOL_FILEP_GID}
[[ -n ${SELECT_GID} && ${DATA_FILE_GROUP} =~ ($'\n'|^)+([^$'\n']*):([^$'\n']*):"${SELECT_GID}":([^$'\n']*)($'\n'|$)+ ]] \ [[ -n ${SELECT_GID} && ${DATA_FILE_GROUP} =~ ($'\n'|^)+([^$'\n']*):([^$'\n']*):"${SELECT_GID}":([^$'\n']*)($'\n'|$)+ ]] \
&& SELECT_GROUPNAME=${BASH_REMATCH[2]} && SELECT_GROUPNAME=${BASH_REMATCH[2]}
# Убираем дубликаты групп
SELECT_GROUPS=$(sort -u <<< ${SELECT_GROUPS//,/$'\n'}); SELECT_GROUPS=${SELECT_GROUPS//$'\n'/,}
# Проверяем, если группа является основной у пользователя, то исключить из списка групп # Проверяем, если группа является основной у пользователя, то исключить из списка групп
SELECT_GROUPS=$(sed "s/^${SELECT_GROUPNAME}$//g;s/^${SELECT_GROUPNAME},//g;s/,${SELECT_GROUPNAME}$//g;s/,${SELECT_GROUPNAME},/,/g" <<< "${SELECT_GROUPS}") SELECT_GROUPS=$(sed "s/^${SELECT_GROUPNAME}$//g;s/^${SELECT_GROUPNAME},//g;s/,${SELECT_GROUPNAME}$//g;s/,${SELECT_GROUPNAME},/,/g" <<< "${SELECT_GROUPS}")
while IFS= read -ru4 SELECT_GROUPNAME; do while IFS= read -ru4 SELECT_GROUPNAME; do

@ -48,34 +48,43 @@ exec_useradd_sync(){
# Все пользователи кроме системных # Все пользователи кроме системных
local UID_MIN=$([[ $(< "${FILE_LOGINDEFS}") =~ [^#[^:blank:]]*UID_MIN[[:blank:]]+([[:digit:]]+) ]]; echo -n "${BASH_REMATCH[1]}") local UID_MIN=$([[ $(< "${FILE_LOGINDEFS}") =~ [^#[^:blank:]]*UID_MIN[[:blank:]]+([[:digit:]]+) ]]; echo -n "${BASH_REMATCH[1]}")
local UID_MAX=$([[ $(< "${FILE_LOGINDEFS}") =~ [^#[^:blank:]]*UID_MAX[[:blank:]]+([[:digit:]]+) ]]; echo -n "${BASH_REMATCH[1]}") local UID_MAX=$([[ $(< "${FILE_LOGINDEFS}") =~ [^#[^:blank:]]*UID_MAX[[:blank:]]+([[:digit:]]+) ]]; echo -n "${BASH_REMATCH[1]}")
local STR_REMOVE_USERS=()
[[ -n ${!USERADD[@]} ]] && while IFS= read -u3 SELECT_USER; do [[ -n ${!USERADD[@]} ]] && while IFS= read -u3 SELECT_USER; do
IFS=':' read -u4 SELECT_GECOS SELECT_UID NULL 4<<< ${USERADD[${SELECT_USER}]} IFS=':' read -u4 SELECT_GECOS SELECT_UID NULL 4<<< ${USERADD[${SELECT_USER}]}
if [[ ${SELECT_UID} == @(""|"x"|"X") ]] || [[ ${SELECT_UID} -ge ${UID_MIN} && ${SELECT_UID} -le ${UID_MAX} ]]; then if [[ ${SELECT_UID} == @(""|"x"|"X") ]] || [[ ${SELECT_UID} -ge ${UID_MIN} && ${SELECT_UID} -le ${UID_MAX} ]]; then
${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] USERADD[${SELECT_USER}] USERSHADOW[${SELECT_USER}] STR_REMOVE_USERS+=("USERADD[${SELECT_USER}]")
STR_REMOVE_USERS+=("USERSHADOW[${SELECT_USER}]")
fi fi
done 3< <(printf "%s\n" "${!USERADD[@]}") done 3< <(printf "%s\n" "${!USERADD[@]}")
[[ ${#STR_REMOVE_USERS[@]} -ge 0 ]] && ${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] "${STR_REMOVE_USERS[@]}"
elif [[ ${PARAM} == '@systems' ]]; then elif [[ ${PARAM} == '@systems' ]]; then
# Удалить пользователей 500<=UID<=999 из глобальной конфигурации # Удалить пользователей 500<=UID<=999 из глобальной конфигурации
# Пользователи системные # Пользователи системные
local UID_MIN_SYS=$([[ $(< "${FILE_LOGINDEFS}") =~ [^#[^:blank:]]*SYS_UID_MIN[[:blank:]]+([[:digit:]]+) ]]; echo -n "${BASH_REMATCH[1]}") local UID_MIN_SYS=$([[ $(< "${FILE_LOGINDEFS}") =~ [^#[^:blank:]]*SYS_UID_MIN[[:blank:]]+([[:digit:]]+) ]]; echo -n "${BASH_REMATCH[1]}")
local UID_MAX_SYS=$([[ $(< "${FILE_LOGINDEFS}") =~ [^#[^:blank:]]*SYS_UID_MAX[[:blank:]]+([[:digit:]]+) ]]; echo -n "${BASH_REMATCH[1]}") local UID_MAX_SYS=$([[ $(< "${FILE_LOGINDEFS}") =~ [^#[^:blank:]]*SYS_UID_MAX[[:blank:]]+([[:digit:]]+) ]]; echo -n "${BASH_REMATCH[1]}")
local STR_REMOVE_USERS=()
[[ -n ${!USERADD[@]} ]] && while IFS= read -u3 SELECT_USER; do [[ -n ${!USERADD[@]} ]] && while IFS= read -u3 SELECT_USER; do
IFS=':' read -u4 SELECT_GECOS SELECT_UID NULL 4<<< ${USERADD[${SELECT_USER}]} IFS=':' read -u4 SELECT_GECOS SELECT_UID NULL 4<<< ${USERADD[${SELECT_USER}]}
if [[ ${SELECT_UID} != @(""|"x"|"X") && ${SELECT_UID} -ge ${UID_MIN_SYS} && ${SELECT_UID} -le ${UID_MAX_SYS} ]]; then if [[ ${SELECT_UID} != @(""|"x"|"X") && ${SELECT_UID} -ge ${UID_MIN_SYS} && ${SELECT_UID} -le ${UID_MAX_SYS} ]]; then
${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] USERADD[${SELECT_USER}] USERSHADOW[${SELECT_USER}] STR_REMOVE_USERS+=("USERADD[${SELECT_USER}]")
STR_REMOVE_USERS+=("USERSHADOW[${SELECT_USER}]")
fi fi
done 3< <(printf "%s\n" "${!USERADD[@]}") done 3< <(printf "%s\n" "${!USERADD[@]}")
[[ ${#STR_REMOVE_USERS[@]} -ge 0 ]] && ${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] "${STR_REMOVE_USERS[@]}"
elif [[ ${PARAM} =~ ^([[:digit:]]+)'-'*([[:digit:]]*)$ ]]; then elif [[ ${PARAM} =~ ^([[:digit:]]+)'-'*([[:digit:]]*)$ ]]; then
# Удалить пользователей X<=UID<=Y из глобальной конфигурации # Удалить пользователей X<=UID<=Y из глобальной конфигурации
local UID_MIN=${BASH_REMATCH[1]} local UID_MIN=${BASH_REMATCH[1]}
local UID_MAX=${BASH_REMATCH[2]} local UID_MAX=${BASH_REMATCH[2]}
local STR_REMOVE_USERS=()
[[ -n ${UID_MAX} ]] || UID_MAX=${UID_MIN} [[ -n ${UID_MAX} ]] || UID_MAX=${UID_MIN}
[[ -n ${!USERADD[@]} ]] && while IFS= read -u3 SELECT_USER; do [[ -n ${!USERADD[@]} ]] && while IFS= read -u3 SELECT_USER; do
IFS=':' read -u4 SELECT_GECOS SELECT_UID NULL 4<<< ${USERADD[${SELECT_USER}]} IFS=':' read -u4 SELECT_GECOS SELECT_UID NULL 4<<< ${USERADD[${SELECT_USER}]}
if [[ ${SELECT_UID} != @(""|"x"|"X") && ${SELECT_UID} -ge ${UID_MIN} && ${SELECT_UID} -le ${UID_MAX} ]]; then if [[ ${SELECT_UID} != @(""|"x"|"X") && ${SELECT_UID} -ge ${UID_MIN} && ${SELECT_UID} -le ${UID_MAX} ]]; then
${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] USERADD[${SELECT_USER}] USERSHADOW[${SELECT_USER}] STR_REMOVE_USERS+=("USERADD[${SELECT_USER}]")
STR_REMOVE_USERS+=("USERSHADOW[${SELECT_USER}]")
fi fi
done 3< <(printf "%s\n" "${!USERADD[@]}") done 3< <(printf "%s\n" "${!USERADD[@]}")
[[ ${#STR_REMOVE_USERS[@]} -ge 0 ]] && ${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] "${STR_REMOVE_USERS[@]}"
else else
# Входящий параметр - имя пользователя # Входящий параметр - имя пользователя
${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] USERADD[${PARAM}] USERSHADOW[${PARAM}] ${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] USERADD[${PARAM}] USERSHADOW[${PARAM}]

@ -70,6 +70,7 @@ exec_x11vnc(){
#/usr/bin/x11vnc -showrfbauth /root/.vnc/passwd #/usr/bin/x11vnc -showrfbauth /root/.vnc/passwd
fi fi
[[ -f /root/.vnc/.passwd ]] && OPTION_RFBAUTH_PASSWD="-rfbauth /root/.vnc/.passwd" [[ -f /root/.vnc/.passwd ]] && OPTION_RFBAUTH_PASSWD="-rfbauth /root/.vnc/.passwd"
# Создать сервис x11vnc для дисплейного менеджера
if systemctl --quiet is-enabled lightdm.service &>/dev/null || systemctl --quiet is-enabled lightdm-plymouth.service &>/dev/null; then if systemctl --quiet is-enabled lightdm.service &>/dev/null || systemctl --quiet is-enabled lightdm-plymouth.service &>/dev/null; then
#$(cd /tmp/.X11-unix && for x in X*; do echo ":${x#X}"; done) #$(cd /tmp/.X11-unix && for x in X*; do echo ":${x#X}"; done)
for ID_DISPLAY in /var/run/lightdm/root/:*; do for ID_DISPLAY in /var/run/lightdm/root/:*; do
@ -87,7 +88,7 @@ After=graphical.target
[Service] [Service]
#ExecStartPre=/bin/sh -c 'while ! pgrep -U "root" Xorg; do sleep 2; done' #ExecStartPre=/bin/sh -c 'while ! pgrep -U "root" Xorg; do sleep 2; done'
ExecStart= ExecStart=
ExecStart=/usr/bin/x11vnc ${OPTION_GLOBAL} ${OPTION_PORT} ${OPTION_DISPLAY} ${OPTION_RFBAUTH_PASSWD} ${OPTION_LOG} ${X11VNC[options]} ExecStart=/usr/bin/x11vnc ${X11VNC[options]} ${OPTION_PORT} ${OPTION_DISPLAY} ${OPTION_RFBAUTH_PASSWD} ${OPTION_LOG} ${OPTION_GLOBAL}
Restart=always Restart=always
RestartSec=5 RestartSec=5
SuccessExitStatus=2 SuccessExitStatus=2
@ -134,7 +135,7 @@ Description=VNC Server - ${X11VNC_NEW}"
SERVICE_INSTALL="[Install] SERVICE_INSTALL="[Install]
WantedBy=multi-user.target" WantedBy=multi-user.target"
fi fi
mkdir -p "${FILE_X11VNC_SERVICE%/*}" mkdir -p "${FILE_X11VNC_SERVICE%/*}"
cat << EOF > "${FILE_X11VNC_SERVICE}" cat << EOF > "${FILE_X11VNC_SERVICE}"
${SERVICE_UNIT} ${SERVICE_UNIT}
@ -159,7 +160,8 @@ EOF
rm -f /root/.vnc/.passwd rm -f /root/.vnc/.passwd
for FILE_X11VNC_SERVICE in /usr/lib/systemd/system/x11vnc-ublinux*.service; do for FILE_X11VNC_SERVICE in /usr/lib/systemd/system/x11vnc-ublinux*.service; do
if [[ -e ${FILE_X11VNC_SERVICE} ]]; then if [[ -e ${FILE_X11VNC_SERVICE} ]]; then
systemctl --quiet disable --now ${FILE_X11VNC_SERVICE##*/} &>/dev/null systemctl --quiet disable ${FILE_X11VNC_SERVICE##*/} &>/dev/null
systemctl --quiet stop ${FILE_X11VNC_SERVICE##*/} &>/dev/null
rm -f ${FILE_X11VNC_SERVICE} rm -f ${FILE_X11VNC_SERVICE}
DAEMON_RELOAD=yes DAEMON_RELOAD=yes
fi fi

@ -284,7 +284,7 @@ insert_background_icon(){
xres=$(cmdline_value xres) && [[ -n ${xres} ]] && RESOLUTION=${xres} xres=$(cmdline_value xres) && [[ -n ${xres} ]] && RESOLUTION=${xres}
# Определение разрешения экрана # Определение разрешения экрана
[[ -n $1 ]] && [[ $1 =~ ^([[:digit:]]+'x'[[:digit:]]+)$ ]] && RESOLUTION=${BASH_REMARCH[1]} [[ -n $1 ]] && [[ $1 =~ ^([[:digit:]]+'x'[[:digit:]]+)$ ]] && RESOLUTION=${BASH_REMATCH[1]}
[[ ${RESOLUTION} == "" ]] && get_max_resolution [[ ${RESOLUTION} == "" ]] && get_max_resolution
# Если не обнаружено ни одно разрешение, то статическое из /usr/lib/ublinux/default # Если не обнаружено ни одно разрешение, то статическое из /usr/lib/ublinux/default
[[ ${RESOLUTION} == "" ]] && RESOLUTION=${BACKGROUND_RES} [[ ${RESOLUTION} == "" ]] && RESOLUTION=${BACKGROUND_RES}

@ -738,6 +738,8 @@ exec_08_user_members(){
[[ ${SELECT_EXTRAGROUPS} == @(""|"x") ]] && SELECT_EXTRAGROUPS="${USERGROUPS},${DEFAULTGROUP}" || SELECT_EXTRAGROUPS+=",${USERGROUPS},${DEFAULTGROUP}" [[ ${SELECT_EXTRAGROUPS} == @(""|"x") ]] && SELECT_EXTRAGROUPS="${USERGROUPS},${DEFAULTGROUP}" || SELECT_EXTRAGROUPS+=",${USERGROUPS},${DEFAULTGROUP}"
[[ ${SELECT_UID} == ${ADMUID} && ${ADDADM} == "yes" ]] && SELECT_EXTRAGROUPS+=",${ADMGROUPS}" [[ ${SELECT_UID} == ${ADMUID} && ${ADDADM} == "yes" ]] && SELECT_EXTRAGROUPS+=",${ADMGROUPS}"
SELECT_EXTRAGROUPS="${SELECT_EXTRAGROUPS//;/,}"; SELECT_EXTRAGROUPS="${SELECT_EXTRAGROUPS//,,/,}" SELECT_EXTRAGROUPS="${SELECT_EXTRAGROUPS//;/,}"; SELECT_EXTRAGROUPS="${SELECT_EXTRAGROUPS//,,/,}"
# Убираем дубликаты групп
SELECT_EXTRAGROUPS=$(sort -u <<< ${SELECT_EXTRAGROUPS//,/$'\n'}); SELECT_EXTRAGROUPS=${SELECT_EXTRAGROUPS//$'\n'/,}
[[ ${SELECT_EXTRAGROUPS} =~ ','$ ]] && SELECT_EXTRAGROUPS=${SELECT_EXTRAGROUPS%*,} [[ ${SELECT_EXTRAGROUPS} =~ ','$ ]] && SELECT_EXTRAGROUPS=${SELECT_EXTRAGROUPS%*,}
[[ ${SELECT_EXTRAGROUPS:0:1} == "," ]] && SELECT_EXTRAGROUPS="${SELECT_EXTRAGROUPS:1}" [[ ${SELECT_EXTRAGROUPS:0:1} == "," ]] && SELECT_EXTRAGROUPS="${SELECT_EXTRAGROUPS:1}"
# Создавать группы из параметра SELECT_EXTRAGROUPS # Создавать группы из параметра SELECT_EXTRAGROUPS
@ -749,7 +751,7 @@ exec_08_user_members(){
user_remove_group "$(printf "%s," "${!USERADD[@]}")" "%all" user_remove_group "$(printf "%s," "${!USERADD[@]}")" "%all"
# Добавить пользователей в группы # Добавить пользователей в группы
while IFS= read -ru3 SELECT_USERNAME; do while IFS= read -ru3 SELECT_USERNAME; do
useradd_local ${SELECT_USERNAME} useradd_local "${SELECT_USERNAME}"
done 3< <(printf "%s\n" "${!USERADD[@]}" | sort -V) done 3< <(printf "%s\n" "${!USERADD[@]}" | sort -V)
elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]] && [[ ${#USERADD[@]} -ne 0 ]]; then elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]] && [[ ${#USERADD[@]} -ne 0 ]]; then
if [[ ${PARAM%%=*} =~ ^'USERADD['(.*)']' ]]; then if [[ ${PARAM%%=*} =~ ^'USERADD['(.*)']' ]]; then

@ -20,6 +20,11 @@ debug_mode "$0" "$@"
SYSCONF="${ROOTFS}${SYSCONF}" SYSCONF="${ROOTFS}${SYSCONF}"
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
exec_unblock_pacman(){
# Снимаем блокировку с пакетного менеджера
rm -f ${ROOTFS}/var/lib/pacman/db.lck
}
exec_install_pkg_tar(){ exec_install_pkg_tar(){
LIST_PKG=$(find /memory/layer-base/*/install/preinit -type f -name "*.pkg.tar.*" -print 2>/dev/null) LIST_PKG=$(find /memory/layer-base/*/install/preinit -type f -name "*.pkg.tar.*" -print 2>/dev/null)
if [[ -n ${ROOTFS} && -n ${LIST_PKG} ]]; then if [[ -n ${ROOTFS} && -n ${LIST_PKG} ]]; then
@ -42,4 +47,5 @@ exec_install_pkg_tar(){
# Если файл подключен как ресурс с функциями, то выйти # Если файл подключен как ресурс с функциями, то выйти
return 0 2>/dev/null && return 0 return 0 2>/dev/null && return 0
exec_unblock_pacman
exec_install_pkg_tar $@ exec_install_pkg_tar $@

@ -1497,7 +1497,6 @@ VERSION=
## POLKIT[org.debian.pcsc-lite.access_pcsc]="yes:@users" ## POLKIT[org.debian.pcsc-lite.access_pcsc]="yes:@users"
## POLKIT[org.debian.pcsc-lite.access_card]="yes:@users" ## POLKIT[org.debian.pcsc-lite.access_card]="yes:@users"
[/etc/ublinux/kiosk] [/etc/ublinux/kiosk]
## Настройка режима киоска ## Настройка режима киоска
################################################################################ ################################################################################

Loading…
Cancel
Save