From 815f15fb3abdfdc4f4cb5f96e99ce9826e63d634 Mon Sep 17 00:00:00 2001 From: asmeron Date: Mon, 31 Mar 2025 17:31:35 +0600 Subject: [PATCH] Fix '25-accounts-sync' and rename to ENVIRONMENT --- ublinux/functions | 18 ++++-- ublinux/rc.halt.pre/25-accounts-sync | 89 +++++++++++++++++++++------- ublinux/rc.preinit.d/10-system | 14 ++--- ublinux/templates/ublinux-data.ini | 68 +++++++++++---------- 4 files changed, 125 insertions(+), 64 deletions(-) diff --git a/ublinux/functions b/ublinux/functions index ba9a2ae..fbb9c6c 100755 --- a/ublinux/functions +++ b/ublinux/functions @@ -852,17 +852,21 @@ get_conf_useradd_from_system(){ && SELECT_PASSWORD=${BASH_REMATCH[2]} [[ ${SELECT_PASSWORD} == "!*" && ${SELECT_PLAINPASSWORD} != "x" ]] && SELECT_PASSWORD="${SELECT_PLAINPASSWORD}" - #SELECT_EXTRAGROUPS=$(printf "%s\n" $(${CHROOT} id -nrG ${SELECT_USER}) | sort -u | xargs | tr " " ",") - #SELECT_EXTRAGROUPS=${SELECT_EXTRAGROUPS//,nobody/}; SELECT_EXTRAGROUPS=${SELECT_EXTRAGROUPS//nobody/} - # У id убираем первую группу, это основная группа - - SELECT_EXTRAGROUPS=$(comm --nocheck-order -13 <(printf "%s\n" ${USERGROUPS//,/ } ${DEFAULTGROUP//,/ } | sort -u) <(printf "%s\n" $(${CHROOT} id -nrG ${SELECT_USER} | sed -E 's/([^ ]*) (.*)/\2/') | sort -u) | xargs | tr " " ",") #' + # Все дополнительные группы по умолчанию для всех пользователей ${USERGROUPS} ${DEFAULTGROUP} + SYSTEM_EXTRAGROUPS=$(printf "%s\n" ${USERGROUPS//,/ } ${DEFAULTGROUP//,/ } | sort -u) + # Все дополнительные группы полученные из системы на пользователя ${SELECT_USER} + USER_EXTRAGROUPS=$(printf "%s\n" $(${CHROOT} id -nrG ${SELECT_USER}) | sort -u) + #SELECT_EXTRAGROUPS=$(comm --nocheck-order -13 <(printf "${SYSTEM_EXTRAGROUPS}") <(printf "${USER_EXTRAGROUPS}") | xargs | tr " " ",") + #SELECT_EXTRAGROUPS=$(comm --nocheck-order -13 <(printf "%s\n" ${USERGROUPS//,/ } ${DEFAULTGROUP//,/ } | sort -u) <(printf "%s\n" $(${CHROOT} id -nrG ${SELECT_USER}) | sort -u) | xargs | tr " " ",") #' + # Общие группы из по умолчанию и системные + только уникальные системные исключающие "по умолчанию" + SELECT_EXTRAGROUPS=$(echo -e "$(comm --nocheck-order -12 <(printf "${SYSTEM_EXTRAGROUPS}") <(printf "${USER_EXTRAGROUPS}"))\n$(comm --nocheck-order -13 <(printf "${SYSTEM_EXTRAGROUPS}") <(printf "${USER_EXTRAGROUPS}"))" | sort -u | xargs | tr " " ",") #" [[ -n ${SELECT_HOME} && ${SELECT_HOME} != "${DEFAULT_HOME}/${SELECT_USER}" ]] && SELECT_OPTIONAL+=" --home-dir ${SELECT_HOME}" [[ -n ${SELECT_SHELL} && ${SELECT_SHELL} != ${DEFAULT_SHELL} ]] && SELECT_OPTIONAL+=" --shell ${SELECT_SHELL}" if [[ -z ${NOT_ONLY_CHANGES} && ${SELECT_PASSWORD} == @("!*"|"!") ]]; then # Загрузить файлы которые совпадают в каталогах /usr/lib/sysusers.d/ и /usr/share/ublinux-sysusers/. И загрузить которые уникальные в /usr/lib/sysusers.d/ local DATA_SYSUSERS=$(cat \ $(comm --nocheck-order -12 <(cd /usr/lib/sysusers.d/ && ls -v1 *.conf | sed "s/\.conf//g") <(cd /usr/share/ublinux-sysusers/ && ls -v1 *.sysusers | sed "s/\.sysusers//g") | sed 's|^|/usr/share/ublinux-sysusers/|;s|$|.sysusers|') \ + <(echo) \ $(comm --nocheck-order -23 <(cd /usr/lib/sysusers.d/ && ls -v1 *.conf | sed "s/\.conf//g") <(cd /usr/share/ublinux-sysusers/ && ls -v1 *.sysusers | sed "s/\.sysusers//g") | sed 's|^|/usr/lib/sysusers.d/|;s|$|.conf|') \ ) local DATA_SYSUSERS_GROUP DATA_SYSUSERS_GECOS DATA_SYSUSERS_HOME DATA_SYSUSERS_SHELL @@ -1047,6 +1051,7 @@ get_conf_groupadd_from_system(){ # Загрузить файлы которые совпадают в каталогах /usr/lib/sysusers.d/ и /usr/share/ublinux-sysusers/. И загрузить которые уникальные в /usr/lib/sysusers.d/ local DATA_SYSUSERS=$(cat \ $(comm --nocheck-order -12 <(cd /usr/lib/sysusers.d/ && ls -v1 *.conf | sed "s/\.conf//g") <(cd /usr/share/ublinux-sysusers/ && ls -v1 *.sysusers | sed "s/\.sysusers//g") | sed 's|^|/usr/share/ublinux-sysusers/|;s|$|.sysusers|') \ + <(echo) \ $(comm --nocheck-order -23 <(cd /usr/lib/sysusers.d/ && ls -v1 *.conf | sed "s/\.conf//g") <(cd /usr/share/ublinux-sysusers/ && ls -v1 *.sysusers | sed "s/\.sysusers//g") | sed 's|^|/usr/lib/sysusers.d/|;s|$|.conf|') \ ) # Выбираем пользователей которые входят в выбранную группу из systemd sysusers @@ -1069,7 +1074,7 @@ get_conf_groupadd_from_system(){ [[ ${RETURN_DATA_SYSUSERS_MEMBERS} == "yes" && ${RETURN_DATA_SYSUSERS_GID} == "yes" ]] && return 0 # Если в systemd sysusers MEMBERS совпадает с системным, а GID не указан (динамический), то выход # Если не показывать такие группы, то пожно ложно не вывести, если вдруг намеренно пользоваель указал GID у динамической группы - # Из за вохможной ошибки, отключаю + # Из за возможной ошибки, отключаю #[[ ${RETURN_DATA_SYSUSERS_MEMBERS} == "yes" && -z ${RETURN_DATA_SYSUSERS_GID} ]] && return 0 fi echo "GROUPADD[${SELECT_GROUP}]='${SELECT_MEMBERS}:${SELECT_GID}:${SELECT_OPTIONAL}:${SELECT_ADMINISTRATORS}:${SELECT_PASSWORD}'" @@ -1475,6 +1480,7 @@ ubconfig_exec_system(){ ;; "[${SYSCONF}/system]"|"[system]") case "${NAME_VAR}" in + ENVIRONMENT) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/10-system exec_environment ;; HOSTNAME) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/30-network-hostname ;; SERVICESSTART|SERVICESNOSTART|SERVICESMASK|SERVICESUNMASK|\ SERVICES_ENABLE|SERVICES_DISABLE|SERVICES_MASK|SERVICES_UNMASK) diff --git a/ublinux/rc.halt.pre/25-accounts-sync b/ublinux/rc.halt.pre/25-accounts-sync index 3751da8..3818866 100755 --- a/ublinux/rc.halt.pre/25-accounts-sync +++ b/ublinux/rc.halt.pre/25-accounts-sync @@ -36,18 +36,64 @@ SOURCE=${SYSCONF}/users; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null ## shutdown # При завершении работы системы синхронизировать указанного пользователя в системе с глобальной конфигурацией ## USERADD_SYNC[superadmin]=boot,shutdown exec_useradd_sync(){ + remove_ubconfig(){ + # Удалить пользователей из глобальной конфигурации + local PARAM="$1" + local FILE_LOGINDEFS="${ROOTFS}/etc/login.defs" + if [[ ${PARAM} == '@all' ]]; then + # Удалить всех пользователей из глобальной конфигурации + ${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] USERADD[*] USERSHADOW[*] + elif [[ ${PARAM} == '@users' ]]; then + # Удалить пользователей 1000<=UID<=6000 из глобальной конфигурации + # Все пользователи кроме системных + local UID_MIN=$([[ $(< "${FILE_LOGINDEFS}") =~ [^#[^:blank:]]*UID_MIN[[:blank:]]+([[:digit:]]+) ]]; echo -n "${BASH_REMATCH[1]}") + local UID_MAX=$([[ $(< "${FILE_LOGINDEFS}") =~ [^#[^:blank:]]*UID_MAX[[:blank:]]+([[:digit:]]+) ]]; echo -n "${BASH_REMATCH[1]}") + [[ -n ${!USERADD[@]} ]] && while IFS= read -u3 SELECT_USER; do + IFS=':' read -u4 SELECT_GECOS SELECT_UID NULL 4<<< ${USERADD[${SELECT_USER}]} + if [[ ${SELECT_UID} == @(""|"x"|"X") ]] || [[ ${SELECT_UID} -ge ${UID_MIN} && ${SELECT_UID} -le ${UID_MAX} ]]; then + ${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] USERADD[${SELECT_USER}] USERSHADOW[${SELECT_USER}] + fi + done 3< <(printf "%s\n" "${!USERADD[@]}") + elif [[ ${PARAM} == '@systems' ]]; then + # Удалить пользователей 500<=UID<=999 из глобальной конфигурации + # Пользователи системные + local UID_MIN_SYS=$([[ $(< "${FILE_LOGINDEFS}") =~ [^#[^:blank:]]*SYS_UID_MIN[[:blank:]]+([[:digit:]]+) ]]; echo -n "${BASH_REMATCH[1]}") + local UID_MAX_SYS=$([[ $(< "${FILE_LOGINDEFS}") =~ [^#[^:blank:]]*SYS_UID_MAX[[:blank:]]+([[:digit:]]+) ]]; echo -n "${BASH_REMATCH[1]}") + [[ -n ${!USERADD[@]} ]] && while IFS= read -u3 SELECT_USER; do + IFS=':' read -u4 SELECT_GECOS SELECT_UID NULL 4<<< ${USERADD[${SELECT_USER}]} + if [[ ${SELECT_UID} != @(""|"x"|"X") && ${SELECT_UID} -ge ${UID_MIN_SYS} && ${SELECT_UID} -le ${UID_MAX_SYS} ]]; then + ${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] USERADD[${SELECT_USER}] USERSHADOW[${SELECT_USER}] + fi + done 3< <(printf "%s\n" "${!USERADD[@]}") + elif [[ ${PARAM} =~ ^([[:digit:]]+)'-'*([[:digit:]]*)$ ]]; then + # Удалить пользователей X<=UID<=Y из глобальной конфигурации + local UID_MIN=${BASH_REMATCH[1]} + local UID_MAX=${BASH_REMATCH[2]} + [[ -n ${UID_MAX} ]] || UID_MAX=${UID_MIN} + [[ -n ${!USERADD[@]} ]] && while IFS= read -u3 SELECT_USER; do + IFS=':' read -u4 SELECT_GECOS SELECT_UID NULL 4<<< ${USERADD[${SELECT_USER}]} + if [[ ${SELECT_UID} != @(""|"x"|"X") && ${SELECT_UID} -ge ${UID_MIN} && ${SELECT_UID} -le ${UID_MAX} ]]; then + ${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] USERADD[${SELECT_USER}] USERSHADOW[${SELECT_USER}] + fi + done 3< <(printf "%s\n" "${!USERADD[@]}") + else + # Входящий параметр - имя пользователя + ${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] USERADD[${PARAM}] USERSHADOW[${PARAM}] + fi + } set_ubconfig(){ - local PARAM=$1 - local GET_USERADD=$(get_conf_useradd_from_system ${PARAM}) - if [[ -n ${GET_USERADD} ]]; then - eval ${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] ${GET_USERADD} + local PARAM="$1" + local GET_USERADD=$(get_conf_useradd_from_system "${PARAM}") + if [[ ${GET_USERADD} != "" ]]; then eval ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] ${GET_USERADD} + local GET_USERSHADOW=$(get_conf_usershadow_from_system ${PARAM}) +# TODO: Если задан диапазон пользователей, пример 0-999, то GET_USERSHADOW будет содержать всех пользователей в этом диапазоте +# А нужно выбрать только пользователей которые содержатся в GET_USERADD + if [[ ${GET_USERSHADOW} != "" ]]; then + eval ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] ${GET_USERSHADOW} + fi fi - local GET_USERSHADOW=$(get_conf_usershadow_from_system ${PARAM}) - if [[ -n ${GET_USERSHADOW} ]]; then - eval ${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] ${GET_USERSHADOW} - eval ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] ${GET_USERSHADOW} - fi + } [[ $1 == @("set="|"set+="|"set++="|"set-="|"set--="|"remove") ]] && COMMAND=$1 && shift [[ -n ${COMMAND} ]] || COMMAND="set=" @@ -57,28 +103,31 @@ exec_useradd_sync(){ declare -A USERADD_SYNC [[ ${PARAM%%=*} =~ [!\$%\&()*+,./:\;\<\=\>?\@\^\{|\}~-] ]] || eval "${PARAM%%=*}=\${PARAM#*=}" fi - # Если синхронизируем пользователей по шаблону, то удалим всех пользователей из глобальной конфигурации - if [[ ${USERADD_SYNC} =~ 'shutdown' ]]; then - ${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] USERADD[*] - ${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] USERSHADOW[*] - fi while IFS= read -u3 SELECT_USERADD_SYNC; do if [[ ${SELECT_USERADD_SYNC} == 'shutdown@all' ]]; then + remove_ubconfig "@all" set_ubconfig "@all" elif [[ ${SELECT_USERADD_SYNC} == 'shutdown@users' ]]; then + remove_ubconfig "@users" set_ubconfig "@users" elif [[ ${SELECT_USERADD_SYNC} == 'shutdown@systems' ]]; then + remove_ubconfig "@systems" set_ubconfig "@systems" - elif [[ ${SELECT_USERADD_SYNC} =~ ^'shutdown@'(([[:digit:]]+)'-'*([[:digit:]]*))$ ]]; then - set_ubconfig "${BASH_REMATCH[1]}" elif [[ ${SELECT_USERADD_SYNC} == 'shutdown' ]]; then + remove_ubconfig "@users" + remove_ubconfig "@systems" set_ubconfig + elif [[ ${SELECT_USERADD_SYNC} =~ ^'shutdown@'(([[:digit:]]+)'-'*([[:digit:]]*))$ ]]; then + local LIST_USERS="${BASH_REMATCH[1]}" + remove_ubconfig "${LIST_USERS}" + set_ubconfig "${LIST_USERS}" fi done 3<<< "${USERADD_SYNC//@(,|;)/$'\n'}" if [[ "$(declare -p USERADD_SYNC 2>/dev/null)" == "declare -A"* ]]; then - while IFS= read -u3 SELECT_USER; do + [[ -n ${!USERADD_SYNC[@]} ]] && while IFS= read -u3 SELECT_USER; do # В массиве 0 запись игнорируем, т.к. это параметр не ассоциативного массива if [[ ${SELECT_USER} != 0 && ${USERADD_SYNC[${SELECT_USER}]} =~ 'shutdown' ]]; then + remove_ubconfig "${SELECT_USER}" set_ubconfig "${SELECT_USER}" fi done 3< <(printf "%s\n" "${!USERADD_SYNC[@]}") @@ -101,9 +150,9 @@ exec_useradd_sync(){ ## GROUPADD_SYNC[users]='shutdown' exec_groupadd_sync(){ set_ubconfig(){ - local PARAM=$1 - local GET_GROUPADD=$(get_conf_groupadd_from_system ${PARAM}) - if [[ -n ${GET_GROUPADD} ]]; then + local PARAM="$1" + local GET_GROUPADD=$(get_conf_groupadd_from_system "${PARAM}") + if [[ ${GET_GROUPADD} != "" ]]; then eval ${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] ${GET_GROUPADD} eval ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] ${GET_GROUPADD} fi diff --git a/ublinux/rc.preinit.d/10-system b/ublinux/rc.preinit.d/10-system index 124122b..b663812 100755 --- a/ublinux/rc.preinit.d/10-system +++ b/ublinux/rc.preinit.d/10-system @@ -59,11 +59,11 @@ exec_udevrules(){ rm -f "${ROOTFS}/etc/udev/rules.d/${FILE_UDEV_70##*/}" fi } -exec_enviroment(){ +exec_environment(){ ## Установить переменные окружения глобальные и пользовательские -## ENVIROMENT[system:]= -## ENVIROMENT[profile:]= -## ENVIROMENT[:]= +## ENVIRONMENT[system:]= +## ENVIRONMENT[profile:]= +## ENVIRONMENT[:]= ## system:<--># Установить глобальные переменные окружения systemd в /run/environment.d/99-ubconfig.conf ## profile:<-># Установить переменные окружения только для оболочек входа совместимые Bourne shell в /etc/profile.d/99-ubconfig.conf ## :<--># Имя пользователя для которого будет установлена переменная окружения systemd в домашнем каталоге пользователя ~/.config/environment.d/99-ubconfig.conf @@ -77,10 +77,10 @@ exec_enviroment(){ [[ -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 + if [[ -n ${ENVIRONMENT[@]} ]]; then + for SELECT in "${!ENVIRONMENT[@]}"; do IFS=: read -r TYPE VARIABLE OTHER <<< ${SELECT} - VALUE=${ENVIROMENT[${SELECT}]} + VALUE=${ENVIRONMENT[${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} diff --git a/ublinux/templates/ublinux-data.ini b/ublinux/templates/ublinux-data.ini index bef5192..62b4188 100644 --- a/ublinux/templates/ublinux-data.ini +++ b/ublinux/templates/ublinux-data.ini @@ -4,6 +4,7 @@ # Файл ublinux.ini рекомендуется использовать в папке /ublinux-data/ # Если вы работаете в режиме песочницы и у вас отсутствует папка # /ublinux-data/, вы можете перенести его в папку /ublinux/ +# # We recommend using the ublinux.ini file in the /ublinux-data/ folder # If you are working in sandbox mode and you don't have the /ublinux-data/ # folder, you can move it to the /ublinux/ folder @@ -12,34 +13,39 @@ # 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/] запустит с башем -# # [.] выполнить как часть initramfs -# # [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). Если указать .* то будут удалены все строки +# Краткое описание файла конфигурации +# [/path/filename] # Выбор файла для изменений, если файла нет, он будет создан с правами по умолчанию +# [/path/filename]a+x # Выбор файла для изменений, если файла нет, он будет создан с правами a+x +# [/path/filename]755 # Выбор файла для изменений, если файла нет, он будет создан с правами 755 +# [/path/filename] [/bin/bash] # Необязательный параметр во второй части в квадратных скобках означает "запустить с", возможные варианты: +# [/bin/bash] # Запустит с башем +# [.] # Выполнить как часть initramfs +# [chroot . ] # Сделать чрут в sysroot и выполнить там +# [/path/filename]a+x [/bin/bash] +# [/path/filename]a+x [.] +# [/path/filename]a+x [chroot .] +# +# = # 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). Если указать .* то будут удалены все строки ################################################################################ # Примеры: # ubconfig set [/etc/pacman.d/ub-mirrorlist] '|Server=http://repo.ublinux.ru/2405/$repo/$arch' '|Server=https://repo.ublinux.ru/2405/$repo/$arch' # ################################################################################ -# Поддерживаемые параметры Grub -# services_enable=item_1,item_2,...,item_n # Перечень сервисов/юнитов которые должны быть запущены, разделитель (,) или (;). Пример: services_enable=sbm,nmb,cockpit.socket -# services_disable=item_1,item_2,...,item_n # Перечень сервисов/юнитов которые должны быть выключены, разделитель (,) или (;). Пример: services_disable=sbm,nmb,cockpit.socket -# useradd=;...; +# Поддерживаемые параметры Grub: +# services_enable=item_1,item_2,...,item_n # Перечень сервисов/юнитов которые должны быть запущены, разделитель (,) или (;). Пример: services_enable=sbm,nmb,cockpit.socket +# services_disable=item_1,item_2,...,item_n # Перечень сервисов/юнитов которые должны быть выключены, разделитель (,) или (;). Пример: services_disable=sbm,nmb,cockpit.socket +# useradd=;...; # # Перечень пользователей, см. USERADD= -# # Пример: useradd=admin:::::pass;admin2:Administrator-2:1010:admin2:wheel,users:pass2 -# save_clean=all|changes,rootcopy,homes # Очистить изменения пользователя, см. SAVE_CLEAN= +# # Пример: useradd=admin:::::pass;admin2:Administrator-2:1010:admin2:wheel,users:pass2 +# save_clean=all|changes,rootcopy,homes # Очистить изменения пользователя, см. SAVE_CLEAN= # ################################################################################ @@ -101,9 +107,9 @@ VERSION= #APPARMOR=yes ## Установить переменные окружения глобальные и пользовательские -## ENVIROMENT[system:]= -## ENVIROMENT[profile:]= -## ENVIROMENT[:]= +## ENVIRONMENT[system:]= +## ENVIRONMENT[profile:]= +## ENVIRONMENT[:]= ## 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 ## : # Имя пользователя для которого будет установлена переменная окружения systemd в домашнем каталоге пользователя ~/.config/environment.d/ubconfig-user-10-system.conf @@ -112,18 +118,18 @@ VERSION= ## ## Перенос временных файлов КДЕ4 в отдельную папку. Убирает притормаживание главного меню в КДЕ4 ## Создать каталог: mkdir -p /mnt/livedata/ublinux-data/tmp -## ENVIROMENT[profile:KDEVARTMP]="/mnt/livedata/ublinux-data/tmp" +## ENVIRONMENT[profile:KDEVARTMP]="/mnt/livedata/ublinux-data/tmp" ## ## Если на видеокарте nvidia наблюдается эффект разрыва окон, то есть 2 варианта борьбы с этим ## Выберите один из вариантов, не включайте сразу 2 переменные сразу ## 1 вариант. Может снизить производительность в играх -## ENVIROMENT[profile:__GL_YIELD]="USLEEP" +## ENVIRONMENT[profile:__GL_YIELD]="USLEEP" ## 2 вариант. Не на каждой видеокарте может сработать -## ENVIROMENT[profile:KWIN_TRIPLE_BUFFER]=1 +## ENVIRONMENT[profile:KWIN_TRIPLE_BUFFER]=1 ## -#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" +#ENVIRONMENT[system:VAR_SYS]="my value for system" +#ENVIRONMENT[profile:VAR_PROFILE]="my value for all users" +#ENVIRONMENT[superadmin:VAR_USER]="my value for select user" ## Тип используемого профиля конфигурации PAM авторизации, authselect. Профили /usr/share/authselect/default ## AUTHPAM=|disable|no|off