From 484b0c9bffb36a533ff39240e3514224b30c9aa7 Mon Sep 17 00:00:00 2001 From: asmeron Date: Thu, 9 Nov 2023 16:44:50 +0600 Subject: [PATCH] Fix ACCESS_DENIED_EXEC --- ublinux/rc.post.d/43-access-exec | 34 +++++++++++++++++++ ublinux/rc.post.d/43-access-interpreter | 33 ------------------- ublinux/templates/ublinux-data.ini | 43 ++++++++++++++----------- 3 files changed, 58 insertions(+), 52 deletions(-) create mode 100755 ublinux/rc.post.d/43-access-exec delete mode 100755 ublinux/rc.post.d/43-access-interpreter diff --git a/ublinux/rc.post.d/43-access-exec b/ublinux/rc.post.d/43-access-exec new file mode 100755 index 0000000..277ab40 --- /dev/null +++ b/ublinux/rc.post.d/43-access-exec @@ -0,0 +1,34 @@ +#!/bin/bash + +ENABLED=yes +[ "$ENABLED" != "yes" ] && exit 0 +DEBUGMODE=no + +unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=. +SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 +SOURCE=${ROOTFS}/usr/lib/ublinux/os-config; [[ -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}/security; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null + +exec_access_denied_exec(){ +## Ограничить запуск интерпретаторов языков программирования в интерактивном режиме + if [[ -n ${ACCESS_DENIED_EXEC[@]} ]]; then + for PATH_WORK_EXEC in "${!ACCESS_DENIED_EXEC[@]}"; do + [[ ${ACCESS_DENIED_EXEC[${PATH_WORK_EXEC}],,} == "interpreter" ]] && ACCESS_DENIED_EXEC[${PATH_WORK_EXEC}]="gbr3,python,python2,python3,perl,perl6,php,ruby,node,awk,gawk" + DENIED_EXEC=$(tr [[:space:]],\; $'\n' <<< ${ACCESS_DENIED_EXEC[${PATH_WORK_EXEC}]}) + [[ ${PATH_WORK_EXEC} == 0 ]] && PATH_WORK_EXEC="${ROOTFS}/usr/bin ${ROOTFS}/usr/local/bin ${ROOTFS}/usr/local/sbin ${ROOTFS}/home" + LIST_EXEC=$(printf " -name %s -o" ${DENIED_EXEC}) + PATH_WORK_EXEC=$(tr ,\; ' ' <<< ${PATH_WORK_EXEC}) + eval "find -L ${PATH_WORK_EXEC} -type f -perm /o=x \( ${LIST_EXEC%-o*} \) -exec chmod --quiet o-x {} +" + done + fi +} + +################ +##### MAIN ##### +################ + + exec_access_denied_exec $@ \ No newline at end of file diff --git a/ublinux/rc.post.d/43-access-interpreter b/ublinux/rc.post.d/43-access-interpreter deleted file mode 100755 index 5860c8f..0000000 --- a/ublinux/rc.post.d/43-access-interpreter +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash - -ENABLED=yes -[ "$ENABLED" != "yes" ] && exit 0 -DEBUGMODE=no - -unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=. -SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 -SOURCE=${ROOTFS}/usr/lib/ublinux/os-config; [[ -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}/security; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null - -exec_access_denied_interpreter(){ -## Ограничить запуск интерпретаторов языков программирования в интерактивном режиме - if [[ -n ${ACCESS_DENIED_INTERPRETER[@]} ]]; then - for PATH_WORK_INTERPRETER in "${!ACCESS_DENIED_INTERPRETER[@]}"; do - DENIED_INTERPRETER=$(tr [[:space:]],\; $'\n' <<< ${ACCESS_DENIED_INTERPRETER[${PATH_WORK_INTERPRETER}]}) - [[ ${DENIED_INTERPRETER,,} == "all" ]] && DENIED_INTERPRETER="gbr3,python,python2,python3,perl,perl6,php,ruby,node,awk,gawk" - [[ ${PATH_WORK_INTERPRETER} == 0 ]] && PATH_WORK_INTERPRETER="${ROOTFS}/usr/bin ${ROOTFS}/usr/local/bin ${ROOTFS}/usr/local/sbin ${ROOTFS}/home" - LIST_INTERPRETER=$(printf " -name %s -o" ${DENIED_INTERPRETER}) - find ${PATH_WORK_INTERPRETER} -type f -perm /g=x \( ${LIST_INTERPRETER%-o*} \) -exec chmod --quiet o-x {} + - done - fi -} - -################ -##### MAIN ##### -################ - - exec_access_denied_interpreter $@ \ No newline at end of file diff --git a/ublinux/templates/ublinux-data.ini b/ublinux/templates/ublinux-data.ini index 852823e..d975bdd 100644 --- a/ublinux/templates/ublinux-data.ini +++ b/ublinux/templates/ublinux-data.ini @@ -61,12 +61,13 @@ NEEDEDUSERS='superadmin:1000:x:Администратор' ## Пользователи системы ## ADDUSER[user_name:uid:comment:user_group:extra_groups:optional]=password_hash|x -## user_name # Имя пользователя +## user_name # Имя пользователя, обязательное поле ## uid # UID пользователя, если необходимо автоматически рассчитывать, то оставить пустым или 'x' -## comment # Поле GECOS, с подробным описанием пользователя, можно локализованное +## comment # Поле GECOS, с подробным описанием пользователя, можно локализованное, не обязательное ## user_group # Основная группа пользователя, если выбрано пусто или 'x', то 'user_group=user_name' ## extra_groups # Дополнительные группы пользователя, если группа не существует, то будет создана. Перечисление через зяпятую. Если группа отсутствует, то будет создана новая. ## optional # Дополнительные параметры, например: '--shell /usr/bin/bash --create-home --no-create-home --no-user-group --non-unique' +## --home-dir <ДОМ_КАТ> # Домашний каталог новой учётной записи ## -s, --shell /usr/bin/bash # Регистрационная оболочка новой учётной записи ## -r, --system # Создавать системную группу ## -M, --no-create-home # Не создавать домашний каталог пользователя @@ -77,6 +78,7 @@ NEEDEDUSERS='superadmin:1000:x:Администратор' ## -f, --inactive <НЕАКТИВНОСТЬ> # Период неактивности пароля новой учётной записи ## password_hash|x # Хеш пароля пользователя, если выбрано 'x', то 'password_hash=DEFAULTPASSWD' ## ADDUSER[superadmin:1000:Администратор]=x +## ADDUSER[user-1]=x ## ADDUSER[user-1:x:Пользователь-1:x:vboxusers,libvirt:-s /usr/bin/bash -o]='$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60' ## Группы системы @@ -499,11 +501,11 @@ GRUB_BOOT_SILENT="splash" ## Network configuration ## Настройка сетевого интерфейса ## NETWORK[all|any|name_connection|name_device|name_uuid|type_connection]="optional_1 optional_2 optional_n" -## all|any - All device and connection -## name_device: enp3s0, ens192, wlan0 -## or name_connection: Проводное соединение 1, WIFI_WORK -## or name_uuid: 6c90739a-5b5f-3b4a-9b42-11aa89c419bc -## or type_connection: 802-3-ethernet, 802-11-wireless +## all|any # All device and connection +## name_device # enp3s0, ens192, wlan0 +## or name_connection # Проводное соединение 1, WIFI_WORK +## or name_uuid # 6c90739a-5b5f-3b4a-9b42-11aa89c419bc +## or type_connection # 802-3-ethernet, 802-11-wireless ## optional: ## ipv4.ignore-auto-dns yes ## ipv4.method manual @@ -671,18 +673,20 @@ NSSWITCHWINBIND=yes ## ACCESS_ALLOWED_SGID[/usr/bin]=vmware-user-suid-wrapper,x2goprint,at,locate,mount.cifs,mount.ecryptfs_private,unix_chkpwd,wall,write ## ACCESS_ALLOWED_SGID[/home]=- -## Ограничить запуск интерпретаторов языков программирования в интерактивном режиме -## ACCESS_DENIED_INTERPRETER[ ]=,, -## Find path: -## empty # Если пусто и не задан [], то будут выбраны пути поиска ="/usr/bin /usr/local/bin /usr/local/sbin /home" -## /path_n/subpath # Путь до каталога поиска -## Options: +## Ограничить запуск исполняемых файлов и интерпретаторов языков программирования в интерактивном режиме +## ACCESS_DENIED_EXEC[ ]=,, +## Find path: # Пути поиска указанных файлов, можно использовать разделитель: пробел, запятая, двоеточие +## # Если пусто и не задан [], то будут выбраны пути поиска ="/usr/bin /usr/local/bin /usr/local/sbin /home" +## # Путь до каталога поиска /path/subpath,/path/*/subpath. Если в имени пути используется пробел, то необходимо путь обрамить \" +## Options: # Опции применяются ко все указанным каталогам и должны быть самые последние в списке ## -maxdepth 1 # Путь до каталога поиска с уровнем вложения 1 -## Files: -## files # Имена файлов разделённые: , или пробелом или ; -## all # Эквивалентно =gbr3,python,python2,python3,perl,perl6,php,ruby,node,awk,gawk -## ACCESS_DENIED_INTERPRETER=all -## ACCESS_DENIED_INTERPRETER[/usr/bin]=gbr3,python,python2,python3,perl,perl6,php,ruby,node,awk,gawk +## Files: # Имена файлов, можно использовать разделитель: пробел, запятая, двоеточие +## # Имена файлов разделённые: , или пробелом или ; +## interpreter # Эквивалентно =gbr3,python,python2,python3,perl,perl6,php,ruby,node,awk,gawk +## ACCESS_DENIED_EXEC=interpreter +## ACCESS_DENIED_EXEC[/usr/bin,usr/bin/local]=gbr3,python,python2,python3,perl,perl6,php,ruby,node,awk,gawk +## ACCESS_DENIED_EXEC[/home/*/local/bin]=myfile +## ACCESS_DENIED_EXEC[\"/home/superadmin/soft my\"]=myfile ## Отключить пользовательские nosuid nodev noexec на смонтированные цели ## MOUNT_ATTR[,]=, @@ -848,6 +852,7 @@ NSSWITCHWINBIND=yes #XFCE4_XFCONF[%users:xfce4-session:/shutdown/ShowHybridSleep]=bool:false #XFCE4_XFCONF[%users:xfce4-session:/shutdown/ShowSwitchUser]=bool:false #XFCE4_XFCONF[%users:xfce4-session:/general/ShowSave]=bool:false +#XFCE4_XFCONF[%users:xfce4-screensaver:/saver/idle-activation/delay]=int:10 ## Скрыть кнопку LOGOUT в XFCE4 диалог выключения питания ## XFCE4_DIALOGPOWER_LOGOUT[$users,%$groups]=$value @@ -1127,7 +1132,7 @@ NSSWITCHWINBIND=yes #MAC_ADDRESS_RANDOMIZATION=default # Название точки доступа #ESSID="My WIFI" -# Если точка бесплатная (аэропорт или кафе) - закоментарьте ключ, секция с паролем тогда не нужна +# Если точка бесплатная (аэропорт или кафе) - закомментировать ключ, секция с паролем тогда не нужна #KEY_MGMT=WPA-PSK [/etc/ublinux/network-scripts/keys-Default_WIFI]