Add fix kesl.service

master v2.99
Dmitry Razumov 1 year ago
parent 522cca88d5
commit e9490837a1
Signed by: asmeron
GPG Key ID: 50BC1DB583B79706

@ -13,16 +13,15 @@ debug_log "starting rc.preinit"
debug_shell debug_shell
# install systemd services # install systemd services
[ ! -h usr/lib/systemd/system/ublinux-postinit.service ] && bash usr/lib/ublinux/rootfs-patches/ublinux/ublinux-00-install.sh [[ ! -h usr/lib/systemd/system/ublinux-postinit.service ]] && bash usr/lib/ublinux/rootfs-patches/ublinux/ublinux-00-install.sh
# We have to launch some rc scripts # We have to launch some rc scripts
for a in usr/lib/ublinux/rc.preinit/* ;do for SELECT_SCRIPT in usr/lib/ublinux/rc.preinit/* ;do
[ -x $a ] && $a 2>/dev/null [[ -x ${SELECT_SCRIPT} ]] && ${SELECT_SCRIPT} 2>/dev/null
done done
for a in usr/lib/ublinux/rc.preinit.d/* ;do for SELECT_SCRIPT in usr/lib/ublinux/rc.preinit.d/* ;do
[ -x $a ] && $a 2>/dev/null & [[ -x ${SELECT_SCRIPT} ]] && ${SELECT_SCRIPT} 2>/dev/null &
done done
wait wait
true true

@ -275,17 +275,18 @@ copy_desktop(){
FILE_DESKTOP=${FIND_SELECT_DESKTOP} FILE_DESKTOP=${FIND_SELECT_DESKTOP}
fi fi
if [[ ${FIND_SELECT_DESKTOP} == "@lock" ]]; then if [[ ${FIND_SELECT_DESKTOP} == "@lock" ]]; then
# Если система загружена в режимах песочницы без сохранённого профиля, то в AUFS не применить аттрибут immutable # Если система загружена в режимах песочницы без сохранённого профиля, то в AUFS не применить аттрибут chattr -i (immutable)
# Для этого в песочнице каталог /home перемонтируется в tmpfs
#[[ ${SYSTEMBOOT_STATEMODE} == @(sandbox|sandbox_hdd) ]] #[[ ${SYSTEMBOOT_STATEMODE} == @(sandbox|sandbox_hdd) ]]
chattr -R -i "${XDG_DESKTOP_DIR}" "${SELECT_USER_HOME}/.config/user-dirs.dirs" #2>/dev/null chattr -R -i "${XDG_DESKTOP_DIR}" "${SELECT_USER_HOME}/.config/user-dirs.dirs" 2>/dev/null
chown -R root:root "${XDG_DESKTOP_DIR}" "${SELECT_USER_HOME}/.config/user-dirs.dirs" chown -R root:root "${XDG_DESKTOP_DIR}" "${SELECT_USER_HOME}/.config/user-dirs.dirs"
chmod -R u+rwX,go-rwx "${XDG_DESKTOP_DIR}" chmod -R u+rwX,go-rwx "${XDG_DESKTOP_DIR}"
chmod -R u+rwX,go-rwx "${SELECT_USER_HOME}/.config/user-dirs.dirs" chmod -R u+rwX,go-rwx "${SELECT_USER_HOME}/.config/user-dirs.dirs"
setfacl -R -m u:${SELECT_USER}:rX "${XDG_DESKTOP_DIR}" "${SELECT_USER_HOME}/.config/user-dirs.dirs" setfacl -R -m u:${SELECT_USER}:rX "${XDG_DESKTOP_DIR}" "${SELECT_USER_HOME}/.config/user-dirs.dirs"
setfacl -R -m d:u:${SELECT_USER}:rX "${XDG_DESKTOP_DIR}" "${SELECT_USER_HOME}/.config/user-dirs.dirs" setfacl -R -m d:u:${SELECT_USER}:rX "${XDG_DESKTOP_DIR}" "${SELECT_USER_HOME}/.config/user-dirs.dirs"
chattr +i "${XDG_DESKTOP_DIR}" "${SELECT_USER_HOME}/.config/user-dirs.dirs" #2>/dev/null chattr +i "${XDG_DESKTOP_DIR}" "${SELECT_USER_HOME}/.config/user-dirs.dirs" 2>/dev/null
elif [[ ${FIND_SELECT_DESKTOP} == "@dislock" ]]; then elif [[ ${FIND_SELECT_DESKTOP} == "@dislock" ]]; then
chattr -R -i "${XDG_DESKTOP_DIR}" "${SELECT_USER_HOME}/.config/user-dirs.dirs" #2>/dev/null chattr -R -i "${XDG_DESKTOP_DIR}" "${SELECT_USER_HOME}/.config/user-dirs.dirs" 2>/dev/null
setfacl --remove-all --recursive "${XDG_DESKTOP_DIR}" "${SELECT_USER_HOME}/.config/user-dirs.dirs" setfacl --remove-all --recursive "${XDG_DESKTOP_DIR}" "${SELECT_USER_HOME}/.config/user-dirs.dirs"
setfacl --remove-all --recursive --default "${XDG_DESKTOP_DIR}" "${SELECT_USER_HOME}/.config/user-dirs.dirs" setfacl --remove-all --recursive --default "${XDG_DESKTOP_DIR}" "${SELECT_USER_HOME}/.config/user-dirs.dirs"
chmod -R u+rwX,g+rX,g-w,o+rX,o-w "${XDG_DESKTOP_DIR}" chmod -R u+rwX,g+rX,g-w,o+rX,o-w "${XDG_DESKTOP_DIR}"
@ -294,7 +295,7 @@ copy_desktop(){
elif [[ -n ${FILE_DESKTOP} ]]; then elif [[ -n ${FILE_DESKTOP} ]]; then
[[ -f "${XDG_DESKTOP_DIR}/${FILE_DESKTOP##*/}" ]] || cp -f "${FILE_DESKTOP}" "${XDG_DESKTOP_DIR}" [[ -f "${XDG_DESKTOP_DIR}/${FILE_DESKTOP##*/}" ]] || cp -f "${FILE_DESKTOP}" "${XDG_DESKTOP_DIR}"
if [[ -n ${FIND_SELECT_DESKTOP_LOCK} ]]; then if [[ -n ${FIND_SELECT_DESKTOP_LOCK} ]]; then
chattr -i "${XDG_DESKTOP_DIR}" "${XDG_DESKTOP_DIR}/${FILE_DESKTOP##*/}" "${SELECT_USER_HOME}/.config/user-dirs.dirs" #2>/dev/null chattr -i "${XDG_DESKTOP_DIR}" "${XDG_DESKTOP_DIR}/${FILE_DESKTOP##*/}" "${SELECT_USER_HOME}/.config/user-dirs.dirs" 2>/dev/null
chown root:root "${XDG_DESKTOP_DIR}/${FILE_DESKTOP##*/}" "${SELECT_USER_HOME}/.config/user-dirs.dirs" chown root:root "${XDG_DESKTOP_DIR}/${FILE_DESKTOP##*/}" "${SELECT_USER_HOME}/.config/user-dirs.dirs"
if [[ ${FILE_DESKTOP##*/} =~ .*".desktop"$ ]]; then if [[ ${FILE_DESKTOP##*/} =~ .*".desktop"$ ]]; then
chmod o-rwx,ug+rwx "${XDG_DESKTOP_DIR}/${FILE_DESKTOP##*/}" chmod o-rwx,ug+rwx "${XDG_DESKTOP_DIR}/${FILE_DESKTOP##*/}"
@ -305,9 +306,9 @@ copy_desktop(){
fi fi
chmod u+rw,u-x,go-rwx "${SELECT_USER_HOME}/.config/user-dirs.dirs" chmod u+rw,u-x,go-rwx "${SELECT_USER_HOME}/.config/user-dirs.dirs"
setfacl -m u:${SELECT_USER}:r "${SELECT_USER_HOME}/.config/user-dirs.dirs" setfacl -m u:${SELECT_USER}:r "${SELECT_USER_HOME}/.config/user-dirs.dirs"
chattr +i "${XDG_DESKTOP_DIR}/${FILE_DESKTOP##*/}" "${SELECT_USER_HOME}/.config/user-dirs.dirs" #2>/dev/null chattr +i "${XDG_DESKTOP_DIR}/${FILE_DESKTOP##*/}" "${SELECT_USER_HOME}/.config/user-dirs.dirs" 2>/dev/null
else else
chattr -i "${XDG_DESKTOP_DIR}" "${XDG_DESKTOP_DIR}/${FILE_DESKTOP##*/}" #2>/dev/null chattr -i "${XDG_DESKTOP_DIR}" "${XDG_DESKTOP_DIR}/${FILE_DESKTOP##*/}" 2>/dev/null
setfacl --remove-all --recursive "${XDG_DESKTOP_DIR}/${FILE_DESKTOP##*/}" setfacl --remove-all --recursive "${XDG_DESKTOP_DIR}/${FILE_DESKTOP##*/}"
setfacl --remove-all --recursive --default "${XDG_DESKTOP_DIR}/${FILE_DESKTOP##*/}" setfacl --remove-all --recursive --default "${XDG_DESKTOP_DIR}/${FILE_DESKTOP##*/}"
if [[ ${FILE_DESKTOP##*/} =~ .*".desktop"$ ]]; then if [[ ${FILE_DESKTOP##*/} =~ .*".desktop"$ ]]; then

@ -1,14 +0,0 @@
#!/bin/bash
ENABLED=yes
[[ ${ENABLED} == "yes" ]] || exit 0
if [ -d /var/opt/kaspersky ] ;then
if [ -d /mnt/livedata/ublinux-data ] ;then
if [ ! -d /mnt/livedata/ublinux-data/cache/kaspersky ] ;then
mkdir -p /mnt/livedata/ublinux-data/cache/kaspersky
cp -pr /var/opt/kaspersky/* /mnt/livedata/ublinux-data/cache/kaspersky || exit 1
fi
mount --bind /mnt/livedata/ublinux-data/cache/kaspersky /var/opt/kaspersky
fi
fi

@ -0,0 +1,100 @@
#!/usr/bin/env bash
#
# Initial script for UBLinux
# This script are launching before starting init from initrd script
# Current dir allways must be set to root (/)
# All system path must be relative, except initrd dirs
##
## Fix autostart Kaspersky Endpoint Security for Linux
##
ENABLED=yes
[[ ${ENABLED} == "yes" ]] || exit 0
DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { unset ROOTFS; unset CMD_CHROOT; } || { ROOTFS="/sysroot"; CMD_CHROOT="chroot ${ROOTFS} "; }
SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
debug_mode "$0" "$@"
SYSCONF="${ROOTFS}${SYSCONF}"
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/system; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
exec_kesl_timer(){
create_kesl_timer(){
[[ -e ${ROOTFS}/etc/systemd/system/${KESL_TIMER_NAME} ]] \
|| cat <<EOF > "${ROOTFS}/etc/systemd/system/${KESL_TIMER_NAME}"
# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Daily kesl on boot
[Timer]
OnBootSec=1min
OnUnitActiveSec=1d
AccuracySec=1h
RandomizedDelaySec=30s
[Install]
WantedBy=timers.target
EOF
}
remove_kesl_timer(){
[[ -e "${ROOTFS}/etc/systemd/system/${KESL_TIMER_NAME}" ]] && rm -f "${ROOTFS}/etc/systemd/system/${KESL_TIMER_NAME}" 2>/dev/null
[[ -e "${ROOTFS}/etc/systemd/system/timers.target.wants/${KESL_TIMER_NAME}" ]] && rm -f "${ROOTFS}/etc/systemd/system/timers.target.wants/${KESL_TIMER_NAME}" 2>/dev/null
}
enable_kesl_timer(){
[[ -d ${ROOTFS}/etc/systemd/system/timers.target.wants ]] || install -dm0755 "${ROOTFS}/etc/systemd/system/timers.target.wants"
[[ -e "${ROOTFS}/etc/systemd/system/timers.target.wants/${KESL_TIMER_NAME}" ]] || ln -sf "/etc/systemd/system/${KESL_TIMER_NAME}" "${ROOTFS}/etc/systemd/system/timers.target.wants/${KESL_TIMER_NAME}" 2>/dev/null
}
KESL_SERVICE_NAME="kesl.service"
KESL_TIMER_NAME="kesl.timer"
# Если Касперский не установлен, то удалить kesl.timer
[[ ! -e ${ROOTFS}/var/opt/kaspersky/kesl/install-current ]] && remove_kesl_timer && return 0
ISSYSTEMD=$(readlink -fq ${ROOTFS}/usr/bin/init | grep "lib/systemd/systemd$")
[[ -n ${ISSYSTEMD} ]] || return 0
# Поиск включеного сервиса kesl.service
KESL_SERVICE_FIND=$(find ${ROOTFS}/etc/systemd/system/multi-user.target.wants -iname "${KESL_SERVICE_NAME}" 2>/dev/null)
if [[ -n ${KESL_SERVICE_FIND} ]]; then
rm -f ${KESL_SERVICE_FIND} 2>/dev/null
create_kesl_timer
enable_kesl_timer
elif [[ "${SERVICES_ENABLE}" =~ (^|,)+("${KESL_SERVICE_NAME%%.*}"|"${KESL_SERVICE_NAME}"|"${KESL_TIMER_NAME}")(,|$| )+ ]]; then
# Если указан автозапуск сервиса в конфигурации, то меняем на kesl.timer
sed -E "/SERVICES_ENABLE=/s/(=|,|\")+(${KESL_SERVICE_NAME}|${KESL_SERVICE_NAME%%.*})(,|$|\")+/\1${KESL_TIMER_NAME}\3/g" -i ${SYSCONF}/system
create_kesl_timer
enable_kesl_timer
fi
}
## Копировать касперский в кеш каталог реальной файловой системы, для использования в режимах песочници
## Оценить необходимость, нужно тестировать
#exec_bind_mount(){
# return 0
# if [[ -d ${ROOTFS}/var/opt/kaspersky ]]; then
# if [[ -d ${ROOTFS}/mnt/livedata/ublinux-data]; then
# if [[ ! -d ${ROOTFS}/mnt/livedata/ublinux-data/cache/kaspersky ]]; then
# mkdir -p ${ROOTFS}/mnt/livedata/ublinux-data/cache/kaspersky
# cp -pr ${ROOTFS}/var/opt/kaspersky/* ${ROOTFS}/mnt/livedata/ublinux-data/cache/kaspersky || exit 1
# fi
# mount --bind ${ROOTFS}/mnt/livedata/ublinux-data/cache/kaspersky ${ROOTFS}/var/opt/kaspersky
# fi
# fi
#}
################
##### MAIN #####
################
exec_kesl_timer $@

@ -1422,7 +1422,8 @@ VERSION=
## [*] # Все пользователи системы. Если не указано, то все пользователи системы ## [*] # Все пользователи системы. Если не указано, то все пользователи системы
## =<desktop_file_n> # Файлы *.desktop. Разделитель: запятая(,) или точка с запятой(;). Указывается без суфикса ".desktop" ## =<desktop_file_n> # Файлы *.desktop. Разделитель: запятая(,) или точка с запятой(;). Указывается без суфикса ".desktop"
## =<desktop_file_n>@lock # Файл *.desktop с установленным владельцем:группой root:root и ACL правами только чтения ## =<desktop_file_n>@lock # Файл *.desktop с установленным владельцем:группой root:root и ACL правами только чтения
## =@lock # Установить владельца:группу root:root и права ACL только чтения на каталог "Рабочего стола" рекурсивно ## =@lock # Установить владельца:группу root:root, права ACL только чтения на каталог "Рабочего стола" рекурсивно и immutable
## # В полной песочнице применяется только при загрузке системы
## =@dislock # Установить владельца:группу домашний_пользователь:домашний_пользователь и очистить ACL права на каталог "Рабочего стола" рекурсивно ## =@dislock # Установить владельца:группу домашний_пользователь:домашний_пользователь и очистить ACL права на каталог "Рабочего стола" рекурсивно
## APPDESKTOP_PLACEONDESKTOP_INIT[superadmin,@wheel]=ubinstall,htop@lock ## APPDESKTOP_PLACEONDESKTOP_INIT[superadmin,@wheel]=ubinstall,htop@lock
## APPDESKTOP_PLACEONDESKTOP_INIT=gimp,pinta ## APPDESKTOP_PLACEONDESKTOP_INIT=gimp,pinta
@ -1435,7 +1436,8 @@ VERSION=
## [*] # Все пользователи системы. Если не указано, то все пользователи системы ## [*] # Все пользователи системы. Если не указано, то все пользователи системы
## =<desktop_file_n> # Файлы *.desktop. Разделитель: запятая(,) или точка с запятой(;). Указывается без суфикса ".desktop" ## =<desktop_file_n> # Файлы *.desktop. Разделитель: запятая(,) или точка с запятой(;). Указывается без суфикса ".desktop"
## =<desktop_file_n>@lock # Файл *.desktop с установленным владельцем:группой root:root и ACL правами только чтения ## =<desktop_file_n>@lock # Файл *.desktop с установленным владельцем:группой root:root и ACL правами только чтения
## =@lock # Установить владельца:группу root:root и права ACL только чтения на каталог рабочего стола рекурсивно ## =@lock # Установить владельца:группу root:root и права ACL только чтения на каталог рабочего стола рекурсивно и immutable
## # В полной песочнице применяется только при загрузке системы
## =@dislock # Установить владельца:группу домашний_пользователь:домашний_пользователь и очистить ACL права на каталог рабочего стола рекурсивно ## =@dislock # Установить владельца:группу домашний_пользователь:домашний_пользователь и очистить ACL права на каталог рабочего стола рекурсивно
## APPDESKTOP_PLACEONDESKTOP[superadmin,@wheel]=ubinstall,htop ## APPDESKTOP_PLACEONDESKTOP[superadmin,@wheel]=ubinstall,htop
## APPDESKTOP_PLACEONDESKTOP[user-1]=htop@lock ## APPDESKTOP_PLACEONDESKTOP[user-1]=htop@lock

Loading…
Cancel
Save