Aprenda Linux, 302 (Ambientes Mistos): Arquivos de banco de dados Trivial

Arquivos de banco de dados Trivial do Samba, e como solucionar problemas neles

O Samba usa arquivos do banco de dados Trivial para armazenar dados temporários e persistentes como parte do trabalho de integração de compartilhamento de arquivos e impressão entre o Linux e o Windows. Como preparação para o exame de certificação do Linux Professional Institute LPI-302, saiba tudo sobre o formato Samba Trivial Database (TDB) que o Samba usa para armazenar informações, como examinar arquivos TDB e como fazer o backup desses arquivos.

Sean A. Walberg, Senior Network Engineer

Author photoSean Walberg trabalha com Linux e UNIX desde 1994 em ambientes acadêmicos, corporativos e de provedores de serviço de Internet. Escreveu muito sobre administração de sistemas nos últimos anos. É possível entrar em contato com ele pelo e-mail sean@ertw.com.



18/Jul/2011

Sobre esta série

Esta série de artigos ajuda você a saber mais sobre as tarefas de administração de sistemas Linux. Também é possível usar o material desses artigos para se preparar para os exames de certificação do Linux Professional Institute nível 3 (LPIC-3).

Consulte o roteiro para o LPIC-3 no developerWorks para ver uma descrição de cada artigo da série e um link para cada um desses artigos. O roteiro está em andamento e reflete os objetivos atuais (novembro de 2010) em relação aos exames LPIC-3. À medida que cada artigo é concluído, ele é incluído no roteiro.

Visão geral

Neste artigo, saiba mais sobre estes conceitos:

  • Backup dos arquivos Samba Trivial Database (TDB)
  • Restauração dos arquivos TDB
  • Identificação de danos nos arquivos TDB
  • Edição/listagem do conteúdo dos arquivos TDB

Este artigo ajuda a se preparar para o Objetivo 310.3 do Tópico 310 do exame sobre a especialidade Ambiente Misto do LPI (302). O objetivo tem peso 1.

Pré-requisitos

Para aproveitar ao máximo os artigos desta série, é necessário ter um conhecimento avançado de Linux e um sistema Linux funcional, no qual seja possível praticar os comandos mencionados neste artigo. Especificamente, este artigo pressupõe que você tenha um conhecimento de trabalho das funções de linha de comando do Linux e, pelo menos, um entendimento geral do propósito do Samba, conforme o explicado em "Learn Linux, 302 (Mixed environments): Concepts". Para executar as ações descritas neste artigo, é necessário ter o software Samba instalado. Algumas ações requerem uma rede Server Message Block (SMB)/Common Internet File System (CIFS) funcional à disposição.


Entendendo os arquivos TDB

Sobre o exame elegível LPI-302

O Linux Professional Institute Certification (LPIC) é como muitas outras certificações, pois também oferece certificações em níveis diferentes, e cada nível requer mais conhecimento e experiência que o anterior. O exame LPI-302 é um exame elegível especial no terceiro nível da hierarquia do LPIC, e requer um nível avançado de conhecimento de administração de sistema Linux.

Para obter a certificação LPIC nível 3 (LPIC-3), é necessário passar nos dois primeiros exames do primeiro nível (101 e 102), nos dois exames do segundo nível (201 e 202) e no exame principal do LPIC-3 (301). Depois de alcançar esse nível, é possível fazer os exames elegíveis especializados, como o LPI-302.

O Samba armazena muitas informações no tempo de execução, de senhas locais a uma lista de clientes dos quais ele está esperando notícias. Parte desses dados possui vida curta, e pode ser descartada quando o Samba é reiniciado, mas alguns são permanentes e não podem ser perdidos. Os dados podem ser grandes demais ou muito pouco acessados para serem mantidos na memória, mas, do contrário, devem persistir de uma reinicialização a outra. Para suprir esses requisitos, a equipe do Samba criou o banco de dados Trivial. Efetivamente, é um armazenamento de valores de chave, ou seja, os dados são armazenados e recuperados por meio de uma chave exclusiva e não há junção de tabelas, como ocorre em um banco de dados relacional. Os armazenamentos de valores de chave —, e o TDB em particular,— são projetados para serem formas rápidas de armazenar dados no disco e recuperá-los.

Armazenamentos de valores de chave

