Como evito a "corrupção" do banco de dados Samba?

Como evito a "corrupção" do banco de dados Samba?

Tenho problemas com minha configuração do Samba. Dirijo o Samba há cerca de 12 ou 13 anos e nunca vi isso antes. Houve um tempo em que eu tinha bastante conhecimento sobre os domínios do Windows, mas o mundo do Windows passou por mim e as várias facetas do Samba que cresceram junto com o Active Directory estão me confundindo.

Minha configuração é muito simples. Acabei de ter um único servidor com algum espaço em disco e uma impressora que desejo compartilhar entre outros quatro computadores. Durante todos esses anos, tenho usado um domínio simples com um único PDC. Ultimamente, algo mudou. Não consigo descobrir se foi para o Lucid ou se foi uma atualização específica do Samba, mas algo continua quebrando no meu banco de dados.

De tempos em tempos, a senha da minha conta ficará “errada”. Serei capaz de fazer login - usando credenciais em cache, presumo - mas não poderei montar as unidades ou imprimir na impressora. Acho que isso acontece a cada 30 dias. Talvez seja 45. Tenho lidado com isso apenas redefinindo a senha no servidor, mas isso se tornou muito chato. Além disso, estou percebendo pelos logs que as senhas das máquinas também estão ficando confusas.

Finalmente adivinhei que meu banco de dados - que migrei e atualizei há cerca de uma dúzia de anos - estava muito desatualizado, então o excluí e comecei do zero em um novo domínio. Agora está acontecendo de novo, então esse claramente não era o problema.

Achei que talvez fosse apenas minha caixa do Windows 7, mas agora minhas máquinas XP também estão fazendo isso.

Eu não acho que seja uma política de expiração de senha. Se fosse, eu deveria receber uma mensagem informando que é hora de alterar minha senha, certo? Quando vou investigar algo assim, fico perdido com todas as diversas permutações de comandos nete pdbedite wbinfo. Estou acostumado a não precisar deles em geral. Acho que adicionei minha conta ao grupo "Administradores de domínio" com um deles em algum momento, mas não me lembro como isso é feito.

Estou especialmente confuso com a documentação sobre se devo ter o winbind em execução na minha configuração. Acho que não, mas obviamente wbinfoé necessário correr para fazer diagnósticos, e acho que não estou prejudicando nada ao fazê-lo funcionar. Ele é executado por padrão no Ubuntu, então eu queria deixá-lo e trabalhar com ele, se possível. Winbind NÃO é referenciado em meu /etc/nsswitch.conf.

Estou recebendo muitas mensagens de erro interessantes em meus registros, mas o Google não está me levando a entender nenhuma delas. Aqui está um no smb.conf me dizendo que uma das minhas estações de trabalho não está conectada corretamente:

[2011/08/27 19:02:04,  0] rpc_server/srv_netlog_nt.c:603(_netr_ServerAuthenticate3)
  _netr_ServerAuthenticate3: netlogon_creds_server_check failed. Rejecting auth request from client PROXIMA machine account PROXIMA$

Muito deste de log.winbindd-idmap no Google, sem nenhuma indicação clara do que pode estar errado ou se precisa de conserto. (E sim, preciso do idmapd para NFSv4.) Parece específico do Ubuntu. Não tenho ideia do que pode estar "incompleto" na minha "configuração".

[2011/08/27 19:02:04,  0] winbindd/idmap_tdb.c:287(idmap_tdb_open_db)
  Upgrade of IDMAP_VERSION from -1 to 2 is not possible with incomplete configuration
[2011/08/27 19:02:04,  1] winbindd/idmap.c:321(idmap_init_domain)
  idmap initialization returned NT_STATUS_UNSUCCESSFUL

EUpensareste do log.winbindd é inofensivo, pois o winbindd está apenas descobrindo se meu servidor é um PDC ou outra coisa:

[2011/08/27 17:55:46,  0] libsmb/namequery.c:75(saf_store)
  saf_store: refusing to store 0 length domain or servername!
[2011/08/27 17:55:46,  1] rpc_client/cli_pipe.c:949(cli_pipe_validate_current_pdu)
  cli_pipe_validate_current_pdu: RPC fault code DCERPC_FAULT_OP_RNG_ERROR received from host EXCELSIOR!

Finalmente, aqui está meu smb.conf:


[global]
        workgroup = STARFLEET
        map to guest = Bad User
        obey pam restrictions = yes
        smb passwd file = /var/lib/samba/passdb.tdb
        private dir = /var/lib/samba
        pam password change = yes
        passwd program = /usr/bin/passwd %u
        passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
        unix password sync = yes
        log level = 2
        load printers = yes
        printcap name = cups
        add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u
        add group script = /usr/sbin/addgroup --force-badname %g
        add machine script = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s /bin/false %u
        logon script = %U.bat
        logon path =
        logon drive = Z:
        logon home =
        domain logons = yes
        os level = 65
        preferred master = yes
        domain master = yes
        wins support = yes
        usershare allow guests = yes
        use sendfile = yes

[homes]
        comment = Home Directories
        path = /data/Users/%U
        valid users = %S
        read only = no
        create mask = 0700
        directory mask = 0700

[netlogon]
        comment = Network Logon Service
        path = /var/lib/samba/netlogon
        guest ok = yes
        browseable = no
        browsable = no
        share modes = no

[printers]
        comment = All Printers
        path = /var/spool/samba
        create mask = 0700
        printable = yes
        browseable = yes
        browsable = yes

[data]
        path = /data
        read only = no
        guest ok = yes

[temp]
        path = /data/Temp
        read only = no
        guest ok = yes
[homes]
        comment = Home Directories
        path = /data/Users/%U
        valid users = %S
        read only = no
        create mask = 0700
        directory mask = 0700

Então... O que está acontecendo e como posso corrigir isso?

informação relacionada