Experiência de atualização clássica do SAMBA no Debian 8

Antecedentes


Há uma pequena rede local da empresa, na qual, há cerca de 10 anos, um domínio no 3º Samba + LDAP + BIND (no gateway) foi criado no Debian 5. Na verdade, ela só precisava de autenticação de usuário e arquivo de bolas. Ao longo dos anos, o servidor atualizou para novas versões do Debian sem problemas. No momento, ele possui o Debian 8 e o Samba 4.2 dos pacotes.

Desde o Windows 7, a introdução de computadores no domínio, sem a conhecida muleta com a edição do registro, não funcionou. A mesma muleta funcionou no Win 8 e no Win 10 até a versão 1803. Além da incapacidade de inserir computadores no domínio, outros problemas se acumularam e, como resultado, foi decidido realizar um upgrade clássico. Devido à simplicidade da estrutura da LAN, foi decidido usar o DNS interno do Samba.

Quero dizer imediatamente que o artigo não é um guia exato, mas a experiência de realizar esta operação. A fase de pré-teste é altamente recomendada. No meu caso, foram tiradas imagens de servidor para teste e implantadas em máquinas virtuais do VirtualBox. Além disso, para testar o comportamento dos clientes de domínio existentes, foram criadas as máquinas clientes Win XP SP3 e Win 10 1709 e 1803.

Também quero observar que repetidamente os erros foram causados ​​por erros comuns. Tome cuidado.

Descrição do ambiente


SO: Debian 8
Domínio: samdom.local
Nome do servidor: pdc
ip do servidor: 10.10.1.220

Processo de transição


Atualizando pacotes para as versões mais recentes + instalando os ausentes.


No meu caso, após a atualização, apenas o usuário krb5 tinha que ser entregue.

apt-get update apt-get upgrade apt-get install samba smbclient krb5-user winbind 

Ao instalar o krb5-user, o sistema fará algumas perguntas sobre o nome do servidor e o nome do domínio. Nós preenchemos os dados do nosso servidor.

Parada de samba


 service samba-ad-dc stop service smbd stop service nmbd stop service winbind stop 

Transferência de bases antigas e configuração do samba


 mv /var/lib/samba /var/lib/samba.NT mv /etc/samba/smb.conf /etc/samba/smb.conf.NT 

Mudei os bancos de dados antigos para /var/lib/samba.NT, então você precisa recriar o diretório / var / lib / samba

 mkdir /var/lib/samba 

A documentação recomenda mover todos os bancos de dados para uma pasta separada. No meu caso, apenas o gencache_notrans.tdb ficava separadamente, então tive que transferi-lo apenas.

 cp -p /run/samba/gencache_notrans.tdb /var/lib/samba.NT 

A documentação também diz que apenas seis bancos de dados são necessários:

secrets.tdb
schannel_store.tdb
passdb.tdb
gencache_notrans.tdb
group_mapping.tdb
account_policy.tdb

No entanto, a presença de outros arquivos na pasta não impediu o processo de transição.

Iniciando o processo de atualização clássica


 samba-tool domain classicupgrade —dbdir=/var/lib/samba.NT --realm=samdom.local --dns-backend=SAMBA_INTERNAL /etc/samba/smb.conf.NT 

Observo que a documentação não recomenda o uso do domínio de nível superior local., Mas, no meu caso, aconteceu historicamente.

Na planilha exibida na tela, a senha do administrador piscará, que você poderá anotar, se desejar).

