Bump version to 2.14

master
Dmitry Razumov 3 years ago
parent e9480bb2b1
commit 97a377b256

@ -1 +1 @@
VERSION 2.13 VERSION 2.14

@ -14,15 +14,16 @@ SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/security; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/security; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
#declare -A DISK_QUOTA #declare -A DISK_QUOTA
#DISK_QUOTA[usrquota:/dev/sda1]=enable #DISK_QUOTA[usrquota:/dev/sda4]=enable
#DISK_QUOTA[usrquota:/dev/sda1]=disable #DISK_QUOTA[usrquota:/dev/sda4]=disable
#DISK_QUOTA[usrquota:/dev/sda4:user-1,user-2]=7M:8M:0:0:86400:86400 #DISK_QUOTA[usrquota:/dev/sda4:user-1,user-2]=7M:8M:0:0:86400:86400
#DISK_QUOTA[usrquota:/dev/sda4:user-1]=5M:6M:0:0 #DISK_QUOTA[usrquota:/dev/sda4:user-1]=5M:6M:0:0
#DISK_QUOTA[usrquota:/dev/sda4:user-2]=7M:8M:0:0 #DISK_QUOTA[usrquota:/dev/sda4:user-2]=7M:8M:0:0
#DISK_QUOTA[usrquota:/mnt/MyExt4:user-1,user-2]=5M:6M:0:0 #DISK_QUOTA[usrquota:/mnt/MyExt4:user-1,user-2]=5M:6M:0:0
#DISK_QUOTA[usrquota:/dev/sda4]=0:0:0:0:1604800:8604800 #DISK_QUOTA[usrquota:/dev/sda4]=0:0:0:0:1604800:8604800
#DISK_QUOTA[grpquota:/dev/sda1]=enable #DISK_QUOTA[grpquota:/dev/sda4]=enable
#DISK_QUOTA[grpquota:/dev/sda4]=disable
#DISK_QUOTA[grpquota:/dev/sda4:users]=2M:3M:0:0:604800:604800 #DISK_QUOTA[grpquota:/dev/sda4:users]=2M:3M:0:0:604800:604800
#DISK_QUOTA[grpquota:/mnt/MyExt4:users]=5M:6M:0:0:604800:604800 #DISK_QUOTA[grpquota:/mnt/MyExt4:users]=5M:6M:0:0:604800:604800
@ -303,11 +304,20 @@ exec_disk_quota(){
done done
fi fi
} }
exec_disk_quota_get(){
KNOW_LSBLK=$("${ROOTFS}"/usr/bin/lsblk --raw --fs --output PATH,FSTYPE,LABEL,PARTLABEL,UUID,PARTUUID,MOUNTPOINT,MOUNTPOINTS --exclude 11,253)
PATH_DEVICE_LSBLK=$(grep -E " (ext2|ext3|ext4|xfs|btrfs|nfs) " <<< ${KNOW_LSBLK} | cut -d' ' -f1) #"
echo "${PATH_DEVICE_LSBLK}"
}
################ ################
##### MAIN ##### ##### MAIN #####
################ ################
exec_disk_quota $@ if [[ -z $@ || $1 == set ]]; then
#exec_disk_quota_get $@ shift
exec_disk_quota $@
elif [[ $1 == get ]]; then
shift
exec_disk_quota_get $@
fi

