Add function ENVIRONMANT

master
Dmitry Razumov 2 years ago
parent 5d95f3d2a1
commit 5797ae34b3
Signed by: asmeron
GPG Key ID: 50BC1DB583B79706

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Initial script for Live operating system
# This script are launching before starting init from linux-live script.
@ -9,16 +9,16 @@ ENABLED=yes
[[ ${ENABLED} == "yes" ]] || exit 0
DEBUGMODE=no
SELF_NAME="10-system"
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
[[ -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/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}/system; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/clock; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
exec_linklivedata(){
@ -85,15 +85,65 @@ exec_statemode(){
#echo "SYSTEMBOOT_STATEMODE=sandbox_hdd_home" >> ${SYSCONF}/config
fi
}
exec_enviroment(){
## Установить переменные окружения глобальные и пользовательские
## ENVIROMENT[system:<var>]=<value>
## ENVIROMENT[profile:<var>]=<value>
## ENVIROMENT[<user>:<var>]=<value>
## system:<--># Установить глобальные переменные окружения systemd в /run/environment.d/99-ubconfig.conf
## profile:<-># Установить переменные окружения только для оболочек входа совместимые Bourne shell в /etc/profile.d/99-ubconfig.conf
## <user>:<--># Имя пользователя для которого будет установлена переменная окружения systemd в домашнем каталоге пользователя ~/.config/environment.d/99-ubconfig.conf
## <var><----># Имя переменной
## <value><--># Значение переменной <var>
FILE_SYSTEMD_ENV="/etc/environment.d/ubconfig-etc-10-system.conf"
FILE_PROFILE_SH_ENV="/etc/profile.d/ubconfig-10-system.sh"
FILE_PROFILE_CSH_ENV="/etc/profile.d/ubconfig-10-system.csh"
FILE_SYSTEMD_USER_ENV=".config/environment.d/ubconfig-user-10-system.conf"
[[ -f ${ROOTFS}/${FILE_SYSTEM_ENV} ]] && rm -f ${ROOTFS}/${FILE_SYSTEM_ENV} 2>/dev/null
[[ -f ${ROOTFS}/${FILE_PROFILE_SH_ENV} ]] && rm -f ${ROOTFS}/${FILE_PROFILE_SH_ENV} 2>/dev/null
[[ -f ${ROOTFS}/${FILE_PROFILE_CSH_ENV} ]] && rm -f ${ROOTFS}/${FILE_PROFILE_CSH_ENV} 2>/dev/null
rm -f ${ROOTFS}/home/*/${FILE_SYSTEMD_USER_ENV} 2>/dev/null
if [[ -n ${ENVIROMENT[@]} ]]; then
for SELECT in "${!ENVIROMENT[@]}"; do
IFS=: read -r TYPE VARIABLE OTHER <<< ${SELECT}
VALUE=${ENVIROMENT[${SELECT}]}
if [[ ${TYPE} == "system" ]]; then
[[ -f ${ROOTFS}/${FILE_SYSTEMD_ENV} ]] || { [[ -d ${ROOTFS}/${FILE_SYSTEMD_ENV%/*} ]] || install -dm0755 ${ROOTFS}/${FILE_SYSTEMD_ENV%/*}; }
echo "${VARIABLE}=\"${VALUE}\"" >> ${ROOTFS}/${FILE_SYSTEMD_ENV}
elif [[ ${TYPE} == "profile" ]]; then
[[ -f ${ROOTFS}/${FILE_PROFILE_SH_ENV} ]] || { [[ -d ${ROOTFS}/${FILE_PROFILE_SH_ENV%/*} ]] || install -dm0755 ${ROOTFS}/${FILE_PROFILE_SH_ENV%/*}; }
[[ -f ${ROOTFS}/${FILE_PROFILE_CSH_ENV} ]] || { [[ -d ${ROOTFS}/${FILE_PROFILE_CSH_ENV%/*} ]] || install -dm0755 ${ROOTFS}/${FILE_PROFILE_CSH_ENV%/*}; }
echo "export ${VARIABLE}=\"${VALUE}\"" >> ${ROOTFS}/${FILE_PROFILE_SH_ENV}
echo "setenv ${VARIABLE} \"${VALUE}\"" >> ${ROOTFS}/${FILE_PROFILE_CSH_ENV}
else
if [[ -d ${ROOTFS}/home/${TYPE} ]]; then
if [[ ! -f ${ROOTFS}/home/${TYPE}/${FILE_SYSTEMD_USER_ENV} ]]; then
local -a GET_STATS_USER=($(stat -c '%u %g' ${ROOTFS}/home/${TYPE} 2>/dev/null))
[[ ! -d ${ROOTFS}/home/${TYPE}/${FILE_SYSTEMD_USER_ENV%/*} ]] && [[ -n ${GET_STATS_USER[@]} ]] && install -dm700 -o ${GET_STATS_USER[0]} -g ${GET_STATS_USER[1]} ${ROOTFS}/home/${TYPE}/${FILE_SYSTEMD_USER_ENV%/*}
touch ${ROOTFS}/home/${TYPE}/${FILE_SYSTEMD_USER_ENV}
chmod 600 ${ROOTFS}/home/${TYPE}/${FILE_SYSTEMD_USER_ENV}
chown ${GET_STATS_USER[0]}:${GET_STATS_USER[1]} ${ROOTFS}/home/${TYPE}/${FILE_SYSTEMD_USER_ENV}
fi
echo "${VARIABLE}=\"${VALUE}\"" >> ${ROOTFS}/home/${TYPE}/${FILE_SYSTEMD_USER_ENV}
fi
fi
done
fi
}
################
##### MAIN #####
################
if [[ ${0##*/} == ${SELF_NAME} && -z $@ ]]; then
# Если файл подключен как ресурс с функциями, то выйти
return 0 2>/dev/null && return 0
if [[ -z $@ ]]; then
while read -r FUNCTION; do
$"${FUNCTION##* }"
done < <(declare -F | grep "declare -f exec_")
elif [[ ${0##*/} == ${SELF_NAME} ]]; then
for FUNCTION in $@; do
${FUNCTION}
done
else
true
while [[ $# -gt 0 ]]; do
declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" && shift || { FUNCTION+=" ${1}" && shift; }
done
eval ${FUNCTION#*; }
fi

@ -11,7 +11,7 @@ DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
[[ -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/os-config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
debug_mode "$0" "$@"
@ -47,14 +47,13 @@ exec_access_denied_login(){
##### MAIN #####
################
# Если файл подключен как ресурс с функциями, то выйти
return 0 2>/dev/null && return 0
if [[ -z $@ ]]; then
while read -r FUNCTION; do
$"${FUNCTION##* }"
done < <(declare -F | grep "declare -f exec_")
else
# for FUNCTION in $@; do
# declare -f ${FUNCTION} &>/dev/null && ${FUNCTION}
# done
else
while [[ $# -gt 0 ]]; do
declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" && shift || { FUNCTION+=" ${1}" && shift; }
done

@ -26,8 +26,8 @@
# -expression # remove all string with expression (see info sed). symbols .* matches all strings in file.
# -выражение # удаляет строки соответствующие выражению (см info sed). Если указать .* то будут удалены все строки.
################################################################################
[/etc/ublinux/config]
################################################################################
## Config verison
## Версия конфигурации
VERSION=
@ -191,18 +191,21 @@ DEPMOD=yes
## Алгоритм сжатия, используемый для сохранения измененний в модуль
#MKSQFS_FASTALG="-b 512K -comp lz4 -Xhc"
################################################################################
## Базовые настройка системы
[/etc/ublinux/system]
## Базовые настройка системы
################################################################################
## Установить переменные окружения глобальные и пользовательские
## ENVIROMENT[system:<var>]=<value>
## ENVIROMENT[profile:<var>]=<value>
## ENVIROMENT[<user>:<var>]=<value>
## system: # Установить глобальные переменные окружения systemd в /run/environment.d/99-ubconfig.conf
## profile: # Установить переменные окружения только для оболочек входа совместимые Bourne shell в /etc/profile.d/99-ubconfig.conf
## <user>: # Имя пользователя для которого будет установлена переменная окружения systemd в домашнем каталоге пользователя ~/.config/environment.d/99-ubconfig.conf
## system: # Установить глобальные переменные окружения systemd в /etc/environment.d/ubconfig-etc-10-system.conf
## profile: # Установить переменные окружения только для оболочек входа совместимые Bourne shell в /etc/profile.d/ubconfig-10-system.sh /etc/profile.d/ubconfig-10-system.csh
## <user>: # Имя пользователя для которого будет установлена переменная окружения systemd в домашнем каталоге пользователя ~/.config/environment.d/ubconfig-user-10-system.conf
## <var> # Имя переменной
## <value> # Значение переменной <var>
#ENVIROMENT[system:VAR_SYS]="my value for system"
#ENVIROMENT[profile:VAR_PROFILE]="my value for all users"
#ENVIROMENT[superadmin:VAR_USER]="my value for select user"
## Профиль конфигурации PAM авторизации, authselect. Профили /usr/share/authselect/default
## AUTHPAM[<profile>]=<feature>|disable|no|off
@ -222,9 +225,9 @@ DEPMOD=yes
#AUTHPAM[sssd]=with-faillock,with-time,with-systemd-homed,with-mkhomedir-simple
#AUTHPAM=disable
################################################################################
## Настройка аудита и логгирования
[/etc/ublinux/logging]
## Настройка аудита и логгирования
################################################################################
## Настройка мониторинга и сбора системных событий и записи их в журналы для аудита
## AUDITD=disable|no|none|off # Отключить все созданные правила из конфигурации
## AUDITD[<id_name>]=<rule>
@ -312,9 +315,9 @@ DEPMOD=yes
## maillast # Отсылать последнюю ротированную копию
#LOGROTATE[/var/log/samba/samba-smbd.log]="rotate 4,weekly,missingok,nocopytruncate,nocreate,nodelaycompress,nomail,notifempty,noolddir,compress"
################################################################################
## Настройка загрузчика GRUB
[/etc/ublinux/boot]
## Настройка загрузчика GRUB
################################################################################
## Время отображения меню GRUB для выбора варианта загрузки
## GRUB_TIMEOUT=<seconds>
## GRUB_TIMEOUT=3
@ -359,9 +362,9 @@ GRUB_BOOT_SILENT="splash"
## ipv6.disable=1 # Отключить глобально ipv6
## GRUB_CMDLINE_LINUX="modprobe.blacklist=nouveau"
################################################################################
## Настройка сервера
[/etc/ublinux/server]
## Настройка сервера
################################################################################
## Задать путь хранилища контейнеров containers/podman/docker
## STORAGE_CONTAINERS_PATH=<путь>|y|yes|enable
## <путь> # Путь до каталога хранилища контейнеров
@ -388,9 +391,9 @@ GRUB_BOOT_SILENT="splash"
#SERVER_DOMAIN[type]=samba
#SERVER_DOMAIN[admin]=administrator:0J3QvtCy0YvQuV/QlNC10L3RjCEK
################################################################################
## Настройка сохранений
[/etc/ublinux/save]
## Настройка сохранений
################################################################################
## Сохранять кэши при перезагрузке/выключении, ускоряет загрузку системы
## SAVE_ALL_CACHE=rootcopy
@ -412,10 +415,9 @@ GRUB_BOOT_SILENT="splash"
#SAVE_MODULE_INCLUDE="/etc/pacman.d/gnupg,/etc/NetworkManager/system-connections"
#SAVE_MODULE_EXCLUDE="/etc/ublinux"
################################################################################
## Настройка сети
[/etc/ublinux/network]
## Настройка сети
################################################################################
## Domain configuration
## Подключение к AD серверу
#DOMAIN=ublinux.ru
@ -568,9 +570,9 @@ NSSWITCHWINBIND=yes
## Можно назначить конкретный адрес для интерфейса
#MACCHANGEROPTIONS='--mac=XX:XX:XX:XX:XX:XX'
################################################################################
## Настройка безопасности, ограничений
[/etc/ublinux/security]
## Настройка безопасности, ограничений
################################################################################
## Включить поддержку OpenSSL алгоритмов ГОСТ GOST2012-GOST8912-GOST8912 GOST2001-GOST89-GOST89
## OPENSSL_ENGINE=gost
@ -583,8 +585,8 @@ NSSWITCHWINBIND=yes
## Первыми обрабатываются правила ACCESS_ALLOWED_LOGIN, после правила ACCESS_DENIED_LOGIN
## ACCESS_ALLOWED_LOGIN=rule_1,rule_2,rule_n
## Формат правила: users/groups:origins
## users/groups список пользователей или групп пользователей или ключевое слово ALL
## origins список TTY (для локального доступа), имен хостов, доменных имен, IP-адресов, ключевое слово ALL или LOCAL
## users/groups- список пользователей или групп пользователей или ключевое слово ALL
## origins- список TTY (для локального доступа), имен хостов, доменных имен, IP-адресов, ключевое слово ALL или LOCAL
## root:cron crond :0 tty1 tty2 tty3 tty4 tty5 tty6 vc/1 # Пользователю root разрешен доступ через cron, X11 терминал :0, tty1, ..., tty6, vc/1
## (wheel):console tty1 tty2 tty3 tty4 tty5 tty6 tty7 pts/0 pts/1 pts/2 pts/3 pts/4 pts/5 pts/6 pts/7 pts/8 pts/9 hvc0 hvc1 hvc2 hvc3 hvc4 hvc5 hvc6 hvc7 hvc8 hvc9 ttyS0 ttyS1 ttyS2 ttyS3 ttyS4 ttyS5 ttyS6 ttyS7 ttyS8 ttyS9
## root:192.168.1.1 192.168.1.4 192.168.2. 192.168.3.0/24 # Пользователю root разрешен доступ с хостов, которым принадлежат адреса IPv4
@ -784,9 +786,9 @@ NSSWITCHWINBIND=yes
## POLKIT[ru.ublinux.pkexec.ubl-settings-datetime.exec]=yes:users
## POLKIT[org.manjaro.pamac.]=yes:users
################################################################################
## Настройка режима киоска
[/etc/ublinux/kiosk]
## Настройка режима киоска
################################################################################
## Режим киоска XFCE4
## =ALL - разрешить всем | =NONE - запретить | =%whell,%users - разрешить группам | =superadmin,user-1 - разрешить пользователям | =%wheel,user-1 - разрешить пользователю и группе
#XFCE4_KIOSK[xfce4-panel:CustomizePanel]=%wheel
@ -851,8 +853,9 @@ NSSWITCHWINBIND=yes
#APPDESKTOP_BLACKLIST[user-1]=xarchiver,xfce4-power-manager-settings
#APPDESKTOP_WHITELIST[user-1]=
################################################################################
[/etc/ublinux/desktop]
## Настройка сервисов окружения рабочего стола
################################################################################
## User for X autostarting
## Пользователь для автовхода, AUTOLOGINUSER=, значения:
## =user_name # Включает автовход указанного пользователя
@ -915,8 +918,9 @@ NSSWITCHWINBIND=yes
## Отключить автоматическое создание X11VNC для всех дисплеев
## X11VNC[display]=disable || X11VNC[nodisplay]=1 || X11VNC[disable]=1
################################################################################
[/etc/ublinux/video]
## Настройка видеоподсистемы
################################################################################
## Загрузить подходящий видеодрайвер, вначале пытаемся запустить проприетарный, после свободный.
## Модули видеодрайверов с нужной версией должны быть подключены. По умолчанию отключено (no).
## VGADRV_AUTO=yes|*no
@ -966,8 +970,9 @@ NSSWITCHWINBIND=yes
## встроенная (intel), отключите параметр INTEGRATEDVGA чтобы использовать AMD/ATI
#INTEGRATEDVGA=no
################################################################################
[/etc/ublinux/theme]
## Настройка тем
################################################################################
# Доступные темы: ublinux(по умолчанию) ublinux-green ublinux-dark
#THEME=ublinux
@ -1005,8 +1010,8 @@ NSSWITCHWINBIND=yes
## GRAFFITI=*yes|no
#GRAFFITI=no
################################################################################
[/etc/ublinux/steam]
################################################################################
# Настройки для Steam. Для вынесения данных из профиля используйте 2 переменные
# Настройки клиента ~/.steam. Места занимает немного, переносить имеет смысл только при работе в чистом режиме
# Не назначайте переменную STEAMCONF если стим ещё не установлен!
@ -1014,8 +1019,8 @@ NSSWITCHWINBIND=yes
# Место для клиента и библиотеки игр. Т.к. это занимает много места, то лучше перенести из домашней папки.
#STEAMAPP=/mnt/livedata/ublinux-data/steam
################################################################################
[/etc/ublinux/clock]
################################################################################
## Синхронизировать аппаратное время, при выключении и при включении
## HWCLOCK_SYNC=*utc|localtime
## * =utc # Синхронизировать аппаратное время по UTC
@ -1038,14 +1043,14 @@ NSSWITCHWINBIND=yes
## =Asia/Magadan # Time zone for UTC+12 MSK+9
#ZONE=Europe/Moscow
################################################################################
[/etc/ublinux/locale]
################################################################################
#LOCALE="en_US.UTF-8,ru_RU.UTF-8"
#LANG="ru_RU.UTF-8"
#CONSOLE_FONT="lat0-16"
################################################################################
[/etc/ublinux/keyboard]
################################################################################
## Режим работы клавиатуры NumLock. По умолчанию включено, если нет тачпада.
## NUMLOCK=*yes|no|on|off
#NUMLOCK=off
@ -1060,8 +1065,8 @@ NSSWITCHWINBIND=yes
#Переключение раскладки клавиатуры в консоле: grp:lalt_lshift_toggle
#CONSOLE_KEYMAP_TOGGLE="grp:lalt_lshift_toggle"
################################################################################
[/etc/ublinux/ubm]
################################################################################
#UBMDIR=/var/lib/ubmodules
#EXT=ubm
#compression="${MKSQFS_OPTS}"
@ -1069,18 +1074,18 @@ NSSWITCHWINBIND=yes
#compression_fast="${MKSQFS_FASTALG}"
#compression_fast="-b 512K -comp lz4 -Xhc"
################################################################################
#Строгая привязка служб NFS сервера к работе через определенные порты (полезно при работе в сети через межсетевой экран)
[/etc/ublinux/nfs-server]
#Строгая привязка служб NFS сервера к работе через определенные порты (полезно при работе в сети через межсетевой экран)
################################################################################
#RPCMOUNTD_OPTIONS="--port 4002"
################################################################################
[/etc/ublinux/nfs-common]
################################################################################
#STATD_OPTIONS="--port 4000"
################################################################################
#Подключение к точке доступа My WIFI с паролем Password
[/etc/ublinux/network-scripts/ifcfg-Default_WIFI]
# Подключение к точке доступа My WIFI с паролем Password
################################################################################
#NAME=Default_WIFI
#MODE=Managed
#TYPE=Wireless
@ -1097,12 +1102,12 @@ NSSWITCHWINBIND=yes
# Если точка бесплатная (аэропорт или кафе) - закоментарьте ключ, секция с паролем тогда не нужна
#KEY_MGMT=WPA-PSK
################################################################################
[/etc/ublinux/network-scripts/keys-Default_WIFI]
################################################################################
#WPA_PSK='Password'
################################################################################
[/etc/ublinux/network-scripts/ifcfg-eth0]
################################################################################
#DEVICE=eno1
# Автоподнятие сетевого интерфейса
#ONBOOT=yes
@ -1119,8 +1124,8 @@ NSSWITCHWINBIND=yes
#MII_NOT_SUPPORTED=no
#DNS1=192.168.1.1
################################################################################
[/etc/ublinux/network-scripts/ifcfg-wlan0]
################################################################################
#ONBOOT=yes
# Set it empty for autodetection
# При указании пустого значения будет выполнен поиск доступных сетей
@ -1145,16 +1150,16 @@ NSSWITCHWINBIND=yes
#MII_NOT_SUPPORTED=yes
#DNS1=192.168.2.1
################################################################################
[/etc/polipo/config]
################################################################################
## В настройках прокси сервера polipo можно перенаправить весь поток на другой сервер
## это может быть и обычный сервер и служба tor
#socksParentProxy="localhost:9050"
#socksProxyType=socks5
################################################################################
[/etc/hostapd/hostapd.conf]
# Настройки wifi карты в режиме точки доступа
################################################################################
#driver=nl80211
#ssid=ublinux
#country_code=RU
@ -1165,16 +1170,15 @@ NSSWITCHWINBIND=yes
# переключение в режим открытой wep сети
#wpa=0
################################################################################
#---- network files ----
[/etc/pdnsd.conf]
################################################################################
# принимать запросы от других компьютеров в сети
#server_ip=any;
# адрес основного DNS сервера, откуда брать запросы
#ip=77.88.8.8;
################################################################################
[/etc/profile.d/ublinux.sh]
################################################################################
# Перенос временных файлов КДЕ4 в отдельную папку. Убирает притормаживание главного меню в КДЕ4
#export KDEVARTMP=/mnt/livedata/ublinux-data/tmp
@ -1185,7 +1189,7 @@ NSSWITCHWINBIND=yes
# 2 вариант. Не на каждой видеокарте может сработать
#export KWIN_TRIPLE_BUFFER=1
################################################################################
[/etc/laptop-mode/laptop-mode.conf]
################################################################################
# Отключение парковки жесткого диска на ноутбуках
#CONTROL_HD_POWERMGMT=1

Loading…
Cancel
Save