Há muitas alternativas ao TDB, como o GNU Database Manager (GDBM), mas o projeto tinha uma necessidade especial de que diversos processos gravassem no banco de dados ao mesmo tempo, e de que houvesse suporte para o bloqueio de dados internos. Portanto, a equipe desenvolveu seu próprio gerenciador do banco de dados, e deu a ele o nome Trivial Database Manager. O TDB foi estendido para suportar a operação em cluster por meio do projeto Clustered TDB (CTDB), e está disponível para outros projetos.

Desenvolva sua própria alimentação

É possível desenvolver uma alimentação RSS, Atom ou HTML customizado para receber uma notificação sobre a inclusão de novos artigos ou a atualização do conteúdo. Acesse as alimentações RSS do developerWorks. Selecione Linux como zona e Articles como tipo, e digite Linux Professional Institute como palavra-chave. Em seguida, escolha o tipo preferencial de alimentação.

Se você está familiarizado com bancos de dados relacionais, como o IBM DB2, MySQL ou PostgreSQL, os armazenamentos de valores de chave lhe parecerão primitivos se comparados a eles. Onde um banco de dados relacional pode ter uma tabela com várias colunas, um armazenamento de valores da chave tem efetivamente duas colunas: uma coluna-chave e uma de valores. Os bancos de dados relacionais usam Linguagem de Consulta Estruturada (SQL) para obter informações a partir de diversas tabelas e colunas, mas os armazenamentos de valor da chave estão limitados às operações na coluna-chave.

Devido à sua simplicidade, os armazenamentos de valor da chave são úteis para um conjunto menor de tarefas, mas podem executar essas tarefas muito rapidamente. Um armazenamento de valor da chave é basicamente uma hash table no disco; portanto, é possível supor o local de um dado sem ter necessidade de consultar um índice.

O TDB, especificamente, foi escrito para tratar diversos gravadores e dados binários simultâneos, como estruturas internas de dados. Portanto, a forma mais rápida de armazenar e recuperar esses dados é o formato binário. O armazenamento binário significa que o arquivo de banco de dados pode ser menor, e que não há necessidade de converter os formatos à medida que os dados entram e saem do banco de dados.

Arquivos TDB usados no Samba

O Samba armazena os arquivos TDB em alguns lugares diferentes. A forma mais fácil de encontrar esses arquivos é examinar a saída de smbd -b, mostrada na Listagem 1.

Listagem 1. Mostrando as informações da construção smbd
# smbd -b
...
Paths:
   SBINDIR: /usr/sbin
   BINDIR: /usr/bin
   SWATDIR: /usr/share/swat
   CONFIGFILE: /etc/samba/smb.conf
   LOGFILEBASE: /var/log/samba
   LMHOSTSFILE: /etc/samba/lmhosts
   LIBDIR: /usr/lib
   MODULESDIR: /usr/lib/samba
   SHLIBE1T: so
   LOCKDIR: /var/lib/samba
   STATEDIR: /var/lib/samba
   CACHEDIR: /var/lib/samba
   PIDDIR: /var/run
   SMB_PASSWD_FILE: /var/lib/samba/private/smbpasswd
   PRIVATE_DIR: /var/lib/samba/private

Diversos caminhos da Listagem 1 apontam para locais com arquivos TDB. Felizmente, muitos são iguais, o que reduz os locais que a serem examinados. Por exemplo: LOCKDIR, STATEDIR e CACHEDIR apontam para /var/lib/samba e PRIVATE_DIR está em um subdiretório chamado private. É possível acessar esses diretórios e consultar os arquivos.

Os arquivos TDB podem ser classificados, de forma geral, em dois grupos: persistentes e temporários. A Tabela 1 mostra os nomes e funções dos arquivos persistentes.

Tabela 1. Arquivos TDB persistentes
Nome do arquivoPropósito
account_policy.tdbArmazena políticas de conta, como limites de bloqueio e comprimento de senhas
group_mapping.tdbArmazena a relação entre os identificadores de usuários (SID) do Windows NT e os® userids do UNIX
ntdrivers.tdbArmazena informações sobre drivers de impressora
ntforms.tdbArmazena informações sobre os formatos de uma fila de impressão — por exemplo, tamanhos de papel
ntprinters.tdbArmazena as informações sobre as configurações de inicialização da impressora
passdb.tdbUsado somente em alguns modos de segurança para armazenar credenciais de autenticação
registry.tdbUm registro de esqueleto que pode ser acessado por outros sistemas Windows
secrets.tdbArmazena segredos de local, como a chave de máquina da estação de trabalho, e credenciais, como as senhas do protocolo LDAP
share_info.tdbArmazena informações da lista de controle de acesso (ACL) referentes a cada compartilhamento local
winbindd_idmap.tdbArmazena informações de mapeamento entre os SIDs do Windows NT e os usuários criados dinamicamente, caso você esteja usando winbind