@ -13,29 +13,54 @@ SYSCONF="${ROOTFS}/${SYSCONF}"
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/security; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/security; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
exec_cgroup_quota(){ get_compat_unit(){
if [[ ! ${ITEM_UNIT} =~ ".service"$|".slice"$|".scope"$ ]]; then
USER_ID=$(id -u ${ITEM_UNIT} 2>/dev/null)
[[ -n ${USER_ID} ]] && USER_SLICE="user-${USER_ID}.slice" || return 1
COMPAT_UNIT=${USER_SLICE}
else
COMPAT_UNIT=${ITEM_UNIT}
fi
}
# ARG1: CGROUP_QUOTA[superadmin]=MemoryHigh=500M,MemorySwapMax=100M,CPUQuota=400%
exec_cgroup_quota_set(){
## Квоты на ресурсы, через cgroup2. Механизм systemd или напрямую cgroup ## Квоты на ресурсы, через cgroup2. Механизм systemd или напрямую cgroup
[[ -n $@ ]] && declare -A CGROUP_QUOTA && eval $@
if [[ -n ${CGROUP_QUOTA[@]} ]]; then if [[ -n ${CGROUP_QUOTA[@]} ]]; then
for ITEM_UNIT in "${!CGROUP_QUOTA[@]}"; do for ITEM_UNIT in "${!CGROUP_QUOTA[@]}"; do
if [[ ! ${ITEM_UNIT} =~ ".service"$|".slice"$|".scope"$ ]]; then get_compat_unit
USER_ID=$(id -u ${ITEM_UNIT})
[[ -n ${ITEM_UNIT} ]] && USER_SLICE="user-$(id -u ${USER_ID}).slice" || return 1
COMPAT_UNIT=${USER_SLICE}
else
COMPAT_UNIT=${ITEM_UNIT}
fi
if readlink -fq ${ROOTFS}/usr/bin/init | grep -q "lib/systemd/systemd$"; then if readlink -fq ${ROOTFS}/usr/bin/init | grep -q "lib/systemd/systemd$"; then
systemctl set-property --runtime ${COMPAT_UNIT} ${CGROUP_QUOTA[${ITEM_UNIT}]//,/ } /usr/bin/systemctl set-property --runtime ${COMPAT_UNIT} ${CGROUP_QUOTA[${ITEM_UNIT}]//,/ }
systemctl daemon-reload /usr/bin/systemctl daemon-reload
else else
true true
fi fi
done done
fi fi
} }
# ARG1: CGROUP_QUOTA[superadmin]=
exec_cgroup_quota_remove(){
## Очистить квоты на ресурсы, через cgroup2. Механизм systemd или напрямую cgroup
[[ -n $@ ]] && ITEM_UNIT=${@#*[} && ITEM_UNIT=${ITEM_UNIT%%]*} || return 0
[[ -n ${ITEM_UNIT} ]] || return 0
get_compat_unit
if readlink -fq ${ROOTFS}/usr/bin/init | grep -q "lib/systemd/systemd$"; then
/usr/bin/systemctl set-property --runtime ${COMPAT_UNIT} $(cat /run/systemd/system.control/${COMPAT_UNIT}.d/* | grep -v "^[#\[]" | sed "s/=.*$/= /g" | tr -d \\n)
#systemctl revert ${COMPAT_UNIT}
/usr/bin/systemctl daemon-reload
else
true
fi
}
################ ################
##### MAIN ##### ##### MAIN #####
################ ################
exec_cgroup_quota $@ if [[ -z $@ || $1 == set ]]; then
shift
exec_cgroup_quota_set $@
elif [[ $1 == remove ]]; then
shift
exec_cgroup_quota_remove $@
fi

@ -20,8 +20,6 @@ SYSCONF="${ROOTFS}/${SYSCONF}"
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/network; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/network; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
[[ -n $1 ]] && NTPSERVERS=$1
[[ -n $2 ]] && ETH_INTERFACE="-$2"
# List NTP servers: PART_SYSTEMDPATH/Service_Name Process_Name # List NTP servers: PART_SYSTEMDPATH/Service_Name Process_Name
NTP_SERVICES_PROCESS=" NTP_SERVICES_PROCESS="
sysinit.target.wants/systemd-timesyncd.service systemd-timesyncd sysinit.target.wants/systemd-timesyncd.service systemd-timesyncd
@ -32,35 +30,67 @@ SOURCE=${SYSCONF}/network; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
multi-user.target.wants/ptp4l.service ptp4l multi-user.target.wants/ptp4l.service ptp4l
multi-user.target.wants/phc2sys.service phc2sys" multi-user.target.wants/phc2sys.service phc2sys"
exec_ntp_servers_set(){
restart_systemd_ntp(){
if [[ -n ${ROOTFS} ]]; then
${CMD_CHROOT} /usr/bin/systemctl --quiet enable ${NTP_SYSTEMSERVICE} &>/dev/null
else
/usr/bin/systemctl daemon-reload
/usr/bin/systemctl --quiet enable ${NTP_SYSTEMSERVICE} &>/dev/null
/usr/bin/systemctl --quiet restart ${NTP_SYSTEMSERVICE} &>/dev/null
fi
}
ISSYSTEMD=$(readlink -fq ${ROOTFS}/usr/bin/init | grep "lib/systemd/systemd$") ISSYSTEMD=$(readlink -fq ${ROOTFS}/usr/bin/init | grep "lib/systemd/systemd$")
if [[ ${NTPSERVERS,,} == "dhcp" ]]; then
# Вызывая из NetworkManager скрипта, переменна ${NTPSERVERS} перезаписана на сервера NTP из DHCP
[[ -n $1 ]] && local NTPSERVERS="$1"
fi
if [[ ${NTPSERVERS,,} == "stop" ]]; then if [[ ${NTPSERVERS,,} == "stop" ]]; then
# Для systemd exec_ntp_servers_stop
if [[ -n ${ISSYSTEMD} ]]; then elif [[ ${NTPSERVERS,,} == "dhcp" ]]; then
while IFS=' ' read ITEM_NTP_SERVICE ITEM_NTP_PROCESS; do # Активная systemd и выбран сервис NTP_SYSTEMSERVICE=systemd-timesyncd.service
[[ -z ${ITEM_NTP_SERVICE} || -z ${ITEM_NTP_PROCESS} ]] && continue if [[ -n ${ISSYSTEMD} && ${NTP_SYSTEMSERVICE} == "systemd-timesyncd.service" && -f ${ROOTFS}/usr/lib/systemd/system/systemd-timesyncd.service ]]; then
if [[ -n ${ROOTFS} ]]; then restart_systemd_ntp
${CMD_CHROOT} systemctl --quiet disable ${ITEM_NTP_SERVICE##*/} &>/dev/null
else
systemctl --quiet disable --now ${ITEM_NTP_SERVICE##*/} &>/dev/null || pkill -9 ${ITEM_NTP_PROCESS}
fi
done < <(tr -d '\t' <<< ${NTP_SERVICES_PROCESS})
fi fi
# Вызывая из NetworkManager скрипта, переменна ${NTPSERVERS} перезаписана на сервера NTP elif [[ -n ${NTPSERVERS} ]]; then
elif [[ -n ${NTPSERVERS} && ${NTPSERVERS,,} != "dhcp" ]]; then
[[ ${NTPSERVERS,,} == "default" ]] && NTPSERVERS=${NTPSERVERS_DEFAULT} [[ ${NTPSERVERS,,} == "default" ]] && NTPSERVERS=${NTPSERVERS_DEFAULT}
if [[ -n ${ISSYSTEMD} && ${NTP_SYSTEMSERVICE} == "systemd-timesyncd.service" && -f ${ROOTFS}/usr/lib/systemd/system/systemd-timesyncd.service ]]; then # Активная systemd и выбран сервис NTP_SYSTEMSERVICE=systemd-timesyncd.service
CONFIG_TIMESYNCD=${ROOTFS}/etc/systemd/timesyncd.conf.d/ulinux${ETH_INTERFACE}.conf if [[ -n ${ISSYSTEMD} && ${NTP_SYSTEMSERVICE} == "systemd-timesyncd.service" && -f ${ROOTFS}/usr/lib/systemd/system/systemd-timesyncd.service ]]; then
mkdir -p ${ROOTFS}/etc/systemd/timesyncd.conf.d NTPSERVERS=$(tr ',;' ' ' <<< ${NTPSERVERS})
NTPSERVERS=$(tr ',;' ' ' <<< ${NTPSERVERS}) # CONFIG_TIMESYNCD="${ROOTFS}/etc/systemd/timesyncd.conf.d/ublinux${ETH_INTERFACE}.conf"
cat <<-EOF > "${CONFIG_TIMESYNCD}" CONFIG_TIMESYNCD="${ROOTFS}/etc/systemd/timesyncd.conf.d/ubconfig.conf"
[[ -d ${CONFIG_TIMESYNCD%/*} ]] || mkdir -p ${CONFIG_TIMESYNCD%/*}
rm -f ${CONFIG_TIMESYNCD%/*}/ubconfig*.conf
cat <<-EOF > "${CONFIG_TIMESYNCD}"
[Time] [Time]
NTP=${NTPSERVERS} NTP=${NTPSERVERS}
FallbackNTP=${NTPSERVERS_FALLBACK} FallbackNTP=${NTPSERVERS_FALLBACK}
EOF EOF
if [[ -n ${ROOTFS} ]]; then restart_systemd_ntp
${CMD_CHROOT} systemctl --quiet enable ${NTP_SYSTEMSERVICE} &>/dev/null fi
else fi
systemctl --quiet enable --now ${NTP_SYSTEMSERVICE} &>/dev/null }
fi exec_ntp_servers_stop(){
fi # Определяем активную systemd
ISSYSTEMD=$(readlink -fq ${ROOTFS}/usr/bin/init | grep "lib/systemd/systemd$")
while IFS=' ' read ITEM_NTP_SERVICE ITEM_NTP_PROCESS; do
[[ -z ${ITEM_NTP_SERVICE} || -z ${ITEM_NTP_PROCESS} ]] && continue
if [[ -n ${ISSYSTEMD} && -n ${ROOTFS} ]]; then
${CMD_CHROOT} /usr/bin/systemctl --quiet disable ${ITEM_NTP_SERVICE##*/} &>/dev/null
elif [[ -n ${ISSYSTEMD} ]]; then
/usr/bin/systemctl --quiet disable --now ${ITEM_NTP_SERVICE##*/} &>/dev/null || pkill -f ${ITEM_NTP_PROCESS}
fi
done < <(tr -d '\t' <<< ${NTP_SERVICES_PROCESS})
}
################
##### MAIN #####
################
if [[ -z $@ || $1 == set ]]; then
shift
exec_ntp_servers_set $@
elif [[ $1 == remove ]]; then
shift
exec_ntp_servers_stop $@
fi fi

@ -22,7 +22,7 @@ SOURCE=${SYSCONF}/desktop; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
FILE_UDEV_MULTISEAT="${ROOTFS}/etc/udev/rules.d/72-seat-ubconfig.rules" FILE_UDEV_MULTISEAT="${ROOTFS}/etc/udev/rules.d/72-seat-ubconfig.rules"
[[ ${DISPLAYMANAGER} == "none" ]] && exit 0 exec_multiseat(){
if [[ -n "${MULTISEAT_SIMPLE[@]}" ]]; then if [[ -n "${MULTISEAT_SIMPLE[@]}" ]]; then
for SEAT in "${!MULTISEAT_SIMPLE[@]}"; do for SEAT in "${!MULTISEAT_SIMPLE[@]}"; do
while read SEAT_DEVICE; do while read SEAT_DEVICE; do
@ -34,3 +34,20 @@ EOF
else else
rm -f ${FILE_UDEV_MULTISEAT} rm -f ${FILE_UDEV_MULTISEAT}
fi fi
if [[ -z ${ROOTFS} ]]; then
/usr/bin/udevadm control --reload-rules
/usr/bin/udevadm trigger
fi
}
################
##### MAIN #####
################
if [[ -z $@ || $1 == set ]]; then
shift
exec_multiseat $@
elif [[ $1 == remove ]]; then
shift
exec_multiseat $@
fi

@ -30,7 +30,7 @@
[/etc/ublinux/config] [/etc/ublinux/config]
## Config verison ## Config verison
## Версия конфигурации ## Версия конфигурации
VERSION=2.13 VERSION=2.14
## Additional boot parameters ## Additional boot parameters
## Дополнительные параметры загрузки, только для управления модулями ## Дополнительные параметры загрузки, только для управления модулями
@ -60,15 +60,16 @@ DEFAULTUSER=superadmin
NEEDEDUSERS='superadmin:1000:x:Администратор' NEEDEDUSERS='superadmin:1000:x:Администратор'
## Пользователи системы ## Пользователи системы
## ADDUSER[user_name:UID:comment:additional_groups:opt_manual]=password_hash|x ## ADDUSER[user_name:uid:comment:user_group:extra_groups:optional]=password_hash|x
## user_name ## user_name # Имя пользователя
## UID ## uid # UID пользователя, если необходимо автоматически расчитавыть, то оставить пустым или 'x'
## comment ## comment # Поле GECOS, с подробным описанием пользователя, можно локализованное
## additional_groups ## user_group # Основная группа пользователя, если выбрано пусто или 'x', то 'user_group=user_name'
## opt_manual ## extra_groups # Дополнительные группы пользователя
## password_hash|x ## optional # Дополнительные опции, например: '--shell /usr/bin/bash --no-user-group'
## password_hash|x # Хеш пароля пользователя, если выбрано 'x', то 'password_hash=DEFAULTPASSWD'
## ADDUSER[superadmin:1000:Администратор:]=x ## ADDUSER[superadmin:1000:Администратор:]=x
## ADDUSER[user-1:x:Пользователь-1:vboxusers,libvirt:opt_manual]=passsword_hash ## ADDUSER[user-1:x:Пользователь-1::vboxusers,libvirt]=passsword_hash
# Помещать пользователя с ID 1000 в группу Администраторов whell # Помещать пользователя с ID 1000 в группу Администраторов whell
#ADDADM=yes #ADDADM=yes
@ -80,10 +81,10 @@ NEEDEDUSERS='superadmin:1000:x:Администратор'
## Autostart services ## Autostart services
## Автоматически поднимать службы (можно указывать службы xinetd) ## Автоматически поднимать службы (можно указывать службы xinetd)
## Для работы bluetooth SERVICESSTART+=bluetooth ## Для работы bluetooth SERVICESSTART+=bluetooth
## Для работы в WINDOWS сетях с DNS NETBIOS, включить NSSWITCHWINBIND=yes и добавить SERVICESSTART=nmb,winbind ## Для работы в WINDOWS сетях с DNS NETBIOS, включить NSSWITCHWINBIND=yes и добавить SERVICESSTART+=,nmb,winbind
## Для VMWareWorkstation: vmware-networks,vmware-usbarbitrator ## Для VMWareWorkstation: vmware-networks,vmware-usbarbitrator
## SERVICESSTART=tor,polipo,cups-lpd,pcscd ## SERVICESSTART=tor,polipo,cups-lpd,pcscd
SERVICESSTART=dbus-broker,NetworkManager,sshd,systemd-swap,systemd-timesyncd,cups,cockpit.socket,avahi-daemon,avahi-dnsconfd,veyon,smb,nmb,winbind,bluetooth SERVICESSTART=dbus-broker,NetworkManager,sshd,systemd-swap,cups,cockpit.socket,avahi-daemon,avahi-dnsconfd,veyon,smb,nmb,winbind,bluetooth
## You can disable some of standart services start ## You can disable some of standart services start
## Отключение служб, включенных по умолчанию ## Отключение служб, включенных по умолчанию

@ -30,7 +30,7 @@
[/etc/ublinux/config] [/etc/ublinux/config]
## Config verison ## Config verison
## Версия конфигурации ## Версия конфигурации
VERSION=2.11 VERSION=2.14
## Additional boot parameters ## Additional boot parameters
## Дополнительные параметры загрузки, только для управления модулями ## Дополнительные параметры загрузки, только для управления модулями
@ -60,15 +60,16 @@ DEFAULTUSER=superadmin
NEEDEDUSERS='superadmin:1000:x:Администратор' NEEDEDUSERS='superadmin:1000:x:Администратор'
## Пользователи системы ## Пользователи системы
## ADDUSER[user_name:UID:comment:additional_groups:opt_manual]=password_hash|x ## ADDUSER[user_name:uid:comment:user_group:extra_groups:optional]=password_hash|x
## user_name ## user_name # Имя пользователя
## UID ## uid # UID пользователя, если необходимо автоматически расчитавыть, то оставить пустым или 'x'
## comment ## comment # Поле GECOS, с подробным описанием пользователя, можно локализованное
## additional_groups ## user_group # Основная группа пользователя, если выбрано пусто или 'x', то 'user_group=user_name'
## opt_manual ## extra_groups # Дополнительные группы пользователя
## password_hash|x ## optional # Дополнительные опции, например: '--shell /usr/bin/bash --no-user-group'
## password_hash|x # Хеш пароля пользователя, если выбрано 'x', то 'password_hash=DEFAULTPASSWD'
## ADDUSER[superadmin:1000:Администратор:]=x ## ADDUSER[superadmin:1000:Администратор:]=x
## ADDUSER[user-1:x:Пользователь-1:vboxusers,libvirt:opt_manual]=passsword_hash ## ADDUSER[user-1:x:Пользователь-1::vboxusers,libvirt]=passsword_hash
# Помещать пользователя с ID 1000 в группу Администраторов whell # Помещать пользователя с ID 1000 в группу Администраторов whell
#ADDADM=yes #ADDADM=yes
@ -80,10 +81,10 @@ NEEDEDUSERS='superadmin:1000:x:Администратор'
## Autostart services ## Autostart services
## Автоматически поднимать службы (можно указывать службы xinetd) ## Автоматически поднимать службы (можно указывать службы xinetd)
## Для работы bluetooth SERVICESSTART+=bluetooth ## Для работы bluetooth SERVICESSTART+=bluetooth
## Для работы в WINDOWS сетях с DNS NETBIOS, включить NSSWITCHWINBIND=yes и добавить SERVICESSTART=nmb,winbind ## Для работы в WINDOWS сетях с DNS NETBIOS, включить NSSWITCHWINBIND=yes и добавить SERVICESSTART+=,nmb,winbind
## Для VMWareWorkstation: vmware-networks,vmware-usbarbitrator ## Для VMWareWorkstation: vmware-networks,vmware-usbarbitrator
## SERVICESSTART=tor,polipo,cups-lpd,pcscd ## SERVICESSTART=tor,polipo,cups-lpd,pcscd
SERVICESSTART=dbus-broker,NetworkManager,sshd,systemd-swap,systemd-timesyncd,cups,cockpit.socket,avahi-daemon,avahi-dnsconfd,veyon,smb,nmb,winbind,bluetooth SERVICESSTART=dbus-broker,NetworkManager,sshd,systemd-swap,cups,cockpit.socket,avahi-daemon,avahi-dnsconfd,veyon,smb,nmb,winbind,bluetooth
## You can disable some of standart services start ## You can disable some of standart services start
## Отключение служб, включенных по умолчанию ## Отключение служб, включенных по умолчанию

Loading…
Cancel
Save