Fix ACCESS_DENIED_EXEC

master
Dmitry Razumov 2 years ago
parent b455bc0651
commit 484b0c9bff
Signed by: asmeron
GPG Key ID: 50BC1DB583B79706

@ -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 $@

@ -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 $@

@ -61,12 +61,13 @@ NEEDEDUSERS='superadmin:1000:x:Администратор'
## Пользователи системы ## Пользователи системы
## ADDUSER[user_name:uid:comment:user_group:extra_groups:optional]=password_hash|x ## ADDUSER[user_name:uid:comment:user_group:extra_groups:optional]=password_hash|x
## user_name # Имя пользователя ## user_name # Имя пользователя, обязательное поле
## uid # UID пользователя, если необходимо автоматически рассчитывать, то оставить пустым или 'x' ## uid # UID пользователя, если необходимо автоматически рассчитывать, то оставить пустым или 'x'
## comment # Поле GECOS, с подробным описанием пользователя, можно локализованное ## comment # Поле GECOS, с подробным описанием пользователя, можно локализованное, не обязательное
## user_group # Основная группа пользователя, если выбрано пусто или 'x', то 'user_group=user_name' ## user_group # Основная группа пользователя, если выбрано пусто или 'x', то 'user_group=user_name'
## extra_groups # Дополнительные группы пользователя, если группа не существует, то будет создана. Перечисление через зяпятую. Если группа отсутствует, то будет создана новая. ## extra_groups # Дополнительные группы пользователя, если группа не существует, то будет создана. Перечисление через зяпятую. Если группа отсутствует, то будет создана новая.
## optional # Дополнительные параметры, например: '--shell /usr/bin/bash --create-home --no-create-home --no-user-group --non-unique' ## optional # Дополнительные параметры, например: '--shell /usr/bin/bash --create-home --no-create-home --no-user-group --non-unique'
## --home-dir <ДОМ_КАТ> # Домашний каталог новой учётной записи
## -s, --shell /usr/bin/bash # Регистрационная оболочка новой учётной записи ## -s, --shell /usr/bin/bash # Регистрационная оболочка новой учётной записи
## -r, --system # Создавать системную группу ## -r, --system # Создавать системную группу
## -M, --no-create-home # Не создавать домашний каталог пользователя ## -M, --no-create-home # Не создавать домашний каталог пользователя
@ -77,6 +78,7 @@ NEEDEDUSERS='superadmin:1000:x:Администратор'
## -f, --inactive <НЕАКТИВНОСТЬ> # Период неактивности пароля новой учётной записи ## -f, --inactive <НЕАКТИВНОСТЬ> # Период неактивности пароля новой учётной записи
## password_hash|x # Хеш пароля пользователя, если выбрано 'x', то 'password_hash=DEFAULTPASSWD' ## password_hash|x # Хеш пароля пользователя, если выбрано 'x', то 'password_hash=DEFAULTPASSWD'
## ADDUSER[superadmin:1000:Администратор]=x ## 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' ## 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 configuration
## Настройка сетевого интерфейса ## Настройка сетевого интерфейса
## NETWORK[all|any|name_connection|name_device|name_uuid|type_connection]="optional_1 optional_2 optional_n" ## NETWORK[all|any|name_connection|name_device|name_uuid|type_connection]="optional_1 optional_2 optional_n"
## all|any - All device and connection ## all|any # All device and connection
## name_device: enp3s0, ens192, wlan0 ## name_device # enp3s0, ens192, wlan0
## or name_connection: Проводное соединение 1, WIFI_WORK ## or name_connection # Проводное соединение 1, WIFI_WORK
## or name_uuid: 6c90739a-5b5f-3b4a-9b42-11aa89c419bc ## or name_uuid # 6c90739a-5b5f-3b4a-9b42-11aa89c419bc
## or type_connection: 802-3-ethernet, 802-11-wireless ## or type_connection # 802-3-ethernet, 802-11-wireless
## optional: ## optional:
## ipv4.ignore-auto-dns yes ## ipv4.ignore-auto-dns yes
## ipv4.method manual ## 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[/usr/bin]=vmware-user-suid-wrapper,x2goprint,at,locate,mount.cifs,mount.ecryptfs_private,unix_chkpwd,wall,write
## ACCESS_ALLOWED_SGID[/home]=- ## ACCESS_ALLOWED_SGID[/home]=-
## Ограничить запуск интерпретаторов языков программирования в интерактивном режиме ## Ограничить запуск исполняемых файлов и интерпретаторов языков программирования в интерактивном режиме
## ACCESS_DENIED_INTERPRETER[<find_path_1> <find_path_n> <options>]=<file_1>,<file_2>,<file_n> ## ACCESS_DENIED_EXEC[<find_path_1> <find_path_n> <options>]=<file_1>,<file_2>,<file_n>
## Find path: ## Find path: # Пути поиска указанных файлов, можно использовать разделитель: пробел, запятая, двоеточие
## empty # Если пусто и не задан [], то будут выбраны пути поиска ="/usr/bin /usr/local/bin /usr/local/sbin /home" ## <empty> # Если пусто и не задан [], то будут выбраны пути поиска ="/usr/bin /usr/local/bin /usr/local/sbin /home"
## /path_n/subpath # Путь до каталога поиска ## <find_path_n> # Путь до каталога поиска /path/subpath,/path/*/subpath. Если в имени пути используется пробел, то необходимо путь обрамить \"
## Options: ## Options: # Опции применяются ко все указанным каталогам и должны быть самые последние в списке
## -maxdepth 1 # Путь до каталога поиска с уровнем вложения 1 ## -maxdepth 1 # Путь до каталога поиска с уровнем вложения 1
## Files: ## Files: # Имена файлов, можно использовать разделитель: пробел, запятая, двоеточие
## files # Имена файлов разделённые: , или пробелом или ; ## <files_n> # Имена файлов разделённые: , или пробелом или ;
## all # Эквивалентно =gbr3,python,python2,python3,perl,perl6,php,ruby,node,awk,gawk ## interpreter # Эквивалентно =gbr3,python,python2,python3,perl,perl6,php,ruby,node,awk,gawk
## ACCESS_DENIED_INTERPRETER=all ## ACCESS_DENIED_EXEC=interpreter
## ACCESS_DENIED_INTERPRETER[/usr/bin]=gbr3,python,python2,python3,perl,perl6,php,ruby,node,awk,gawk ## 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 на смонтированные цели ## Отключить пользовательские nosuid nodev noexec на смонтированные цели
## MOUNT_ATTR[<source_1>,<source_n>]=<attribut_1>,<attribut_n> ## MOUNT_ATTR[<source_1>,<source_n>]=<attribut_1>,<attribut_n>
@ -848,6 +852,7 @@ NSSWITCHWINBIND=yes
#XFCE4_XFCONF[%users:xfce4-session:/shutdown/ShowHybridSleep]=bool:false #XFCE4_XFCONF[%users:xfce4-session:/shutdown/ShowHybridSleep]=bool:false
#XFCE4_XFCONF[%users:xfce4-session:/shutdown/ShowSwitchUser]=bool:false #XFCE4_XFCONF[%users:xfce4-session:/shutdown/ShowSwitchUser]=bool:false
#XFCE4_XFCONF[%users:xfce4-session:/general/ShowSave]=bool:false #XFCE4_XFCONF[%users:xfce4-session:/general/ShowSave]=bool:false
#XFCE4_XFCONF[%users:xfce4-screensaver:/saver/idle-activation/delay]=int:10
## Скрыть кнопку LOGOUT в XFCE4 диалог выключения питания ## Скрыть кнопку LOGOUT в XFCE4 диалог выключения питания
## XFCE4_DIALOGPOWER_LOGOUT[$users,%$groups]=$value ## XFCE4_DIALOGPOWER_LOGOUT[$users,%$groups]=$value
@ -1127,7 +1132,7 @@ NSSWITCHWINBIND=yes
#MAC_ADDRESS_RANDOMIZATION=default #MAC_ADDRESS_RANDOMIZATION=default
# Название точки доступа # Название точки доступа
#ESSID="My WIFI" #ESSID="My WIFI"
# Если точка бесплатная (аэропорт или кафе) - закоментарьте ключ, секция с паролем тогда не нужна # Если точка бесплатная (аэропорт или кафе) - закомментировать ключ, секция с паролем тогда не нужна
#KEY_MGMT=WPA-PSK #KEY_MGMT=WPA-PSK
[/etc/ublinux/network-scripts/keys-Default_WIFI] [/etc/ublinux/network-scripts/keys-Default_WIFI]

Loading…
Cancel
Save