É necessário fazer backup dos arquivos TDB mostrados na Tabela 1. O procedimento para fazer isso será mostrado mais adiante neste artigo.

Além disso, há diversos arquivos TDB temporários que armazenam informações de estado e dados em cache. Não é necessário fazer backup deles, já que são reconstruídos quando o Samba inicia.


Usando arquivos TDB

O Samba vem com três ferramentas para manipular arquivos TDB

  • tdbdump: Imprime o conteúdo de um arquivo TDB.
  • tdbbackup: Faz backup e valida arquivos TDB.
  • tdbtool: Cria, visualiza e modifica arquivos TDB.

Olhando dentro de um arquivo TDB

A forma mais rápida de ver o que há dentro de um arquivo TDB é fazer o dump dele com o comando tdbdump . A Listagem 2 mostra um dump do arquivo ntprinters.tdb.

Listagem 2. Usando tdbdump em um arquivo TDB
[root@bob ~]# tdbdump /var/lib/samba/ntprinters.tdb 
{
key(21) = "GLOBALS/c_setprinter\00"
data(4) = "\00\00\00\00"
}
{
key(13) = "SECDESC/test\00"
data(140) = "\80\00\00\00\00\00\02\00\80\00\00\00\01\00\04\80\14\00\00\00$\00\00
\00\00\00\00\004\00\00\00\01\02\00\00\00\00\00\05 \00\00\00 \02\00\00\01\02\00\00
...
\00 \02\00\00\00\02\18\00\0C\00\0F\10\01\02\00\00\00\00\00\05 \00\00\00 \02\00\00"
}
{
key(17) = "SECDESC/cups-pdf\00"
data(140) = "\80\00\00\00\00\00\02\00\80\00\00\00\01\00\04\80\14\00\00\00$\00\00
\00\00\00\00\004\00\00\00\01\02\00\00\00\00\00\05 \00\00\00 \02\00\00\01\02\00\00
...
\00 \02\00\00\00\02\18\00\0C\00\0F\10\01\02\00\00\00\00\00\05 \00\00\00 \02\00\00"
}

A partir da saída da Listagem 2, é possível ver que há três chaves no banco de dados. A primeira chave tem 21 bytes de comprimento (o comprimento em bytes é mostrado entre colchetes [()]) e é chamada GLOBALS/c_setprinter seguida por um NULL, que é o zero em ASCII. Os caracteres não imprimíveis são mostrados em formato hexadecimal, ou seja, uma barra invertida seguida por dois caracteres hexadecimais. O valor da primeira chave tem 4 bytes de comprimento e é formado totalmente por NULLs.

As duas chaves seguintes são chamadas SECDESC/test e SECDESC/cups-pdf , e terminam com NULL. Os dados são, em sua totalidade, binários e não imprimíveis; portanto, foram impressos com os caracteres não imprimíveis em formato hexadecimal.

Fazendo backup e restaurando arquivos TDB

A Tabela 1 mostrou diversos arquivos TDB que persistiram entre os reboots e cujo backup deve ser feito. Como acontece com a maioria dos bancos de dados, não é possível simplesmente copiar o arquivo, pois a cópia pode ser danificada. O dano no backup acontece quando você copia um arquivo durante a gravação do mesmo, fazendo com que o estado do backup seja inconsistente. Uma das alternativas é fechar o daemon do Samba e, em seguida, copiar os arquivos.

A forma mais fácil de fazer o backup dos arquivos TDB é usar o utilitário tdbbackup que vem com o Samba. Esse utilitário copia um arquivo TDB mesmo quando está ocorrendo uma gravação nele. Outro recurso outro do tdbbackup é ter a capacidade de se certificar de que um arquivo TDB não esteja danificado e reverter automaticamente para um arquivo de backup em caso de dano. A Listagem 3 mostra um arquivo TDB durante o backup.