Se você tiver problemas, antes de novas tentativas de atualização clássica, lembre-se de excluir os arquivos de banco de dados e o smb.conf criados no processo.

 rm -f /etc/samba/smb.conf rm -rf /var/lib/samba/* 

Se tudo correu bem, você pode ir para o próximo passo.

Verificando e editando configurações do servidor


Em /etc/resolv.conf deve ser (se não for criado automaticamente para você)

 domain samdom.local nameserver 10.10.1.220 

Em / etc / hosts

 127.0.0.1 localhost localhost.localdomain 10.10.1.220 pdc.samdom.local pdc 

O arquivo / etc / hostname deve ter um nome de host abreviado

 pdc 

Em / etc / network / interfases

 dns-nameservers 10.10.1.220 dns-search samdom.local 

Redirecionando solicitações de DNS


Se o seu servidor redirecionar as consultas DNS para a Internet (e INTERNAL_DNS Samba for usado), você precisará adicionar uma linha do seu IP do ISP na seção [global] no smb.conf:

 dns forwarder = ip 

No "Samba" 4.2, você pode especificar apenas um ip. A seguir - alguns, com um espaço.
Se o tráfego de saída for controlado no seu gateway, não esqueça de abrir a passagem de pacotes udp do servidor para a porta 53.

Configurar Kerberos


Trazemos o /etc/krb5.conf para uma forma semelhante:

 [libdefaults] default_realm = SAMDOM.LOCAL dns_lookup_realm = false dns_lookup_kdc = true krb4_config = /etc/krb.conf krb4_realms = /etc/krb.realms kdc_timesync = 1 ccache_type = 4 forwardable = true proxiable = true v4_instance_resolve = false v4_name_convert = { host = { rcmd = host ftp = ftp } plain = { something = something-else } } fcc-mit-ticketflags = true [realms] SAMDOM.LOCAL = { kdc = pdc admin_server = pdc default_domain = SAMDOM.LOCAL } [domain_realm] .samdom.local = SAMDOM.LOCAL samdom.local = SAMDOM.LOCAL 

Sincronização de tempo


Se o pacote ntp não valer a pena, defina:

 apt-get install ntp 

No meu caso, não havia diretório / var / lib / samba / ntp_signd /. Criado manualmente.

Em seguida, você precisa conceder direitos a ele:

 chown root:ntp /var/lib/samba/ntp_signd/ chmod 750 /var/lib/samba/ntp_signd/ 

Em seguida, você precisa trazer o arquivo /etc/ntp.conf para um formato semelhante:

 # Local clock (Note: This is not the localhost address!) server 127.127.1.0 fudge 127.127.1.0 stratum 10 # The source, where we are receiving the time from server 0.pool.ntp.org iburst prefer driftfile /var/lib/ntp/ntp.drift logfile /var/log/ntp ntpsigndsocket /var/lib/samba/ntp_signd/ # Access control # Default restriction: Only allow querying time (incl. ms-sntp) from this machine restrict default kod nomodify notrap nopeer mssntp # Allow everything from localhost restrict 127.0.0.1 # Allow that our time source can only provide time and do nothing else restrict 0.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery 

Removendo o slapd e reiniciando


 apt-get remove slapd reboot 

Teste


Na documentação, o teste é realizado na conta do administrador. Historicamente, desenvolvemos que ações administrativas vêm de domain_admin. Em seguida, os comandos e sua saída correta serão mostrados.

Testando samba:

 root@debian:/root# smbclient -L localhost -U% Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.1.17-Debian] Sharename Type Comment --------- ---- ------- netlogon Disk sysvol Disk IPC$ IPC IPC Service (Samba 4.1.17-Debian) Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.1.17-Debian] Server Comment --------- ------- Workgroup Master --------- ------- 

Se você receber um erro aqui:
Falha na conexão com o loclhost (erro NT_STATUS_UNSUCCESSFUL)

verifique se o samba começa. Em um teste, esqueci de remover (desativar) o slapd e também vi esse erro.

Mais um cheque:

 $ smbclient //localhost/netlogon -Udomain_admin -c 'ls' Enter Administrator's password: Domain=[SAMDOM] OS=[Unix] Server=[Samba xyz] . D 0 Tue Nov 1 08:40:00 2016 .. D 0 Tue Nov 1 08:40:00 2016 49386 blocks of size 524288. 42093 blocks available 

Testando DNS

 root@debian:/root# nslookup samdom.local Server: 10.10.1.220 Address: 10.10.1.220#53 Name: samdom.local Address: 10.10.1.220 

 $ host -t SRV _ldap._tcp.samdom.local. _ldap._tcp.samdom.example.com has SRV record 0 100 389 pdc.samdom.example.com. 

 $ host -t SRV _kerberos._udp.samdom.local. _kerberos._udp.samdom.example.com has SRV record 0 100 88 pdc.samdom.example.com. 

 $ host -t A pdc.samdom.local. dc1.samdom.example.com has address 10.10.1.220 

Testando o Kerberos

 root@debian:/root# kinit domain_admin@SAMDOM.LOCAL Password for domain_admin@SAMDOM.LOCAL: Warning: Your password will expire in 41 days on  27  2015 14:34:46 

 root@debian:/root# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: domain_admin@SAMDOM.LOCAL Valid starting Expires Service principal 16.10.2015 15:07:12 17.10.2015 01:07:12 krbtgt/SAMDOM.LOCAL@SAMDOM.LOCAL renew until 17.10.2015 15:07:07 

Configuração adicional


Para que nomes e grupos de domínio apareçam no linux, você precisa corrigir /etc/nsswitch.conf em vez de números

As strings devem ser reduzidas para o seguinte formato:
passwd: arquivos winbind
grupo: arquivos winbind

Observe que o winbind é adicionado apenas a essas linhas. Para detalhes, consulte a documentação.
No meu caso, também removi a menção de ldap deste arquivo.

 reboot 

Se você, como eu, antes de atualizar o DNS clássico, o servidor estava localizado em outra máquina e você está usando um servidor DHCP, não se esqueça de alterar as configurações do servidor DHCP apontando para o servidor DNS

Configurar pastas de rede


Os desenvolvedores não são recomendados para usar o controlador de domínio do AD como um servidor de arquivos. No entanto, no meu caso, não havia outros servidores.

A configuração está muito bem descrita na documentação para "Samba" e você precisa procurar lá. Em suma, então:

É necessário verificar o suporte ao ACL samba.

 smbd -b | grep HAVE_LIBACL HAVE_LIBACL 

Não esqueça que a seção deve ser montada com as opções user_xattr e acl.

Somente usuários e grupos com SeDiskOperatorPrivilege podem configurar os direitos das bolas:

Por exemplo, para conceder esses direitos ao grupo Administradores de Domínio, você precisa executar o comando:
 net rpc rights grant "Samdom\Domain Admins" SeDiskOperatorPrivilege -U "Samdom\domain_admin" 

Diretamente para adicionar bolas, você precisa:

Crie um diretório e atribua os direitos necessários:

 # mkdir -p /srv/samba/Demo/ # chown root:"Domain Admins" /srv/samba/Demo/ # chmod 0770 /srv/samba/Demo/ 

adicione ao smb.conf

 [Demo] path = /srv/samba/Demo/ read only = no 

Depois disso, recarregue as configurações do samba com o comando:

 smbcontrol all reload-config 

Como antes, as bolas podem ser ocultadas adicionando à sua descrição:

 browseable = no 

Em seguida, os direitos são distribuídos a partir das janelas da máquina, a partir de uma conta com SeDiskOperatorPrivilege . Para fazer isso, vá para "Gerenciamento do computador".
Apegue-se a um computador remoto (controlador de domínio pdc no nosso caso). Distribua os direitos por meio de: "Pastas compartilhadas" -> "Recursos compartilhados".

É provável que, ao ir para o item "Pastas compartilhadas", você receba um erro "O número do procedimento esteja fora dos limites permitidos (1745)". Eu o ignoro, porque não encontrei nada inteligível na Internet e isso não causa problemas durante o teste e a operação.

Podem ser possíveis problemas se você compartilhar as pastas de rede antigas dessa maneira. Antes do classicupgrade, os direitos para as bolas eram definidos via smb.conf, usuários do linux, group, other e setfacl. Após a atualização clássica, as escolas com direito a mudar, renomear etc. começaram a aparecer gradualmente. O cenário recursivo não ajudou, pois apareceram batentes com herança de direitos.

Vale ressaltar que, na documentação, é recomendável distribuir direitos das janelas de uma máquina, por acesso remoto.

Como resultado, devido ao volume não muito grande de arquivos, foi tomada a decisão de transferir dados para uma máquina Windows durante o horário não comercial, recriar pastas de rede de acordo com as recomendações dos desenvolvedores de samba e recarregar arquivos.

Pastas iniciais do usuário no servidor


O gerenciamento das pastas pessoais do usuário também foi alterado.
Vale ressaltar que o processo da configuração também é muito bem descrito na documentação .
Descreverei apenas os principais recursos do meu caso.

Anteriormente, cada usuário tinha sua própria bola. Agora, apenas a pasta compartilhada é compartilhada e os usuários têm acesso apenas ao diretório.

A instalação é realizada usando o RSAT (Microsoft Remote Server Administration Tools) . RSAT tem uma característica desagradável. Ao atualizar o Win 10 para uma nova versão, ele deve ser reinstalado.

As bolas domésticas podem ser coletadas manualmente, através das propriedades do usuário no snap-in Usuários e Computadores. Guia Perfil. Disco U: \\ pdc \ compartilhamentos de usuários \ nome de usuário

No entanto, é mais conveniente fazer isso por meio da diretiva de domínio, descrita com muita clareza na documentação acima, no parágrafo "Usando uma preferência de diretiva de grupo" .

Não esqueça que a bola comum pode ser ocultada adicionando à sua descrição:

 browseable = no 

Nível de domínio acima


O domínio foi atualizado sem problemas para o nível 2008_R2 com o comando:

 samba-tool domain level raise --domain=2008_R2 --forest=2008_R2 

Você pode visualizar o nível com o comando:

 samba-tool domain level show 

Se o smbd.log for bombardeado com erros do CUPS


No meu caso, esse problema apareceu:

Não foi possível conectar ao host local do servidor CUPS: 631

Corrigido por este pequeno artigo.

Atualização subsequente para o problema e solução do Debian 9


At

 apt-get dist-upgrade 

Houve um problema, ou seja, samba e winbind não quiseram ser atualizados. Entrou em um conflito de dependências.

O método do artigo ajudou o link no qual, infelizmente, eu não salvei.
Aqui está uma citação direta dele:

se o Samba estiver no modo AD-DC, ele e o winbind falharão.
execute esses comandos e tente executar a atualização novamente

systemctl parar smbd nmbd winbind
systemctl desativar smbd nmbd winbind
Desinstalar systemctl samba-ad-dc
systemctl start samba-ad-dc
systemctl enable samba-ad-dc


Após atualizar a versão SAMBA, é recomendável: “Verificação do banco de dados Samba AD DC”.



# samba-tool dbcheck --cross-ncs

Como no Deb 9 SAMBA versão 4.5, recebi vários erros "replPropertyMetaData".
O processo de solução de problemas está descrito na documentação:

wiki.samba.org/index.php/Updating_Samba#Fixing_replPropertyMetaData_Attributes

E tudo se resume à execução do comando:

samba-tool dbcheck --cross-ncs --fix --yes

Lista de fontes usadas


Documentação SAMBA:

Migrando um domínio do Samba NT4 para o Samba AD (atualização clássica)
Configurando o Samba como um controlador de domínio do Active Directory
Configurando um compartilhamento usando ACLs do Windows
Pastas da página inicial do usuário
Grande artigo:
Controlador de domínio Debian 8 (... que já possui um Samba4 embutido)
Erro de samba: Não foi possível conectar-se ao servidor local do CUPS: 631
Um artigo de um autor inglês desconhecido descrevendo como atualizar para o Debian 9

Source: https://habr.com/ru/post/pt418499/


All Articles