# Samba AD DC (Docker) + Cliente Linux com Home Remota **Domínio:** `FUTURELAB.DCC.UFMG.BR` **IP do Servidor (DC1):** `192.168.7.130` **Sistema Operacional Cliente:** Ubuntu / Debian --- ## Índice 1. [Configurar Resolver DNS](#1-configurar-resolver-dns) 2. [Preparação do Cliente Linux](#2-preparação-do-cliente-linux) 3. [Ingresso no Domínio (Join)](#3-ingresso-no-domínio-join) 4. [Automação da Home Remota (PAM & Mount)](#4-automação-da-home-remota-pam--mount) 5. [Redirecionamento de Diretórios XDG para Local](#5-redirecionamento-de-diretórios-xdg-para-local) --- ## 1. Configurar Resolver DNS Edite `/etc/systemd/resolved.conf`: ```ini [Resolve] DNS=192.168.7.130 Domains=futurelab.dcc.ufmg.br DNSStubListener=no ``` --- ## 2. Preparação do Cliente Linux ### 2.1 DNS e Resolução de Nomes O cliente deve apontar para o IP do DC1 para resolver o domínio e o Kerberos. **`/etc/resolv.conf`** ``` nameserver 192.168.7.130 search futurelab.dcc.ufmg.br ``` **`/etc/hosts`** ``` 127.0.0.1 localhost [IP_DO_CLIENTE] ps-[FINAL-IP].futurelab.dcc.ufmg.br ps-[FINAL-IP] ``` ### 2.2 Instalação de Pacotes ```bash sudo apt update sudo apt install -y sssd-ad sssd-tools realmd adcli krb5-user ntpdate libpam-mount cifs-utils keyutils ``` --- ## 3. Ingresso no Domínio (Join) ### 3.1 Executar o Join ```bash sudo realm join -U Administrator -v 192.168.7.130 ``` ### 3.2 Configurar o Kerberos Edite o arquivo `/etc/krb5.conf` ```ini [libdefaults] default_realm = FUTURELAB.DCC.UFMG.BR dns_lookup_realm = false dns_lookup_kdc = true rdns = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] FUTURELAB.DCC.UFMG.BR = { kdc = dc1.futurelab.dcc.ufmg.br admin_server = dc1.futurelab.dcc.ufmg.br default_domain = futurelab.dcc.ufmg.br } [domain_realm] .futurelab.dcc.ufmg.br = FUTURELAB.DCC.UFMG.BR futurelab.dcc.ufmg.br = FUTURELAB.DCC.UFMG.BR ``` ### 3.2 Configurar o SSSD Após o join, ajuste `/etc/sssd/sssd.conf` para usar nomes curtos (sem `@dominio`): ```ini [domain/futurelab.dcc.ufmg.br] [sssd] domains = futurelab.dcc.ufmg.br config_file_version = 2 services = nss, pam [domain/futurelab.dcc.ufmg.br] default_shell = /bin/bash ad_server = dc1.futurelab.dcc.ufmg.br krb5_store_password_if_offline = True cache_credentials = True krb5_realm = FUTURELAB.DCC.UFMG.BR realmd_tags = manages-system joined-with-adcli id_provider = ad fallback_homedir = /home/%u ad_domain = futurelab.dcc.ufmg.br use_fully_qualified_names = False ldap_id_mapping = True access_provider = ad # Nomes curtos sem @dominio use_fully_qualified_names = False fallback_homedir = /home/%u # Permite login offline com credenciais em cache cache_credentials = true krb5_store_password_if_offline = true # Evita enumeração completa de usuários/grupos (melhora desempenho) enumerate = false # Timeouts para não travar no login ldap_network_timeout = 3 ldap_search_timeout = 5 ldap_opt_timeout = 5 # Cache de entradas e grupos entry_cache_timeout = 600 entry_cache_group_timeout = 3600 krb5_ccname_template = FILE:/tmp/krb5cc_%U krb5_server = dc1.futurelab.dcc.ufmg.br ``` ### 3.3 Reiniciar o Serviço ```bash sudo systemctl restart sssd ``` --- ## 4. Automação da Home Remota (PAM & Mount) ### 4.1 Configuração do pam_mount Edite `/etc/security/pam_mount.conf.xml` e adicione as linhas abaixo **antes** de ``: ```xml ``` ### 4.2 Ativação no PAM Edite `/etc/pam.d/common-session` e coloque: ``` session optional pam_umask.so # and here are more per-package modules (the "Additional" block) session required pam_unix.so session optional pam_sss.so session optional pam_keyinit.so force revoke session optional pam_sss.so session optional pam_mount.so session optional pam_systemd.so ``` --- ## 5. Redirecionamento de Diretórios XDG para Local Redirecionar `.cache`, `.config` e `.local` para o disco local evita I/O remoto excessivo (especialmente pelo Nautilus). ### 5.1 Criar o Script de Perfil Crie o arquivo `/etc/profile.d/xdg-local.sh` (aplicado a todos os usuários do domínio): ```bash #!/bin/bash export XDG_CONFIG_HOME="/var/local/appconfig/$USER/.config" export XDG_CACHE_HOME="/var/local/appconfig/$USER/.cache" mkdir -p "$XDG_CONFIG_HOME" mkdir -p "$XDG_CACHE_HOME" # Redireciona symlinks na home remota para os diretórios locais if [ -d "/home/$USER" ]; then # .cache remoto → local if [ ! -L "/home/$USER/.cache" ]; then rm -rf "/home/$USER/.cache" 2>/dev/null ln -sfn "$XDG_CACHE_HOME" "/home/$USER/.cache" fi # .config remoto → local if [ ! -L "/home/$USER/.config" ]; then rm -rf "/home/$USER/.config" 2>/dev/null ln -sfn "$XDG_CONFIG_HOME" "/home/$USER/.config" fi # .local remoto → local (inclui recently-used.xbel, muito acessado pelo Nautilus) mkdir -p "/var/local/appconfig/$USER/.local/share" if [ ! -L "/home/$USER/.local" ]; then rm -rf "/home/$USER/.local" 2>/dev/null ln -sfn "/var/local/appconfig/$USER/.local" "/home/$USER/.local" fi fi export SNAP_USER_DATA="/var/local/appconfig/$USER/snap" export SNAP_USER_COMMON="/var/local/appconfig/$USER/snap/common" mkdir -p "$SNAP_USER_DATA" "$SNAP_USER_COMMON" ``` ### 5.2 Criar o Diretório Base ```bash sudo mkdir -p /var/local/appconfig sudo chmod 777 /var/local/appconfig ``` ### 5.3 Congigurar para apagar dados a cada 7 dias ```bash sudo crontab -e ``` Adicione a seguinte linha ```bash 0 0 * * * find /var/local/appconfig -type f -mtime +7 -delete ```