Listagem 3. Fazendo o backup de um arquivo TDB
[root@bob samba]# ls -l account_policy.*
-rw------- 1 root root 8192 Apr  7  2008 account_policy.tdb
[root@bob samba]# tdbbackup account_policy.tdb 
[root@bob samba]# ls -l account_policy.*
-rw------- 1 root root  8192 Apr  7  2008 account_policy.tdb
-rw------- 1 root root 36864 Dec  8 21:42 account_policy.tdb.bak
[root@bob samba]# tdbdump account_policy.tdb | md5sum
53ea608f0d93061480549c511756b778  -
[root@bob samba]# tdbdump account_policy.tdb.bak | md5sum
53ea608f0d93061480549c511756b778  -

O primeiro comando da Listagem 3 simplesmente lista todos os arquivos que começam com account_policy para confirmar que há apenas uma cópia. Em seguida, é feito o backup do banco de dados de políticas de conta ao executar tdbbackup account_policy.tdb. O terceiro comando procura arquivos que começam com account_policy para mostrar que um novo arquivo com a extensão .bak foi criado. O tamanho do arquivo é diferente do tamanho do original, mas o dump de cada arquivo e o cálculo do hash MD5 mostram que as somas de verificação são iguais. Portanto, o tamanho maior do arquivo não é um problema, já que o conteúdo de cada par chave/valor é idêntico.

Se, por algum motivo, o arquivo account_policy.tdb original é danificado, por exemplo, durante um encerramento impuro do sistema, é possível restaurar o arquivo antigo a partir do backup. A Listagem 4 mostra esse procedimento.

Listagem 4. Verificando e restaurando um arquivo TDB
[root@bob samba]# ls -l account_policy.tdb
-rw------- 1 root root 1213 Dec  8 21:49 account_policy.tdb
[root@bob samba]# tdbbackup -v account_policy.tdb
tdb_oob len 1256 beyond eof at 1213
restoring account_policy.tdb
[root@bob samba]# ls -l account_policy.tdb*
-rw------- 1 root root 36864 Dec  8 21:49 account_policy.tdb
-rw------- 1 root root 36864 Dec  8 21:42 account_policy.tdb.bak
[root@bob samba]# tdbbackup -v account_policy.tdb
account_policy.tdb : 17 records
[root@bob samba]# tdbdump account_policy.tdb | md5sum
53ea608f0d93061480549c511756b778  -

O primeiro comando da Listagem 4 mostra que o tamanho do arquivo diminuiu consideravelmente. O comando tdbbackup é executado novamente, mas com o sinalizador -v , que verifica o arquivo TDB. Se o arquivo estiver danificado, é possível ver um resumo dos erros, seguido de uma nota indicando que o arquivo foi restaurado. Comparando o tamanho dos arquivos com o comando ls , é possível perceber que o backup foi usado para substituir o banco de dados atual.

É possível executar diversas vezes o comando tdbbackup com segurança. A execução do mesmo em um arquivo de banco de dados válido, como o penúltimo comando da Listagem 4, mostra uma contagem dos registros do arquivo. A soma do MD5 também corresponde ao que foi visto antes do dano.

Nota: o comando tdbbackup aceita curingas; portanto, é possível fazer o backup e verificar diversos arquivos ao mesmo tempo.

Alterando arquivos TDB

O utilitário tdbtool permite fazer alterações nos dados dentro de um arquivo TDB. Esse utilitário também inspeciona as chaves individuais e valores dentro do arquivo, em vez de fazer o dump do arquivo inteiro e analisar a saída.

Cuidado

Ao trabalhar com o Samba, não há muitos casos em que é necessário alterar os dados dentro de um arquivo TDB. Ou o arquivo contém estruturas internas de dados, ou há ferramentas melhores para realizar essa tarefa. Entretanto, esta seção tem como finalidade a análise, portanto seu teste possui um alvo legítimo.

O tdbtool pode aceitar comandos na linha de comandos, mas também é possível abrir um console interativo. Para realizar a tarefa na linha de comando, execute as opções de comando example.tdb do tdbtool, em que example.tdb é o nome do arquivo, command é o comando, e as opções de comando vão no final. Para usar o shell do tdb, basta executar tdbtool sozinho ou passar o nome do arquivo na linha de comando.

