master v2.67
Dmitry Razumov 2 years ago
parent 0eedabf42c
commit 468b47ff29
Signed by: asmeron
GPG Key ID: 50BC1DB583B79706

@ -912,14 +912,11 @@ ubconfig_exec_system(){
;; ;;
"[${SYSCONF}/network]"|"[network]") "[${SYSCONF}/network]"|"[network]")
case "${NAME_VAR}" in case "${NAME_VAR}" in
DOMAIN) export PARENT="${PKGNAME}" DOMAIN) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/23-realmd domain_live "${COMMAND_MODE_VAR}" ;;
if [[ "${COMMAND_MODE_VAR}" =~ 'set' ]]; then DOMAIN\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/23-realmd domain_configure_live "${COMMAND_MODE_VAR}" ;;
${ROOTFS}/usr/bin/ubdomain-client -q configure REALM_SSSD\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/23-realmd domain_configure_live "${COMMAND_MODE_VAR}" ;;
elif [[ "${COMMAND_MODE_VAR}" =~ 'remove' ]]; then REALM_PERMIT_USER) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/23-realmd domain_configure_live "${COMMAND_MODE_VAR}" ;;
${ROOTFS}/usr/bin/ubdomain-client -q unconfigure REALM_PERMIT_GROUP) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/23-realmd domain_configure_live "${COMMAND_MODE_VAR}" ;;
fi
;;
'DOMAIN[server]') true ;;
NTPSERVERS) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/21-ntp "${COMMAND_MODE_VAR}" ;; NTPSERVERS) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/21-ntp "${COMMAND_MODE_VAR}" ;;
PROXY_SYSTEM\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/31-network-proxy-system ;; PROXY_SYSTEM\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.preinit.d/31-network-proxy-system ;;
*) NO_FIND_EXCUTE=1 ;; *) NO_FIND_EXCUTE=1 ;;
@ -943,9 +940,9 @@ ubconfig_exec_system(){
;; ;;
"[${SYSCONF}/kiosk]"|"[kiosk]") "[${SYSCONF}/kiosk]"|"[kiosk]")
case "${NAME_VAR}" in case "${NAME_VAR}" in
XFCE4_KIOSK\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.post.d/8-kiosk-xfce4-kioskrc ;; XFCE4_KIOSK\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.post.d/18-kiosk-xfce4-kioskrc ;;
XFCE4_KIOSK_USER_LOCKED) ${ROOTFS}/usr/lib/ublinux/rc.post.d/8-kiosk-xfce4-kioskrc ;; XFCE4_KIOSK_USER_LOCKED) ${ROOTFS}/usr/lib/ublinux/rc.post.d/18-kiosk-xfce4-kioskrc ;;
XFCE4_KIOSK_USER_UNLOCKED) ${ROOTFS}/usr/lib/ublinux/rc.post.d/8-kiosk-xfce4-kioskrc ;; XFCE4_KIOSK_USER_UNLOCKED) ${ROOTFS}/usr/lib/ublinux/rc.post.d/18-kiosk-xfce4-kioskrc ;;
*) NO_FIND_EXCUTE=1 ;; *) NO_FIND_EXCUTE=1 ;;
esac esac
;; ;;

