From 4476187a776e1670ab3199c07ca83e8bdc665347 Mon Sep 17 00:00:00 2001 From: amid Date: Sat, 29 Apr 2023 22:34:35 +0600 Subject: [PATCH] Bump version to 2.12 --- VERSION.md | 2 +- ublinux/rc.halt.pre/20-grub | 183 +++++ ublinux/rc.local.d/42-domain_join | 2 +- ublinux/rc.post.d/46-cgroup-quota | 19 +- ublinux/templates/ublinux-data.ini | 40 +- ublinux/templates/ublinux-data_ru.ini | 967 ++++++++++++++++++++++++++ ublinux/templates/ublinux-data_ru.sgn | 9 + ublinux/templates/ublinux.ini | 12 +- ublinux/templates/ublinux_ru.ini | 6 + ublinux/templates/ublinux_ru.sgn | 9 + 10 files changed, 1224 insertions(+), 25 deletions(-) create mode 100755 ublinux/rc.halt.pre/20-grub create mode 100644 ublinux/templates/ublinux-data_ru.ini create mode 100644 ublinux/templates/ublinux-data_ru.sgn create mode 100644 ublinux/templates/ublinux_ru.ini create mode 100644 ublinux/templates/ublinux_ru.sgn diff --git a/VERSION.md b/VERSION.md index 179c82d..b93d025 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1 +1 @@ -VERSION 2.11 +VERSION 2.12 diff --git a/ublinux/rc.halt.pre/20-grub b/ublinux/rc.halt.pre/20-grub new file mode 100755 index 0000000..06aa035 --- /dev/null +++ b/ublinux/rc.halt.pre/20-grub @@ -0,0 +1,183 @@ +#!/usr/bin/env 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}/boot; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null + +SELF_NAME="20-grub" +NAME_GRUB_CFG="grub.cfg" + +get_path_grub2(){ + PATH_GRUB=$(find ${ROOTFS}/memory/data/from/*/boot/grub/ -maxdepth 1 -type f -name "${NAME_GRUB_CFG}" | head -1) + [[ -n ${PATH_GRUB} ]] || PATH_GRUB="$(find ${ROOTFS}/memory/data/from/*/ -maxdepth 3 -type f -name "${NAME_GRUB_CFG}" | head -1)" + [[ -n ${PATH_GRUB} ]] || return 1 + [[ -w ${PATH_GRUB} ]] && PATH_GRUB="${PATH_GRUB%/*}" || return 1 +} +control_grub_var_cfg(){ + if [[ -n ${STR_SET_VALUE} ]]; then + grep -q "${STR_EXPORT}" ${FILE_GRUB_VAR_USER} 2>/dev/null || echo -e "${STR_EXPORT}" >> ${FILE_GRUB_VAR_USER} + if ! grep -q "^\s*${STR_SET}${STR_SET_VALUE}\s*$" ${FILE_GRUB_VAR_USER} 2>/dev/null; then + local QUOTA + [[ ${STR_SET_VALUE} =~ " " ]] && QUOTA="\"" + if grep -q "${STR_SET}" ${FILE_GRUB_VAR_USER} 2>/dev/null; then + sed -E "s/^\s*(${STR_SET}).*/\1${QUOTA}${STR_SET_VALUE}${QUOTA}/" -i ${FILE_GRUB_VAR_USER} + else + sed "/${STR_EXPORT}/i${STR_SET}${QUOTA}${STR_SET_VALUE}${QUOTA}" -i ${FILE_GRUB_VAR_USER} + fi + fi + elif grep -q "${STR_SET}" ${FILE_GRUB_VAR_USER} 2>/dev/null; then + sed "/^\s*${STR_SET}.*/d; /^\s*${STR_EXPORT}\s*$/d" -i ${FILE_GRUB_VAR_USER} + fi +} +exec_grub_timeout(){ + [[ -n $@ ]] && STR_SET_VALUE="$@" || STR_SET_VALUE="${GRUB_TIMEOUT}" + STR_SET="set timeout=" + STR_EXPORT="export timeout" + control_grub_var_cfg +} +exec_grub_default(){ + [[ -n $@ ]] && GRUB_DEFAULT="$@" + if [[ -n ${GRUB_DEFAULT} ]]; then + FILE_GRUBENV="${PATH_GRUB}/grubenv" + DATA_GRUBENV=$(cat < "${PATH_GRUB}/grubenv" + echo -ne "${DATA_GRUBENV}\n$(printf -- '#'%.s $(seq -s ' ' $((1023-"${#DATA_GRUBENV}"))))" > "${PATH_GRUB}/grubenv" + fi +} +exec_grub_superusers(){ + [[ -n $@ ]] && STR_SET_VALUE="$@" || STR_SET_VALUE="${GRUB_SUPERUSERS}" + STR_SET="set superusers=" + STR_EXPORT="export superusers" + control_grub_var_cfg +} +exec_grub_password(){ + [[ -n $@ ]] && GRUB_PASSWORD="$@" + if [[ -n ${GRUB_PASSWORD[0]} ]]; then + [[ -n ${GRUB_SUPERUSERS} ]] || return 1 + FIRST_SUPERUSER=${GRUB_SUPERUSERS//\"/}; FIRST_SUPERUSER=${FIRST_SUPERUSER%%,*}; FIRST_SUPERUSER=${FIRST_SUPERUSER%% *} + local -A GRUB_PASSWORD=( [${FIRST_SUPERUSER}]="${GRUB_PASSWORD}" ) + fi + if [[ -n ${GRUB_PASSWORD[@]} ]]; then + for NAME_USER in "${!GRUB_PASSWORD[@]}"; do + STR_SET="password_pbkdf2 ${NAME_USER} " + STR_SET_VALUE=${GRUB_PASSWORD[${NAME_USER}]} + if [[ ! ${STR_SET_VALUE} =~ ^grub.pbkdf2 ]]; then + STR_SET_VALUE=$(echo -e "${STR_SET_VALUE}\n${STR_SET_VALUE}" | grub-mkpasswd-pbkdf2 | awk '/grub.pbkdf/{print$NF}') + ubconfig --noexecute set boot GRUB_PASSWORD[${NAME_USER}]=${STR_SET_VALUE} + fi + if ! grep -q "^\s*${STR_SET}${STR_SET_VALUE}$" ${FILE_GRUB_VAR_USER} 2>/dev/null; then + if grep -q "${STR_SET}" ${FILE_GRUB_VAR_USER} 2>/dev/null; then + sed -E "s/^\s*(${STR_SET}).*/\1${STR_SET_VALUE}/" -i ${FILE_GRUB_VAR_USER} + else + echo "${STR_SET}${STR_SET_VALUE}" >> ${FILE_GRUB_VAR_USER} + fi + fi + done + # Проверка по файлу ${FILE_GRUB_VAR_USER}, если пароль на пользователя присутствует, но его нет в конфигурации, то удалить из ${FILE_GRUB_VAR_USER} + while read -r NAME_USER; do + [[ -n ${GRUB_PASSWORD[${NAME_USER}]} ]] || sed "/^\s*password_pbkdf2 ${NAME_USER}.*/d" -i ${FILE_GRUB_VAR_USER} + done < <(sed -En "s/^\s*password_pbkdf2 (.*) .*/\1/p" ${FILE_GRUB_VAR_USER}) + elif grep -q "^\s*password_pbkdf2" ${FILE_GRUB_VAR_USER} 2>/dev/null; then + sed "/^\s*password_pbkdf2.*/d" -i ${FILE_GRUB_VAR_USER} + fi +} +exec_grub_boot_silent(){ + [[ -n $@ ]] && STR_SET_VALUE="$@" || STR_SET_VALUE="${GRUB_BOOT_SILENT}" + STR_SET="set BOOT_SILENT=" + STR_EXPORT="export BOOT_SILENT" + control_grub_var_cfg +} +exec_grub_terminal_input(){ + [[ -n $@ ]] && STR_SET_VALUE="$@" || STR_SET_VALUE="${GRUB_TERMINAL_INPUT}" + STR_SET="terminal_input " + if [[ -n ${STR_SET_VALUE} ]]; then + if ! grep -q "^\s*${STR_SET}${STR_SET_VALUE}\s*$" ${FILE_GRUB_VAR_USER} 2>/dev/null; then + if grep -q "${STR_SET}" ${FILE_GRUB_VAR_USER} 2>/dev/null; then + sed -E "s/^\s*(${STR_SET}).*/\1${STR_SET_VALUE}/" -i ${FILE_GRUB_VAR_USER} + else + echo "${STR_SET}${STR_SET_VALUE}" >> ${FILE_GRUB_VAR_USER} + fi + if [[ ${STR_SET_VALUE} =~ "serial" ]]; then + grep -q "^\s*serial\s*$" ${FILE_GRUB_VAR_USER} 2>/dev/null || sed "/${STR_SET}/iserial" -i ${FILE_GRUB_VAR_USER} + else + grep -q "^\s*serial\s*$" ${FILE_GRUB_VAR_USER} 2>/dev/null && sed "/^serial$/d" -i ${FILE_GRUB_VAR_USER} + fi + fi + elif grep -q "${STR_SET}" ${FILE_GRUB_VAR_USER} 2>/dev/null; then + sed "/^\s*${STR_SET}.*/d; /^\s*serial\s*$/d" -i ${FILE_GRUB_VAR_USER} + fi +} +exec_grub_terminal_output(){ + [[ -n $@ ]] && STR_SET_VALUE="$@" || STR_SET_VALUE="${GRUB_TERMINAL_OUTPUT}" + STR_SET="terminal_output " + if [[ -n ${STR_SET_VALUE} ]]; then + if ! grep -q "^\s*${STR_SET}${STR_SET_VALUE}\s*$" ${FILE_GRUB_VAR_USER} 2>/dev/null; then + if grep -q "${STR_SET}" ${FILE_GRUB_VAR_USER} 2>/dev/null; then + sed -E "s/^\s*(${STR_SET}).*/\1${STR_SET_VALUE}/" -i ${FILE_GRUB_VAR_USER} + else + echo "${STR_SET}${STR_SET_VALUE}" >> ${FILE_GRUB_VAR_USER} + fi + fi + elif grep -q "${STR_SET}" ${FILE_GRUB_VAR_USER} 2>/dev/null; then + sed "/^\s*${STR_SET}.*/d" -i ${FILE_GRUB_VAR_USER} + fi +} +exec_grub_play(){ + [[ -n $@ ]] && STR_SET_VALUE="$@" || STR_SET_VALUE="${GRUB_PLAY}" + STR_SET="play " + if [[ -n ${STR_SET_VALUE} ]]; then + if ! grep -q "^\s*${STR_SET}${STR_SET_VALUE}\s*$" ${FILE_GRUB_VAR_USER} 2>/dev/null; then + if grep -q "${STR_SET}" ${FILE_GRUB_VAR_USER} 2>/dev/null; then + sed -E "s/^\s*(${STR_SET}).*/\1${STR_SET_VALUE}/" -i ${FILE_GRUB_VAR_USER} + else + echo "${STR_SET}${STR_SET_VALUE}" >> ${FILE_GRUB_VAR_USER} + fi + fi + elif grep -q "${STR_SET}" ${FILE_GRUB_VAR_USER} 2>/dev/null; then + sed "/^\s*${STR_SET}.*/d" -i ${FILE_GRUB_VAR_USER} + fi +} +exec_grub_cmdline_linux(){ + [[ -n $@ ]] && STR_SET_VALUE="$@" || STR_SET_VALUE="${GRUB_CMDLINE_LINUX}" + STR_SET="set CMDLINE_LINUX=" + STR_EXPORT="export CMDLINE_LINUX" + control_grub_var_cfg +} + + +################ +##### MAIN ##### +################ + +# Возможность подключить как source из любого скрипта и вызов встроенных функций + get_path_grub2 || exit 1 +#PATH_GRUB="/mnt/livemedia/ublinux-data/work/rc.halt.pre" + FILE_GRUB_VAR_USER="${PATH_GRUB}/ublinux/grub_var_user.cfg" + [[ -f ${FILE_GRUB_VAR_USER} ]] || touch ${FILE_GRUB_VAR_USER} + + if [[ ${0##*/} == ${SELF_NAME} && -z $@ ]]; then + while read -r FUNCTION; do + $"${FUNCTION##* }" + done < <(declare -F | grep "declare -f exec_") + elif [[ ${0##*/} == ${SELF_NAME} ]]; then + while [[ $# -gt 0 ]]; do + declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" && shift || { FUNCTION+=" ${1}" && shift; } + done + eval ${FUNCTION#*; } + else + true + fi diff --git a/ublinux/rc.local.d/42-domain_join b/ublinux/rc.local.d/42-domain_join index 7321ef5..c019992 100755 --- a/ublinux/rc.local.d/42-domain_join +++ b/ublinux/rc.local.d/42-domain_join @@ -15,7 +15,7 @@ debug_mode "$0" "$@" ## Указать доменных пользователей AccountsService, что-бы были видны для выбора логина в DM systemctl --quiet --wait is-system-running ls -d /home/*@*/ 2>/dev/null | xargs -ri basename {} | xargs -ri dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.Accounts /org/freedesktop/Accounts org.freedesktop.Accounts.CacheUser string:{} - cp -af /mnt/livemedia/ublinux-data/rootcopy/etc/krb5.conf /etc/ + cp -af /memory/layer-base/1/ublinux-data/rootcopy/etc/krb5.conf /etc/ # ls -d /home/*@*/ 2>/dev/null | xargs -ri basename {} | xargs -ri touch /var/lib/AccountsService/users/{} if /usr/bin/systemctl --wait is-active network-online.target; then touch /var/log/ubdomain-client.log diff --git a/ublinux/rc.post.d/46-cgroup-quota b/ublinux/rc.post.d/46-cgroup-quota index f2cd7ba..80692fd 100755 --- a/ublinux/rc.post.d/46-cgroup-quota +++ b/ublinux/rc.post.d/46-cgroup-quota @@ -15,8 +15,23 @@ SOURCE=${SYSCONF}/security; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null exec_cgroup_quota(){ ## Квоты на ресурсы, через cgroup2. Механизм systemd или напрямую cgroup - #systemctl set-property --runtime user-1001.slice MemoryHigh=200M MemorySwapMax=300M CPUQuota=100% - true + if [[ -n ${CGROUP_QUOTA[@]} ]]; then + for ITEM_UNIT in "${!CGROUP_QUOTA[@]}"; do + if [[ ! ${ITEM_UNIT} =~ ".service"$|".slice"$|".scope"$ ]]; then + 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 + systemctl set-property --runtime ${COMPAT_UNIT} ${CGROUP_QUOTA[${ITEM_UNIT}]//,/ } + systemctl daemon-reload + else + true + fi + done + fi } ################ diff --git a/ublinux/templates/ublinux-data.ini b/ublinux/templates/ublinux-data.ini index c236268..c76bf50 100644 --- a/ublinux/templates/ublinux-data.ini +++ b/ublinux/templates/ublinux-data.ini @@ -57,7 +57,14 @@ DEFAULTUSER=superadmin ## NEEDEDUSERS='name_user:id:password:show_name:, ... ' password=x=$DEFAULTPASSWD NEEDEDUSERS='superadmin:1000:x:Администратор' +## Пользователи системы ## ADDUSER[user_name:UID:comment:additional_groups:opt_manual]=password_hash|x +## user_name +## UID +## comment +## additional_groups +## opt_manual +## password_hash|x ## ADDUSER[superadmin:1000:Администратор:]=x ## ADDUSER[user-1:x:Пользователь-1:vboxusers,libvirt:opt_manual]=passsword_hash @@ -89,8 +96,8 @@ HOSTNAME=ublinux-install ## You can specify your /etc/machine-id there. If MACHINEID=RANDOM then will be ## created random number. # In other case, it will be based on internal hardware list. ## Номер машины, который попадает в /etc/machine-id. -## =hardware | =hw - сформируется в зависимости от аппаратной начинки материнской платы и MAC -## =random | =rnd - создастся случайный номер +## =hardware | =hw # Сформируется в зависимости от аппаратной начинки материнской платы и MAC +## =random | =rnd # Создастся случайный номер ## Можно привязать к носителю, указав свой номер (в формате вывода утилиты md5sum) ## к примеру, echo mynumber | md5sum #MACHINEID=91ec1cd57b484d479893f012b26f89ea @@ -201,27 +208,34 @@ DEPMOD=yes ## Настройка загрузчика GRUB [/etc/ublinux/boot] ## Время отображения меню GRUB для выбора варианта загрузки -## GRUB_TIMEOUT=3 -GRUB_TIMEOUT=3 +## GRUB_TIMEOUT= +## GRUB_TIMEOUT=3 ## Выбор варианта загрузки GRUB по умолчанию +## GRUB_DEFAULT= ## GRUB_DEFAULT="UBLinux Desktop Basic 2204 - Песочница в RAM с сохранением профиля пользователя HDD" ## Пользователь GRUB для входа в режим редактирования конфигурации загрузки -## GRUB_USER=superadmin -GRUB_USER=superadmin +## GRUB_SUPERUSERS=,, +GRUB_SUPERUSERS=superadmin ## Пароль пользователя GRUB для входа в режим редактирования конфигурации загрузки -## GRUB_PASSWORD=grub.pbkdf2.sha512.10000.918F54C3C4CDE024A34FDA951FFBAD17D2B8F031A696F22038267FDAC6CF5FEA4FE800880591DBD533C95606A275F170B4F460243A083E89E231B2DAC13467D5.9B3392962D14DE34D6BCD4C559A4A4222ED9C0BF14D15A7E3772DA430513E34F2C96FE324D3FBCC4576C8DDF7B82B7AC8830195CC8886A39B525F070EC236421 -GRUB_PASSWORD=grub.pbkdf2.sha512.10000.918F54C3C4CDE024A34FDA951FFBAD17D2B8F031A696F22038267FDAC6CF5FEA4FE800880591DBD533C95606A275F170B4F460243A083E89E231B2DAC13467D5.9B3392962D14DE34D6BCD4C559A4A4222ED9C0BF14D15A7E3772DA430513E34F2C96FE324D3FBCC4576C8DDF7B82B7AC8830195CC8886A39B525F070EC236421 +## GRUB_PASSWORD[]= +## user # Имя пользователя +## password # Пароль, в формате grub.pbkdf2 или простым текстом, который автоматически сконвертирует в grub.pbkdf2 +## Пароль для пользователя superadmin: ublinux-grub +GRUB_PASSWORD[superadmin]=grub.pbkdf2.sha512.10000.918F54C3C4CDE024A34FDA951FFBAD17D2B8F031A696F22038267FDAC6CF5FEA4FE800880591DBD533C95606A275F170B4F460243A083E89E231B2DAC13467D5.9B3392962D14DE34D6BCD4C559A4A4222ED9C0BF14D15A7E3772DA430513E34F2C96FE324D3FBCC4576C8DDF7B82B7AC8830195CC8886A39B525F070EC236421 ## Режим вывода лога загрузки ## GRUB_BOOT_SILENT= ## splash # Графика plymouth, полный лог ## splash quiet ub.silent # Графика plymouth, нет лога ## quiet ub.silent # Без plymouth, минимальный лог ## plymouth.enable=0 # Без plymouth, полный лог -GRUB_BOOT_SILENT="splash quiet ub.silent" +GRUB_BOOT_SILENT="splash" ## Устройство ввода для терминала ## GRUB_TERMINAL_INPUT="console serial" ## Устройство вывода для терминала ## GRUB_TERMINAL_OUTPUT= +## Мелодия при включении ПК +## GRUB_PLAY=| +## GRUB_PLAY="480 900 2 1000 2 800 2 400 2 600 3" ## Аргументы командной строки для загрузки ядра Linux ## GRUB_CMDLINE_LINUX="modprobe.blacklist=nouveau" ## Возможные параметры GRUB_CMDLINE_LINUX: @@ -269,26 +283,21 @@ GRUB_CMDLINE_LINUX="modprobe.blacklist=nouveau" ## Сервер контроллера домена/kerberos ## Отключить автопоиск сервера контроллера домена/kerberos и задать статический -## DOMAIN_CONTROLLER=pdc.ublinux.ru ## DOMAIN[server]=pdc.ublinux.ru ## Клиент для подключения к домену [ *realmd_sssd | realmd_winbind | samba | none ] -## DOMAIN_CLIENT=realmd_sssd ## DOMAIN[client]=realmd_sssd ## Пользователь имеющие права ввода в домен. ## Применяется если необходимо автоматизировать ввод в домен с большого числа ПК, или при работе в режиме полной песочнице где невозможно сохранить ## Пароль кодировать в base64: echo 'password' | base64 -## DOMAIN_ADMIN[Администратор]=password_base64' -## DOMAIN_ADMIN[Администратор]=0J3QvtCy0YvQuV/QlNC10L3RjCEK +## DOMAIN[admanger]=USER_ADMIN:password_base64' ## DOMAIN[admanger]=Администратор:0J3QvtCy0YvQuV/QlNC10L3RjCEK ## Группа на контроллере домена, пользователи которой будут иметь права для sudo -## DOMAIN_GROUP_SUDOERS=sudoers@ublinux.ru ## DOMAIN[group:sudoers]=sudoers@ublinux.ru ## Группа на контроллере домена, пользователи которой будут иметь права для доступа по ssh -## DOMAIN_GROUP_SSH=sudoers@ublinux.ru ## DOMAIN[group:ssh]=sudoers@ublinux.ru ## Пользователи которым разрешён вход в домен, ограничение @@ -553,6 +562,7 @@ NSSWITCHWINBIND=yes ## CGROUP_QUOTA[unit|user]=property_1=value,property_2=value,property_n=value ## Получить древовидный список cgroups и запущенных процессов: systemd-cgls --no-page ## Показать монторинг потребляемых ресурсов: systemd-cgtop -c; systemd-cgtop -m +## Показать статус и используемые ограничения: systemctl status user.slice --no-page ## Еденицы измерения: %, K, M, G, T ## unit: system.slice, user.slice, user-0.slice, user-1000.slice, smb.service, cups.service, httpd.service, ## user: superadmin, user-1 # Системное имя пользователя diff --git a/ublinux/templates/ublinux-data_ru.ini b/ublinux/templates/ublinux-data_ru.ini new file mode 100644 index 0000000..c76bf50 --- /dev/null +++ b/ublinux/templates/ublinux-data_ru.ini @@ -0,0 +1,967 @@ +# Файл ublinux.ini рекомендуется использовать в папке ublinux-data +# Если вы работаете в режиме полной песочницы и у вас отстуствует папка ublinux-data, вы можетеперенести его в папку ublinux +# Now int is recommended to place ublinux.ini file to folder ublinux-data +# If you want to delete this folder (when using in full sandbox mode) you may move it into folder ublinux-data + +# UBLinux settings +# UBLinux настройка + +################################################################################ +# How it works. +# Краткое описание как работает этот файл конфигурации +# [/path/filename]755 # select file for changing. if its not exists it will be created with 755 permisions +# [/path/filename]a+x # выбор файла для изменений, если файла нет, он будет создан с правами по умолчанию плюс chmod a+x +# [/path/filename]a+x [/bin/bash] # Необязательный параметр во второй части в квадратных скобках означает "запустить с" возможные варианты +# # [/bin/bash/] запустит с башем +# # [.] выполнить как часть init +# # [chroot . ] сделать чрут в sysroot и выполнить там +# Parameter=value # it will change string Parameter=* in file to Parameter=value. If there is no parameter the string will be added to end of file. +# Параметр=значение # меняет параметр в файле на нужное значение. Если параметра нет, строка будет добавлена в конец файла. +# +string # add string to end of file in case it's not already in file. +# +строка # добавит строку в файл, если она ещё не прописана в нём. +# |string # add string to end of file in any case. +# |строка # добавит строку в файл без проверки. +# -expression # remove all string with expression (see info sed). symbols .* matches all strings in file. +# -выражение # удаляет строки соответствующие выражению (см info sed). Если указать .* то будут удалены все строки. + +################################################################################ +[/etc/ublinux/config] +## Config verison +## Версия конфигурации +VERSION=2.11 + +## Additional boot parameters +## Дополнительные параметры загрузки, только для управления модулями +#CMDLINE="noload=/12,/92 findswap" + +## Default user password is 'ublinux' +## Что-бы получить хэш "openssl passwd -6 -salt ubsalt password" +## Хэш пароля для пользователя по умолчанию (стандартно ublinux) +## Если пароль стандартный то будет подсказка + FIRSTSTART=yes > /etc/DESKTOP (Первый запуск для настройки системы) +DEFAULTPASSWD='$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60' + +## Default root password is 'ublinux' +## Хеш пароля для пользователя root (стандартно ublinux) +DEFAULTROOTPASSWD='$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60' + +## Default user name is 'superadmin' +## Имя пользователя по умолчанию, будет добавлен в группу whell, при условии если переменная NEEDEDUSERS пустая (стандартно superadmin) +DEFAULTUSER=superadmin + +## Default hash algoritm for user password +## Алгоритм хеширования паролей, возможные значения: des, md5, yescrypt, gost-yescrypt, scrypt, bf, bcrypt, bcrypt-a, sha512crypt, sha256crypt, sunmd5, md5crypt, bsdicrypt, descrypt, nt +#HASHPASSWD=sha512crypt + +## You can cpecify users there whithout using "user=" boot parameter +## Пользователи системы (аналог параметра users) +## NEEDEDUSERS='name_user:id:password:show_name:, ... ' password=x=$DEFAULTPASSWD +NEEDEDUSERS='superadmin:1000:x:Администратор' + +## Пользователи системы +## ADDUSER[user_name:UID:comment:additional_groups:opt_manual]=password_hash|x +## user_name +## UID +## comment +## additional_groups +## opt_manual +## password_hash|x +## ADDUSER[superadmin:1000:Администратор:]=x +## ADDUSER[user-1:x:Пользователь-1:vboxusers,libvirt:opt_manual]=passsword_hash + +# Помещать пользователя с ID 1000 в группу Администраторов whell +#ADDADM=yes + +## Groups for users +## Группы, в которых будут состоять пользователи, по умолчанию:scanner,power,audio,lp,optical,storage,video,sambashare,vboxusers,libvirt +#USERGROUPS=scanner,power,audio,lp,optical,storage,video,sambashare,vboxusers,libvirt + +## Autostart services +## Автоматически поднимать службы (можно указывать службы xinetd) +## Для работы bluetooth SERVICESSTART+=bluetooth +## Для работы в WINDOWS сетях с DNS NETBIOS, включить NSSWITCHWINBIND=yes и добавить SERVICESSTART=nmb,winbind +## Для VMWareWorkstation: vmware-networks, vmware-usbarbitrator +## 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 + +## You can disable some of standart services start +## Отключение служб, включенных по умолчанию +#SERVICESNOSTART=xinetd,pdnsd,iptables,wine + +## You can disable and mask some of standart service +## Отключение и блокировка служб, включенных по умолчанию +#SERVICESMASK=adb + +HOSTNAME=ublinux-install + +## You can specify your /etc/machine-id there. If MACHINEID=RANDOM then will be +## created random number. # In other case, it will be based on internal hardware list. +## Номер машины, который попадает в /etc/machine-id. +## =hardware | =hw # Сформируется в зависимости от аппаратной начинки материнской платы и MAC +## =random | =rnd # Создастся случайный номер +## Можно привязать к носителю, указав свой номер (в формате вывода утилиты md5sum) +## к примеру, echo mynumber | md5sum +#MACHINEID=91ec1cd57b484d479893f012b26f89ea +#MACHINEID=hardware +MACHINEID=hardware + +## Включить Apparmor, по умолчанию отключен +#APPARMOR=yes + +## Mount local partitions +## Подключение всех разделов при старте +#PARTITIONSAUTOMOUNT=yes + +## Не подключать указанные разделы +#PARTITIONSNOMOUNT=boot,hidden + +## Пользователь - владелец для fat ntfs +#PARTITIONSMOUNTUID=500 + +## Автомонтирование папок, внимание на порядковый номер после имени переменной +## Пароль кодировать в base64: echo 'password' | base64 +## AUTOMOUNT_SHARE[mountpoint]='cifs:share:username:password_base64:domain:opt' +## AUTOMOUNT_SHARE[/mnt/cifs:share]='cifs://192.168.103.55/share:user:password_base64:domain:noperm,vers=1.0' +## AUTOMOUNT_SHARE[/mnt/sdb1]='direct:/dev/sdb1:wheel:775:noacl' +## AUTOMOUNT_SHARE[/mnt/sshfs/user-1@192.168.1.1]='sshfs:superadmin@192.168.1.1:/home/user-1:password_base64:' +#AUTOMOUNT_SHARE[/mnt/share2]='cifs://192.168.103.55/share2:share:password_base64:domain:noperm,vers=1.0' +#AUTOMOUNT_SHARE[/mnt/sda4]='direct:/dev/sda4:wheel:775:noacl' +#AUTOMOUNT_SHARE[/mnt/sshfs/user-1@192.168.1.1]='sshfs:superadmin@192.168.1.1:/home/user-1:password_base64:' +#AUTOMOUNT_SHARE[/mnt/nfs/user-1@192.168.1.1]='nfs:192.168.1.1:/home/user-1' + +## Папка с правами 777 доступная всем локальным пользователям и при разрешении всем из сети +## по умолчанию PUBLICDIR=/home/public +#PUBLICDIR= + +## Mount shared media from ublinux-server automatically +## Подключаться к серверу при старте +#AUTOMOUNTSERVER=yes + +## Share local partitions via NFS-Server +## Разрешать общий доcтуп к разделам через NFS +#PARTITIONSSHARE=yes + +## Исключение для общих разделов +#PARTITIONSNOSHARE=archive,private + +## Режим работы клавиатуры Num Lock (yes|no). По умолчанию включено, если нет тачпада. +#NUMLOCK=no + +## Подписывать режим работы на обоях +## GRAFFITI=yes (default) +#GRAFFITI=no + +## Настройка принтера +## PRINTERADD=manual (default) +#PRINTERADD=auto + +## Обновлять кеш библиотек при старте. Полезно при использовании модулей от старых сборок. +#RUNLDCONFIG=yes + +## Обновление базы данных модулей, если используются сторонние модули ядра или видео проприетарное +DEPMOD=yes + +## Обновлять домашний каталог при загрузке если он уже существует +#UPDATEHOME=yes + +## Можно отключить использование tmpfs для /tmp или /var/tmp при работе с профилем +#TMPFS=no +#VARTMPFS=no + +## Перечень программ для автозагрузки под пользователем +#AUTOEXEC="kde:yakuake;gnome:guake;lxde:guake;xbindkeys;xfce:plank" + +## Включение pulseaudio (yes, no) +#PULSEAUDIO=yes + +## Установить звуковое устройство по умолчанию для ALSA, к примеру для вывода звука через HDMI +## устройства смотрите в выводе aplay -l +#ALSACARD=1 +#ALSADEVICE=7 + +## Автообновление системы +## UBLINUXUPDATE= +## =auto # автоматически +## =ask # спросить у пользователя (по умолчанию) +## =never # не обновлять автоматически +#UBLINUXUPDATE=auto + +## Профиль конфигурации PAM авторизации, authselect. Профили /usr/share/authselect/vendor +## Доступные доп. параметры: +## with-altfiles with-ecryptfs with-faillock with-files-access-provider with-files-domain with-pamaccess with-silent-lastlog with-sudo with-systemd-homed with-time without-nullok +## with-fingerprint with-pam-u2f with-pam-u2f-2fa without-nullokwithout-pam-u2f-nouserok +## with-smartcard with-smartcard-lock-on-removal with-smartcard-required +## with-mdns4 with-mdns6 with-mkhomedir with-mkhomedir-simple with-nispwquality +## Информация о профиле: authselect show ublinux-sssd +## Отключить выбор профиля PAM =disable|-|no|off +## AUTHPAM=disable +## По умолчанию, minimal конфигурация с локальной авторизацией +## AUTHPAM[minimal]=with-faillock,with-time,with-systemd-homed +## AUTHPAM[sssd]=with-faillock,with-time,with-systemd-homed,with-mkhomedir-simple + +## Алгоритм сжатия модулей по умолчанию +#MKSQFS_OPTS="-b 512K -comp xz -Xbcj x86" + +## Алгоритм сжатия, используемый для сохранения измененний в модуль +#MKSQFS_FASTALG="-b 512K -comp lz4 -Xhc" + +################################################################################ +## Настройка загрузчика GRUB +[/etc/ublinux/boot] +## Время отображения меню GRUB для выбора варианта загрузки +## GRUB_TIMEOUT= +## GRUB_TIMEOUT=3 +## Выбор варианта загрузки GRUB по умолчанию +## GRUB_DEFAULT= +## GRUB_DEFAULT="UBLinux Desktop Basic 2204 - Песочница в RAM с сохранением профиля пользователя HDD" +## Пользователь GRUB для входа в режим редактирования конфигурации загрузки +## GRUB_SUPERUSERS=,, +GRUB_SUPERUSERS=superadmin +## Пароль пользователя GRUB для входа в режим редактирования конфигурации загрузки +## GRUB_PASSWORD[]= +## user # Имя пользователя +## password # Пароль, в формате grub.pbkdf2 или простым текстом, который автоматически сконвертирует в grub.pbkdf2 +## Пароль для пользователя superadmin: ublinux-grub +GRUB_PASSWORD[superadmin]=grub.pbkdf2.sha512.10000.918F54C3C4CDE024A34FDA951FFBAD17D2B8F031A696F22038267FDAC6CF5FEA4FE800880591DBD533C95606A275F170B4F460243A083E89E231B2DAC13467D5.9B3392962D14DE34D6BCD4C559A4A4222ED9C0BF14D15A7E3772DA430513E34F2C96FE324D3FBCC4576C8DDF7B82B7AC8830195CC8886A39B525F070EC236421 +## Режим вывода лога загрузки +## GRUB_BOOT_SILENT= +## splash # Графика plymouth, полный лог +## splash quiet ub.silent # Графика plymouth, нет лога +## quiet ub.silent # Без plymouth, минимальный лог +## plymouth.enable=0 # Без plymouth, полный лог +GRUB_BOOT_SILENT="splash" +## Устройство ввода для терминала +## GRUB_TERMINAL_INPUT="console serial" +## Устройство вывода для терминала +## GRUB_TERMINAL_OUTPUT= +## Мелодия при включении ПК +## GRUB_PLAY=| +## GRUB_PLAY="480 900 2 1000 2 800 2 400 2 600 3" +## Аргументы командной строки для загрузки ядра Linux +## GRUB_CMDLINE_LINUX="modprobe.blacklist=nouveau" +## Возможные параметры GRUB_CMDLINE_LINUX: +## nomodeset # Отключить выбор и загрузку ядром драйверов видео +## i915.enable_dc=0 # Отключить управление питанием графического процессора +## intel_idle.max_cstate=1 # Ограничивает состояния сна процессора, это предотвращает переход процессора в состояния глубокого сна +## ahci.mobile_lpm_policy=1 # Максимальная производительность, управление питанием +## intel_idle.max_cstate=1 # Ограничивает состояния сна процессора, это предотвращает переход процессора в состояния глубокого сна +## intel_idle.max_cstate=4 # Устраняет мерцание дисплея ноутбука на процессорах Ultra Voltage +## snd-intel-dspcfg.dsp_driver=1 # Принудительный выбор драйвера звукового устройства от Intel +## snd-intel-dspcfg.dsp_driver=3 +## security=apparmor +GRUB_CMDLINE_LINUX="modprobe.blacklist=nouveau" + +################################################################################ +## Настройка сохранений +[/etc/ublinux/save] +## Сохранять кэши при перезагрузке/выключении, ускоряет загрузку системы +## SAVE_ALL_CACHE=rootcopy + +## Работает только в режимах песочницы. Не работает в режиме полного сохранения. +## При перезагрузке/выключении, сохранить/перезаписать указанные каталоги/файлы и , кроме в /ublinux-data/rootcopy/ +## Примечание: При загрузке весь каталог /ublinux-data/rootcopy копируется в корень. В режиме песочницы потребляет свободное ОЗУ. В режиме сохранения заменяет файлы в корне. +## SAVE_ROOTCOPY_INCLUDE= # Каталоги и файлы которые будут сохранены в rootcopy +## SAVE_ROOTCOPY_CHANGES= # Каталоги и файлы изменений которые будут сохранены в rootcopy +## SAVE_ROOTCOPY_EXCLUDE= # Каталоги и файлы которые будут исключены из сохраенния в rootcopy +#SAVE_ROOTCOPY_CHANGES="/etc" +#SAVE_ROOTCOPY_INCLUDE="/etc/pacman.d/gnupg,/etc/NetworkManager/system-connections" +#SAVE_ROOTCOPY_EXCLUDE="/etc/ublinux" + +## TODO +## Работает только в режимах песочницы. Не работает в режиме полного сохранения. +## При перезагрузке/выключении, сохранять указанные каталоги/файлы и , кроме в модуль /ublinux-data/modules/zz-save-module.ubm +## Примечание: При загрузке подключается последним модулем. Не потребляет свободное ОЗУ. Требует больше времени при перезагрузки/выключении, т.к. создаёт модуль. +#SAVE_MODULE_CHANGES="/etc" +#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 + +## Сервер контроллера домена/kerberos +## Отключить автопоиск сервера контроллера домена/kerberos и задать статический +## DOMAIN[server]=pdc.ublinux.ru + +## Клиент для подключения к домену [ *realmd_sssd | realmd_winbind | samba | none ] +## DOMAIN[client]=realmd_sssd + +## Пользователь имеющие права ввода в домен. +## Применяется если необходимо автоматизировать ввод в домен с большого числа ПК, или при работе в режиме полной песочнице где невозможно сохранить +## Пароль кодировать в base64: echo 'password' | base64 +## DOMAIN[admanger]=USER_ADMIN:password_base64' +## DOMAIN[admanger]=Администратор:0J3QvtCy0YvQuV/QlNC10L3RjCEK + +## Группа на контроллере домена, пользователи которой будут иметь права для sudo +## DOMAIN[group:sudoers]=sudoers@ublinux.ru + +## Группа на контроллере домена, пользователи которой будут иметь права для доступа по ssh +## DOMAIN[group:ssh]=sudoers@ublinux.ru + +## Пользователи которым разрешён вход в домен, ограничение +## REALM_PERMIT[user]=user-1@ublinux.ru,user-2@ublinux.ru,ublinux.ru\\user-3 +## REALM_PERMIT[group]=ublinux_group@ublinux.ru +## REALM_PERMIT[user]=user-1@ublinux.ru + +## При методе подключения DOMAIN_CLIENT=realmd_sssd. Задать параметры в /etc/sssd/sssd.conf для домена +## REALM_SSSD[параметр:имя_секции]=значение +## Если "имя_секции" не указан, то по умолчанию используется секция текущего домена = domain/${DOMAIN} +## REALM_SSSD[services:sssd]=nss,pam,pac,ssh +## REALM_SSSD[default_shell:nss]=/bib/bash +## REALM_SSSD[ad_hostname:domain/mydomain.ru]=hostname.mydomain.ru +## Короткие имена пользователей домена "user" | полные "user@domain.ru" [False|*True] +## REALM_SSSD[use_fully_qualified_names]=False +## Строить карту всех пользователей домена на локальном ПК [False|*True] +## REALM_SSSD[ldap_id_mapping]=False +## Перечисление всех пользователей и групп, нагружает сервер домена при большом числе пользователей [*False|True] +## REALM_SSSD[enumerate]=True +## Задать статическое имя PC в домене pc_name.domain.ru +## REALM_SSSD[ad_hostname]=hostname.mydomain.ru +## Обновлять Kerberos .keytab одновременно у sssd и samba [*False|True] +## REALM_SSSD[ad_update_samba_machine_account_password]=True +## Формат файла Kerberos .keytab пользователя /tmp/krb5cc_123456879 +## REALM_SSSD[krb5_ccname_template]=FILE:%d/krb5cc_%U + +## Рабочая группа samba +#SAMBADOMAIN=SMBGROUP + +## 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_uui: 6c90739a-5b5f-3b4a-9b42-11aa89c419bc +## or type_connection: 802-3-ethernet, 802-11-wireless +## optional: +## ipv4.ignore-auto-dns yes +## ipv4.method manual +## ipv4.addr 192.168.1.2/24,10.10.1.5/8 +## ipv4.gateway 192.168.1.1 +## ipv4.dns 192.168.1.1,8.8.8.8 +## wifi.cloned-mac-address random +## ethernet.cloned-mac-address 00:22:68:1c:59:b1 +## ethernet.cloned-mac-address stable +## ethernet.cloned-mac-address random +## NETWORK[Проводное соединение 1]="ipv4.method manual ipv4.addr 192.168.1.2/24,10.10.1.5/8 ipv4.gateway 192.168.1.1 ipv4.dns 192.168.1.1,8.8.8.8" +## NETWORK[Проводное соединение 1]="ethernet.cloned-mac-address 00:22:68:1c:59:b1" +## NETWORK[HotelWifiName]="wifi.cloned-mac-address 70:48:f7:1a:2b:3c" +## NETWORK[all]="+ipv4.dns 192.168.1.1,8.8.8.8 ipv4.ignore-auto-dns yes" + + ## ublinux-server ip addres + ## Адрес сервера по умолчанию + #UBLINUXSERVER=192.168.1.31 + + ## Local network base address + ## Адрес сети по умолчанию + #NETWORKIP=192.168.1. + +## Switch on ipv6 at start on all interfaces +## Включение ipv6 по умолчанию на всех интерфейсах +IPV6=no + +## Серверы времени +## NTPSERVERS=dhcp|default|stop|$VALUE +## =dhcp # Выбрать сервер времени предложенный DHCP +## =default # Выбрать сервера времени по умолчанияю: ntp1.vniiftri.ru ntp2.vniiftri.ru ntp3.vniiftri.ru ntp4.vniiftri.ru ntp21.vniiftri.ru ru.pool.ntp.org +## =stop # Отключить NTP синхронизацию принудительно +## =ntp1.vniiftri.ru,ru.pool.ntp.org # VALUE=Перечень серверов, через ',' или ';' +## не задано # Никаких действий не предпринимается +NTPSERVERS=dhcp + +## Добавить порядок поиска DNS: avahi и winbind (default no) +NSSWITCHAVAHI=yes +NSSWITCHWINBIND=yes + +## Установка системных прокси +## https://user:password@proxy:port/ +#HTTP_PROXY=https://127.0.0.1:8118 +#HTTPS_PROXY=https://127.0.0.1:8118 +#FTP_PROXY=ftp://127.0.0.1:8118 +#NO_PROXY="localhost,127.0.0.1,192.168.1.0/16" + +## Для совместного доступа к интернету, можно включить режим шлюза +## Также необходим при связывании нескольких сетей (wlan0 eth0 eth1 ...) +#ROUTER=yes + +## Iptables firewall exceptions +## Исключения для межсетевого экрана iptables +#IPTABLESOPENPORTSTCP=21,22,30001,6881 +#IPTABLESOPENPORTSUDP=30002,6881 + +## Для работы в режиме сервера, шлюза и точки доступа необходимо открыть доступ из локальной сети +#IPTABLESTRUSTEDIP=192.168.1.0/16 + +## Переправлять весь поток от пользователей через TOR +## Пользователей можно задавать в виде имени, номера и диапазона +## Должна быть включена служба tor! +#TORUSERS=500-999 + + ## Автоматически менять MAC адрес интерфейса при подключении + #MACCHANGE=wlan0 + ## По умолчанию используется алгоритм -e не меняющей тип и производителя + #MACCHANGEROPTIONS='-a' + ## Можно назначить конкретный адрес для интерфейса + #MACCHANGEROPTIONS='--mac=XX:XX:XX:XX:XX:XX' + +################################################################################ +## Настройка безопасности, ограничений +[/etc/ublinux/security] +## Включить поддержку OpenSSL алгоритмов ГОСТ GOST2012-GOST8912-GOST8912 GOST2001-GOST89-GOST89 +## OPENSSL_GOST=yes + +## Отключить виртуальные терминалы и запретить переключение на них из X11 +## ACCESS_DENIED_VTX11=yes|no*|enable|disable|y|n +## ACCESS_DENIED_VTX11=yes + +## Управление доступом в систему, правила разрешения. /etc/security/access.conf +## Предостережение: порядок правил имеет значение. Проверяется последовательно и будет применено первое подходящее правило +## Первыми обрабатываются привила 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 +## 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 +## root:127.0.0.1 ::1 +## superadmin:foo1.bar.org foo2.bar.org .foo.bar.org +## @admins foo:ALL # Пользователю foo и членам администраторов сетевой группы admins разрешен доступ +## @usergroup@@hostgroup:ALL # Членам группы usergroup b uheggs [jcnjd hostgroup разрешен доступ +## DOMAIN.ORG\Domain Admins:ALL # Пользователя входящих в группу "Domain Admins" домена DOMAIN.ORG разрешен доступ +## (wheel):ALL # Членам группы wheel разрешен доступ +## ALL:LOCAL # Разрешить локальным учетным записям вход в систему локально +## ALL EXCEPT root: 192.168.0. # Разрешить всем, кроме root, входить в систему из под указанной маски сети +## ACCESS_ALLOWED_LOGIN="(users)::0 :1 :2 :3 tty2,(wheel):127.0.0.1 ::1,(wheel):ALL" + +## Управление доступом в систему, правила блокировки. /etc/security/access.conf +## ACCESS_DENIED_LOGIN=rule_1,rule_2,rule_n +## Rules: +## root:ALL # Пользователю root должно быть отказано в доступе из всех источников +## root:ALL EXCEPT LOCAL # Запретить root вход через сеть +## wheel:ALL EXCEPT LOCAL .domain.org # Запретить нелокальный вход в привилегированные учетные записи группы wheel +## ALL EXCEPT root:tty1 # Запретить вход без полномочий root на tty1 +## ALL EXCEPT superadmin:ALL # Разрешить доступ только пользователю superadmin и никому больше +## ALL EXCEPT (wheel) shutdown sync:LOCAL # Запретить вход в консоль для всех учетных записей, кроме shutdown, sync и входящих в группу wheel +## ALL EXCEPT (wheel):tty1 tty2 tty3 tty4 tty5 tty6 vc/1 localhost # Запретить вход в консоль tty для всех учетных записей, кроме входящих в группу wheel +## DOMAIN.ORG\Domain Users:ALL # Пользователя входящих в группу "Domain Users" домена DOMAIN.ORG запретить доступ +## ALL:ALL # Всем остальным пользователям запретить доступ +## ACCESS_DENIED_LOGIN="root:ALL,ALL:ALL" + +## Блокировать макросы приложений +## BLOCK_APP_MACROS=yes + +## Отключить влияние SUID бита на привилегии порождаемого процесса всем, кроме указанных исключений в ACCESS_ALLOWED_SUID +## ACCESS_ALLOWED_SUID[ ]=,, +## Find path: +## empty # Если пусто и не задан [], то будут выбраны пути поиска ="/usr/bin /usr/local/bin /usr/local/sbin /home" +## /path_n/subpath # Путь до каталога поиска +## Options: +## -maxdepth 1 # Путь до каталога поиска с уровнем вложения 1 +## Files: +## files # Имена файлов разделённые: , или пробелом или ; +## - # Нет исключений, будут обработаны все файлы +## ACCESS_ALLOWED_SUID[/usr/bin]=vmware-user-suid-wrapper,Xvnc,vncserver-x11,veyon-auth-helper,at,cdda2wav,cdrecord,chage,chfn,chsh,crontab,cu,expiry,firejail,fusermount,fusermount-glusterfs,fusermount3,gpasswd,ksu,mount,mount.cifs,mount.ecryptfs_private,mount.nfs,newgrp,passwd,pkexec,readcd,rscsi,screen-4.9.0,sg,su,sudo,suexec,umount,unix_chkpwd,uucico,uucp,uuname,uustat,uux,uuxqt +## ACCESS_ALLOWED_SUID[/home]=- + +## Отключить влияние SGID бита на привилегии порождаемого процесса всем, кроме указанных исключений в ACCESS_ALLOWED_SGID +## ACCESS_ALLOWED_SGID[ ]=,, +## Find path: +## empty # Если пусто и не задан [], то будут выбраны пути поиска ="/usr/bin /usr/local/bin /usr/local/sbin /home" +## /path_n/subpath # Путь до каталога поиска +## Options: +## -maxdepth 1 # Путь до каталога поиска с уровнем вложения 1 +## Files: +## files # Имена файлов разделённые: , или пробелом или ; +## - # Нет исключений, будут обработаны все файлы +## 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: +## -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 + +## Отключить пользовательские nosuid nodev noexec на смонтированные цели +## MOUNT_ATTR[,]=, +## Source: +## LABEL=