Para criar um banco de dados, execute tdbtool sozinho e, em seguida, insira create test.tdb. Ao fazer isso, você cria um banco de dados no disco chamado test.tdb e o abre, para que quaisquer mudanças que você faça nesta sessão estejam nesse arquivo. Se você possui um arquivo TDB já existente, é possível especificar o nome desse arquivo na linha de comando ou usar o comando open . Curiosamente, a única forma de criar um arquivo TDB diretamente a partir da linha de comando envolve a especificação do nome duas vezes, como tdbtool test.tdb create test.tdb, que retorna um erro, mas cria um banco de dados com êxito.

Quando você cria um banco de dados ou abre um existente, as seguintes opções ficam disponíveis:

  • dump: Mostra tudo o que está no banco de dados, como tdbdump.
  • keys: Mostra somente as chaves em ASCII ou, com o comando hexkeys , mostra-as em formato hexadecimal.
  • erase: Exclui tudo o que está no banco de dados sem avisar.
  • info: Mostra um resumo do número de chaves e bytes usados pelo banco de dados.
  • check: Verifica se o banco de dados é válido.
  • speed: Executa testes relacionados à velocidade de leitura e gravação de dados no banco de dados.
  • showkey: Imprime o valor armazenado com a chave.
  • deletekey: Exclui a chave e o valor.

Para incluir e manipular dados, utilizam-se os comandos insert e store . Cada comando aceita parâmetros referentes a uma chave e um valor, sendo que o valor é opcional. Se o valor não for especificado, a chave com zero byte de dados será armazenada no valor.

Inserir um registro significa criar um registro novo, ao passo que o armazenamento de um registro pode sobrescrever uma entrada já existente. A Listagem 5 mostra a diferença entre os dois comandos.

Listagem 5. Armazenar vs. inserir um registro
tdb> insert mykey myvalue
tdb> insert mykey newvalue
insert failed
tdb> store mykey newvalue
Storing key:

key 5 bytes
mykey
data 8 bytes
[000] 6E 65 77 76 61 6C 75 65                           newvalue
tdb> store newkey someothervalue
Storing key:

key 6 bytes
newkey
data 14 bytes
[000] 73 6F 6D 65 6F 74 68 65  72 76 61 6C 75 65        someothe rvalue

A sequência de eventos na Listagem 5 é:

  1. Inserir uma chave chamada mykey com um valor de myvalue. Essa operação é bem-sucedida.
  2. Inserir uma chave com o mesmo nome anterior, mas com um novo valor. Essa operação falha, pois a chave já existe.
  3. Armazenar a chave em vez de inseri-la. Essa operação dá certo, e você recebe uma saída mais detalhada.
  4. Armazenar uma nova chave com um valor novo. Essa operação dá certo, apesar de a chave não existir.

É possível usar transações no shell do tdb para permitir a execução de uma série de comandos e aplicá-los ou cancelá-los como um grupo. A Listagem 6 mostra duas transações.

Listagem 6. Usando transações
tdb> transaction_start
tdb> insert somekey somevalue
tdb> show somekey

key 7 bytes
somekey
data 9 bytes
[000] 73 6F 6D 65 76 61 6C 75  65                       somevalu e
tdb> transaction_cancel
tdb> show somekey
fetch failed
tdb> transaction_start
tdb> insert somekey somevalue
tdb> transaction_commit
tdb> show somekey

key 7 bytes
somekey
data 9 bytes
[000] 73 6F 6D 65 76 61 6C 75  65                       somevalu e

A transação é iniciada com o comando transaction_start . A seguir, uma chave é inserida. Se outro processo estivesse lendo o banco de dados, não veria essa chave, já que ela não passou por commit. O processo com a transação aberta vê a chave. Em seguida, a transação é cancelada com transaction_cancel. A chave não aparece mais.

Em seguida, o processo é reexecutado, mas a transação sofre commit com o comando transaction_commit. Depois disso, a chave passa a existir para todos os leitores.

Outros leitores podem ser bloqueados caso você esteja em uma transação, ou seja, ficarão interrompidos até que a transação seja concluída. Portanto, tenha cuidado ao usar transações em bancos de dados de produção! São um ótimo recurso de segurança, mas podem prejudicar o desempenho se usados em excesso.


Além do TDB

As contas do usuário podem ser armazenadas em diversos lugares, dependendo da configuração, e duas ferramentas fornecem uma interface da linha de comandos enquanto se encarregam da comunicação de backend. Por exemplo, é possível usar os mesmos comandos mesmo se os dados dos usuários estão armazenados em LDAP, e não em arquivos TDB.

Usando smbpasswd