@ -33,14 +33,75 @@ SOURCE=${SYSCONF}/network; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
# sed -i '/\[global\]/ s/$/'"\n realm = ${KERBEROS_REALM}\n security = ADS\n password server = ${ADSERVER}"/ etc/samba/smb.conf # sed -i '/\[global\]/ s/$/'"\n realm = ${KERBEROS_REALM}\n security = ADS\n password server = ${ADSERVER}"/ etc/samba/smb.conf
# #
# #
#if [[ -n "${SAMBADOMAIN}" ]]; then #if [[ -n "${SAMBADOMAIN}" ]]; then
# sed -i s/"workgroup = .*"/"workgroup = ${SAMBADOMAIN}"/ etc/samba/smb.conf # sed -i s/"workgroup = .*"/"workgroup = ${SAMBADOMAIN}"/ etc/samba/smb.conf
# sed -i s/"^NT_DOMAIN=.*"/"NT_DOMAIN=${SAMBADOMAIN}"/ etc/ntlmaps.cfg # sed -i s/"^NT_DOMAIN=.*"/"NT_DOMAIN=${SAMBADOMAIN}"/ etc/ntlmaps.cfg
#fi #fi
exec_domain(){
if [[ -n ${DOMAIN} && ${DOMAIN[client]} == "realmd_sssd" ]]; then if [[ -n ${DOMAIN} && ${DOMAIN[client]} == "realmd_sssd" ]]; then
${CMD_CHROOT} /usr/bin/ubdomain-client --quiet configure
if [[ -f ${ROOTFS}/etc/krb5.keytab ]]; then if [[ -f ${ROOTFS}/etc/krb5.keytab ]]; then
[[ -f ${ROOTFS}/etc/krb5.conf && -f ${ROOTFS}/etc/sssd/sssd.conf ]] || ${CMD_CHROOT} /usr/bin/ubdomain-client -q configure 2>/dev/null #[[ -f ${ROOTFS}/etc/krb5.conf && -f ${ROOTFS}/etc/sssd/sssd.conf ]] || ${CMD_CHROOT} /usr/bin/ubdomain-client --quite configure 2>/dev/null
[[ -f ${ROOTFS}/usr/lib/systemd/system/sssd.service ]] && ln -sf /usr/lib/systemd/system/sssd.service ${ROOTFS}/etc/systemd/system/multi-user.target.wants/sssd.service [[ -f ${ROOTFS}/usr/lib/systemd/system/sssd.service ]] && ln -sf /usr/lib/systemd/system/sssd.service ${ROOTFS}/etc/systemd/system/multi-user.target.wants/sssd.service
fi fi
elif [[ -n ${DOMAIN} && ${DOMAIN[client]} == "realmd_winbind" ]]; then
true
elif [[ -n ${DOMAIN} && ${DOMAIN[client]} == "samba" ]]; then
true
fi
}
domain_live(){
# Если выполнение в initrd, то выход
[[ -z ${ROOTFS} ]] || return 0
[[ $1 == @("set="|"set+="|"set++="|"set-="|"set--="|"remove") ]] && COMMAND=$1 && shift
[[ -n ${COMMAND} ]] || COMMAND="set="
local PARAM="$@"
if [[ -n ${PARAM} ]]; then
unset DOMAIN
declare -A DOMAIN
[[ ${PARAM%%=*} =~ [!\$%\&()*+,./:\;\<\=\>?\@\^\{|\}~-] ]] || eval "${PARAM%%=*}=\${PARAM#*=}"
fi
if [[ ${COMMAND} == @("set="|"set+="|"set++=") ]]; then
[[ -z ${DOMAIN} ]] && return 0
${ROOTFS}/usr/bin/ubdomain-client configure
elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]]; then
${ROOTFS}/usr/bin/ubdomain-client unconfigure
fi
}
domain_configure_live(){
# Если выполнение в initrd, то выход
[[ -z ${ROOTFS} ]] || return 0
[[ $1 == @("set="|"set+="|"set++="|"set-="|"set--="|"remove") ]] && COMMAND=$1 && shift
[[ -n ${COMMAND} ]] || COMMAND="set="
local PARAM="$@"
if [[ ${COMMAND} == @("set="|"set+="|"set++=") ]]; then
[[ -z ${DOMAIN} ]] && return 0
${ROOTFS}/usr/bin/ubdomain-client configure
elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]]; then
[[ -z ${DOMAIN} ]] && return 0
${ROOTFS}/usr/bin/ubdomain-client configure
fi
}
################
##### 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
FUNCTION=
while [[ $# -gt 0 ]]; do
[[ -z ${1} ]] || { declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"; }
shift
done
eval ${FUNCTION#*; }
fi fi

@ -25,6 +25,7 @@ SOURCE=${SYSCONF}/network; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
set_hostname(){ set_hostname(){
local SET_HOSTNAME=$1 local SET_HOSTNAME=$1
local SET_DOMAIN=$2
# Удалить предыдущее имя хоста # Удалить предыдущее имя хоста
OLD_HOSTNAME=$(tail -1 ${ROOTFS}/etc/hostname); OLD_HOSTNAME=${OLD_HOSTNAME%%.*} OLD_HOSTNAME=$(tail -1 ${ROOTFS}/etc/hostname); OLD_HOSTNAME=${OLD_HOSTNAME%%.*}
sed -E -e "s/\s${OLD_HOSTNAME}(\s|$)/ /g" -e "s/\s${OLD_HOSTNAME}(\s|$)/ /g" -e "s/\s${OLD_HOSTNAME}\.[-0-9a-zA-Z.]*(\s|$)/ /g" -e "/^\s*[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\s*$/d" -i ${ROOTFS}/etc/hosts sed -E -e "s/\s${OLD_HOSTNAME}(\s|$)/ /g" -e "s/\s${OLD_HOSTNAME}(\s|$)/ /g" -e "s/\s${OLD_HOSTNAME}\.[-0-9a-zA-Z.]*(\s|$)/ /g" -e "/^\s*[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\s*$/d" -i ${ROOTFS}/etc/hosts
@ -39,7 +40,7 @@ set_hostname(){
echo "${SET_HOSTNAME}" > ${ROOTFS}/etc/hostname echo "${SET_HOSTNAME}" > ${ROOTFS}/etc/hostname
if [[ -n ${DOMAIN} ]]; then if [[ -n ${SET_DOMAIN} ]]; then
HOSTS_3="127.0.0.1 ${SET_HOSTNAME}" HOSTS_3="127.0.0.1 ${SET_HOSTNAME}"
grep -q "^\s*${HOSTS_3}\s*$" ${ROOTFS}/etc/hosts || echo "${HOSTS_3}" >> ${ROOTFS}/etc/hosts grep -q "^\s*${HOSTS_3}\s*$" ${ROOTFS}/etc/hosts || echo "${HOSTS_3}" >> ${ROOTFS}/etc/hosts
@ -47,8 +48,8 @@ set_hostname(){
ls -d ${ROOTFS}/home/*@*/ 2>/dev/null | xargs -ri basename {} | xargs -ri touch ${ROOTFS}/var/lib/AccountsService/users/{} ls -d ${ROOTFS}/home/*@*/ 2>/dev/null | xargs -ri basename {} | xargs -ri touch ${ROOTFS}/var/lib/AccountsService/users/{}
## Домен для сервера dhcpd ## Домен для сервера dhcpd
if [[ -f ${ROOTFS}/etc/dhcpd.conf ]]; then if [[ -f ${ROOTFS}/etc/dhcpd.conf ]]; then
sed s/"option domain-name .*"/"option domain-name \"${DOMAIN}\";"/g -i ${ROOTFS}/etc/dhcpd.conf sed s/"option domain-name .*"/"option domain-name \"${SET_DOMAIN}\";"/g -i ${ROOTFS}/etc/dhcpd.conf
sed s/"option nis-domain .*"/"option nis-domain \"${DOMAIN}\";"/g -i ${ROOTFS}/etc/dhcpd.conf sed s/"option nis-domain .*"/"option nis-domain \"${SET_DOMAIN}\";"/g -i ${ROOTFS}/etc/dhcpd.conf
fi fi
## Имя хоста записать в конфиг с суфиксом домена ## Имя хоста записать в конфиг с суфиксом домена
[[ -f ${ROOTFS}/etc/ublinux/system ]] && { grep -q "^\s*HOSTNAME=${SET_HOSTNAME}\s*$" ${ROOTFS}/etc/ublinux/system || sed "s/^\s*HOSTNAME=.*/HOSTNAME=${SET_HOSTNAME}/g" -i ${ROOTFS}/etc/ublinux/system; } [[ -f ${ROOTFS}/etc/ublinux/system ]] && { grep -q "^\s*HOSTNAME=${SET_HOSTNAME}\s*$" ${ROOTFS}/etc/ublinux/system || sed "s/^\s*HOSTNAME=.*/HOSTNAME=${SET_HOSTNAME}/g" -i ${ROOTFS}/etc/ublinux/system; }
@ -57,15 +58,16 @@ set_hostname(){
set_hostname_live(){ set_hostname_live(){
local SET_HOSTNAME=$1 local SET_HOSTNAME=$1
hostnamectl set-hostname ${SET_HOSTNAME} local SET_DOMAIN=$2
hostname "${SET_HOSTNAME}"
hostnamectl set-hostname "${SET_HOSTNAME}"
## Если меняется имя хоста в запущенных X, то новое имя добавляем в xauth ## Если меняется имя хоста в запущенных X, то новое имя добавляем в xauth
who | grep "(:[0-9.]*)$" | cut -d' ' -f1 | xargs -ri su {} -c "xauth list | sed 's|^.*/|su {} -c \\\\\"xauth add ${SET_HOSTNAME}/|;s|$|\\\\\"|'" | xargs -ri sh -c '{}' who | grep "(:[0-9.]*)$" | cut -d' ' -f1 | xargs -ri su {} -c "xauth list | sed 's|^.*/|su {} -c \\\\\"xauth add ${SET_HOSTNAME}/|;s|$|\\\\\"|'" | xargs -ri sh -c '{}'
# Если указан домен, то задаём переменную DOMAIN= # Если указан задан домен в имени хоста и не соответствует DOMAIN, то задаём переменную DOMAIN=
# Примечание: Имя сервера контроллера домена включает постфикс домена, но в домен не входит [[ ${DOMAIN} != ${SET_DOMAIN} ]] && ubconfig set network DOMAIN="${SET_DOMAIN}"
# Примечание: Невозможно определить, какой уровень именно домен, следовательно отключаю # При условии, что в имене хоста домен указан отличный от DOMAIN
#[[ ${SET_HOSTNAME} != ${SET_HOSTNAME#*.} ]] && DOMAIN="${SET_HOSTNAME#*.}" [[ ${HOSTNAME} != ${SET_HOSTNAME} ]] && ubconfig --target global [system] HOSTNAME="${SET_HOSTNAME}"
#[[ ${DOMAIN} != "" ]] && ubconfig -q set network DOMAIN="${DOMAIN}"
} }
exec_hostname(){ exec_hostname(){
@ -74,14 +76,16 @@ exec_hostname(){
[[ ${KERNEL_HOSTNAME} == "" ]] || HOSTNAME=${KERNEL_HOSTNAME} [[ ${KERNEL_HOSTNAME} == "" ]] || HOSTNAME=${KERNEL_HOSTNAME}
[[ -z ${HOSTNAME} ]] && HOSTNAME="${DEFAULT_HOSTNAME}" [[ -z ${HOSTNAME} ]] && HOSTNAME="${DEFAULT_HOSTNAME}"
if [[ -n ${DOMAIN} ]]; then if [[ -n ${DOMAIN} ]]; then
HOSTNAME="${HOSTNAME%%.*}.${DOMAIN}" SET_HOSTNAME="${HOSTNAME%%.*}.${DOMAIN}"
SET_DOMAIN=${DOMAIN}
else else
# Если в имени хоста SET_HOSTNAME=${HOSTNAME}
[[ ${SET_HOSTNAME} != ${SET_HOSTNAME#*.} ]] && DOMAIN="${SET_HOSTNAME#*.}" # Если в имени хоста указан домен, то зададим на сеанс DOMAIN
[[ ${HOSTNAME} != ${HOSTNAME#*.} ]] && SET_DOMAIN="${HOSTNAME#*.}"
fi fi
set_hostname ${HOSTNAME} set_hostname "${SET_HOSTNAME}" "${SET_DOMAIN}"
# Если выполнение в initrd, то пропустить # Если выполнение в initrd, то пропустить
[[ -n ${ROOTFS} ]] || set_hostname_live ${HOSTNAME} [[ -n ${ROOTFS} ]] || set_hostname_live "${SET_HOSTNAME}" "${SET_DOMAIN}"
} }
################ ################

@ -744,7 +744,7 @@ GRUB_BOOT_SILENT="splash"
## Отключить автопоиск сервера контроллера домена/kerberos и задать статический ## Отключить автопоиск сервера контроллера домена/kerberos и задать статический
## DOMAIN[server]=<domain_server> ## DOMAIN[server]=<domain_server>
## <domain_server> # DNS имя сервера домена ## <domain_server> # DNS имя сервера домена
## DOMAIN[server]=pdc.ublinux.ru ## DOMAIN[server]=pdc.ubdc.ru
## Клиент для подключения к домену ## Клиент для подключения к домену
## DOMAIN[client]=<client> ## DOMAIN[client]=<client>
@ -762,23 +762,27 @@ GRUB_BOOT_SILENT="splash"
## DOMAIN[admanger]=<USER_ADMIN>:<PASSWORD_BASE64>' ## DOMAIN[admanger]=<USER_ADMIN>:<PASSWORD_BASE64>'
## DOMAIN[admanger]=Администратор:0J3QvtCy0YvQuV/QlNC10L3RjCEK ## DOMAIN[admanger]=Администратор:0J3QvtCy0YvQuV/QlNC10L3RjCEK
## Группа на контроллере домена, пользователи которой будут иметь права для sudo ## TODO: Группа на контроллере домена, пользователи которой будут иметь права для sudo
## DOMAIN[group:sudoers]=sudoers@ublinux.ru ## DOMAIN[group:sudoers]=sudoers@ubdc.ru
## Группа на контроллере домена, пользователи которой будут иметь права для доступа по ssh ## TODO: Группа на контроллере домена, пользователи которой будут иметь права для доступа по ssh
## DOMAIN[group:ssh]=sudoers@ublinux.ru ## DOMAIN[group:ssh]=sudoers@ubdc.ru
## Ограничить пользователей, которым разрешён вход в домен ## Ограничить пользователей.групп, которым разрешён вход в домен. Всем остальным запрещён. Только access_provider=simple
## REALM_PERMIT[user]=user-1@ublinux.ru,user-2@ublinux.ru,ublinux.ru\\user-3 ## REALM_PERMIT_USER=user-1@ubdc.ru,user-2@ubdc.ru
## REALM_PERMIT[group]=ublinux_group@ublinux.ru ## REALM_PERMIT_GROUP="пользователи домена@ubdc.ru"
## REALM_PERMIT[user]=user-1@ublinux.ru
## https://web.mit.edu/kerberos/krb5-latest/doc/admin/conf_files/krb5_conf.html
## https://jhrozek.fedorapeople.org/sssd/2.2.0/man/
## При методе подключения DOMAIN_CLIENT=realmd_sssd. Задать параметры в /etc/sssd/sssd.conf для домена ## При методе подключения DOMAIN_CLIENT=realmd_sssd. Задать параметры в /etc/sssd/sssd.conf для домена
## REALM_SSSD[параметр:имя_секции]=значение ## REALM_SSSD[параметр:имя_секции]=значение
## Если "имя_секции" не указан, то по умолчанию используется секция текущего домена = domain/${DOMAIN} ## Если "имя_секции" не указан, то по умолчанию используется секция текущего домена = domain/${DOMAIN}
## REALM_SSSD[services:sssd]=nss,pam,pac,ssh ## REALM_SSSD[services:sssd]=nss,pam,pac,ssh
## REALM_SSSD[default_shell:nss]=/bib/bash ## REALM_SSSD[default_shell:nss]=/bib/bash
## REALM_SSSD[ad_hostname:domain/mydomain.ru]=hostname.mydomain.ru ## REALM_SSSD[ad_hostname:domain/mydomain.ru]=hostname.mydomain.ru
##
## Пользователи могут проходить аутентификацию в автономном режиме в течение 3 дней с момента последнего успешного входа в систему
## REALM_SSSD[offline_credentials_expiration:pam]=3
## Короткие имена пользователей домена "user" | полные "user@domain.ru" [False|*True] ## Короткие имена пользователей домена "user" | полные "user@domain.ru" [False|*True]
## REALM_SSSD[use_fully_qualified_names]=False ## REALM_SSSD[use_fully_qualified_names]=False
## Строить карту всех пользователей домена на локальном ПК [False|*True] ## Строить карту всех пользователей домена на локальном ПК [False|*True]
@ -791,6 +795,16 @@ GRUB_BOOT_SILENT="splash"
## REALM_SSSD[ad_update_samba_machine_account_password]=True ## REALM_SSSD[ad_update_samba_machine_account_password]=True
## Формат файла Kerberos .keytab пользователя /tmp/krb5cc_123456879 ## Формат файла Kerberos .keytab пользователя /tmp/krb5cc_123456879
## REALM_SSSD[krb5_ccname_template]=FILE:%d/krb5cc_%U ## REALM_SSSD[krb5_ccname_template]=FILE:%d/krb5cc_%U
## Игнорировать контейнеры и политики, если их атрибуты в контейнерах групповой политики недоступны для чтения [*False|True]
## REALM_SSSD[ad_gpo_ignore_unreadable]=True
## Правила контроля доступа на основе объектов групповой политики оцениваются, но не применяются [*permissive|enforcing|disabled]
## REALM_SSSD[ad_gpo_access_control]=permissive
## Разрешить доступ без проверок сроков [*permit|deny|ldap|ipa|ad|simple|krb5|proxy]
## REALM_SSSD[access_provider]=permit
## Разрешить или запретить доступ на основе списка имен пользователей или групп
## REALM_SSSD[access_provider]=simple
## REALM_SSSD[simple_allow_users]="user1, user2"
## REALM_SSSD[simple_allow_groups]="group1"
## Рабочая группа samba ## Рабочая группа samba
#SAMBADOMAIN=SMBGROUP #SAMBADOMAIN=SMBGROUP

Loading…
Cancel
Save