O utilitário smbpasswd pode incluir e excluir contas de usuário ou de máquina, e alterar senhas. É mais usado para realizar a última tarefa, para alterar a senha do usuário atual ou pela raiz, para alterar a senha de outro usuário.

Nos artigos posteriores, você conhecerá os diversos backends de senhas mais detalhadamente; entretanto, de modo geral, as senhas do Samba podem ser armazenadas de diversas formas diferentes, dependendo da versão do Samba e dos sistemas aos quais você está se integrando. Tanto smbpasswd quanto pdbedit (descrito a seguir) podem executar suas ações com relação a qualquer backend, inclusive se não é TDB.

Os clientes Microsoft passam senhas pela rede como um hash específico para a Microsoft, e não como texto simples ou hash de senha do UNIX. Isso significa que não é possível tomar um hash de senha da Microsoft e determinar se a senha é igual à que está armazenada no banco de dados de senhas do UNIX. Portanto, o Samba deve manter um banco de dados de senhas separado para os hashes da Microsoft; isso é conhecido como backend de senha.

Usando pdbedit

O pdbedit gerencia o banco de dados de usuários do Samba e as políticas de conta. É capaz de fazer tudo o que o smbpasswd faz, e ainda gerencia políticas e migra contas entre backends diferentes.

Para mostrar todos os usuários do banco de dados, execute pdbedit -L. É possível obter ainda mais detalhes sobre os usuários passando o sinalizador -v , mostrado na Listagem 7.

Listagem 7. Uma listagem detalhada de usuários
[root@bob tmp]# pdbedit -L -v
---------------
Unix username:        sean
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-2287037134-1443008385-640796334-1001
Primary Group SID:    S-1-5-21-2287037134-1443008385-640796334-513
Full Name:            Sean
Home Directory:       \\bob\sean
HomeDir Drive:
Logon Script:
Profile Path:         \\bob\sean\profile
Domain:               BOB
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          never
Kickoff time:         never
Password last set:    Mon, 24 May 2010 21:28:49 CDT
Password can change:  Mon, 24 May 2010 21:28:49 CDT
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

É necessário estar conectado como raiz para que o comando pdbedit funcione. É possível editar diversas configurações de usuários, como a hora do último login, mudanças de senha e diretórios iniciais, como se estivesse usando os utilitários Microsoft.

Cada parâmetro de usuário possui a sua própria opção da linha de comando, portanto, consulte a man page pdbedit(8) para ver os detalhes.

Também é importante ressaltar que o Samba trata contas de máquinas e contas de usuários de forma semelhante. A Listagem 8 mostra o banco de dados de senhas de um servidor do Samba configurado como controlador de domínio.

Listagem 8. O banco de dados de senhas, incluindo as contas de máquinas
[root@sergeant ~]# pdbedit -L
root:0:root
mythupstairs$:4294967295:MYTHUPSTAIRS
BOB$:1043:Machine
sean:1002:Sean,,,
sergeant$:4294967295:Machine

Os nomes que terminam com cifrão ($) são contas de máquinas, e são usados para autenticar uma máquina para o domínio. O segredo correspondente seria armazenado em secrets.tdb, no servidor remoto, e em passdb.tdb no controlador de domínio.


Progredindo

Aqui termina o tópico Conceitos, Arquitetura e Design. No próximo artigo, você começará o Tópico 311, aprendendo a fazer o download do código de origem do Samba e compilá-lo.

Recursos

Aprender

Obter produtos e tecnologias

  • Faça o download do Samba e fique por dentro das novidades mais recentes sobre o software.
  • Faça download do código de origem do TDB caso esteja interessado em usar o TDB nos seus projetos.
  • Veja as ferramentas de gerenciamento de contas para o Samba, caso precise de uma interface gráfica ou de uma integração melhor a diversos ambientes.
  • Avalie os produtos IBM da maneira que for melhor para você: faça download da versão de testes de um produto, avalie um produto on-line, use-o em um ambiente de nuvem ou passe algumas horas na SOA Sandbox aprendendo a implementar Arquitetura Orientada a Serviços de modo eficiente.

Discutir

  • Participe da comunidade do My developerWorks . Entre em contato com outros usuários do developerWorks, enquanto explora os blogs, fóruns, grupos e wikis orientados ao desenvolvedor.

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Linux
ArticleID=654361
ArticleTitle=Aprenda Linux, 302 (Ambientes Mistos): Arquivos de banco de dados Trivial
publish-date=07182011