Samba-4.20.4

Introdução ao Samba

O pacote "Samba" fornece serviços de arquivo e impressão para clientes "SMB"/"CIFS" e rede de intercomunicação Windows para clientes Linux. O "Samba" também pode ser configurado como um substituto do Controlador de Domínio do Windows, um servidor de arquivos/impressão atuando como membro de um domínio do "Windows Active Directory" e um servidor de nomes "NetBIOS" ("RFC" 1001/1002) (que, entre outras coisas, fornece suporte de navegação "LAN").

Esse pacote é conhecido por construir e funcionar corretamente usando uma plataforma LFS 12.2.

Informação do Pacote

  • Transferência (HTTP): https://download.samba.org/pub/samba/stable/samba-4.20.4.tar.gz

  • Transferência (FTP):

  • Soma de verificação MD5 da transferência: a366c985dd1b988ff1fda902876f3241

  • Tamanho da transferência: 41 MB

  • Espaço em disco estimado exigido: 590 MB (adicionar 64 MB para teste rápido)

  • Tempo de construção estimado: 2,1 UPC (usando paralelismo=4; adicionar 0,4 UPC para quicktest)

Dependências do "Samba"

Exigidas

GnuTLS-3.8.7.1, jansson-2.14, libtirpc-1.3.5, Parse-Yapp-1.21 e rpcsvc-proto-1.4.4

Recomendadas

Opcionais

Avahi-0.8, BIND-9.20.0, Cups-2.4.10, Cyrus SASL-2.1.28, GDB-15.1, git-2.46.0, GnuPG-2.4.5 (exigido para ADS e a suíte de teste), libaio-0.3.113, libarchive-3.7.4 (para tar em smbclient), libcap-2.70 com PAM, libgcrypt-1.11.0, libnsl-2.0.1, libunwind-1.6.2, lmdb-0.9.31, Markdown-3.6, nss-3.103, popt-1.19, Talloc-2.4.2 (incluído), Vala-0.56.17, Valgrind-3.23.0 (opcionalmente usado pela suíte de teste), xfsprogs-6.9.0, cmocka, cryptography, ctdb (incluído), cwrap, dnspython, FAM, Gamin, GlusterFS, Heimdal (incluído), iso8601, ldb (incluído), OpenAFS, poetry-core (exigido para ADS), pyasn1, tevent (incluído), tdb (incluído) e tracker-2

Opcionais (para a Suíte de Teste de Desenvolvedor(a))

Instale na ordem listada: six-1.16.0, pytest-8.3.2, argparse, testtools, testscenarios e python-subunit

Observações de Editor(a): https://wiki.linuxfromscratch.org/blfs/wiki/samba4

Instalação do Samba

Para suportar a suíte de teste, configure um ambiente virtual "Python" para alguns módulos "Python" fora do escopo do BLFS:

python3 -m venv pyvenv &&
./pyvenv/bin/pip3 install cryptography pyasn1 iso8601

Instale o "Samba" executando os seguintes comandos:

PYTHON=$PWD/pyvenv/bin/python3             \
PATH=$PWD/pyvenv/bin:$PATH                 \
./configure                                \
    --prefix=/usr                          \
    --sysconfdir=/etc                      \
    --localstatedir=/var                   \
    --with-piddir=/run/samba               \
    --with-pammodulesdir=/usr/lib/security \
    --enable-fhs                           \
    --without-ad-dc                        \
    --without-systemd                      \
    --with-system-mitkrb5                  \
    --enable-selftest                      \
    --disable-rpath-install                &&
make

Para testar os resultados, emita: "PATH=$PWD/pyvenv/bin:$PATH make quicktest". A suíte de teste produzirá linhas que parecem falhas, mas são inócuas. As últimas linhas da saída gerada deveriam informar "ALL OK" para uma execução boa do teste. Um resumo de quaisquer falhas pode ser encontrado em "./st/summary".

[Nota]

Nota

Além disso, suítes de teste para desenvolvedores(as) estão disponíveis. Se você instalou os módulos opcionais "Python" acima no ambiente virtual "Python" para construir esse pacote, [então] você consegue executar esses testes com "make test". Não é recomendado para o(a) construtor(a) médio(a) com cerca de duzentos e noventa (290) UPC e mais que um gigabyte de espaço em disco, e você deveria esperar cerca de setenta e três (73) erros e cerca de trinta (30) falhas originários dos mais que três mil (3.000) testes.

Corrija caminhos rigidamente codificados para o interpretador Python 3:

sed '1s@^.*$@#!/usr/bin/python3@' \
    -i ./bin/default/source4/scripting/bin/*.inst

Se atualizar a partir de uma versão antiga do samba, [então] como o(a) usuário(a) "root", remova os arquivos antigos de suporte do "Python" para evitar alguns problemas:

rm -rf /usr/lib/python3.12/site-packages/samba

Ainda como o(a) usuário(a) "root", instale o pacote:

make install &&

install -v -m644    examples/smb.conf.default /etc/samba &&

sed -e "s;log file =.*;log file = /var/log/samba/%m.log;" \
    -e "s;path = /usr/spool/samba;path = /var/spool/samba;" \
    -i /etc/samba/smb.conf.default &&

mkdir -pv /etc/openldap/schema                        &&

install -v -m644    examples/LDAP/README              \
                    /etc/openldap/schema/README.samba &&

install -v -m644    examples/LDAP/samba*              \
                    /etc/openldap/schema              &&

install -v -m755    examples/LDAP/{get*,ol*} \
                    /etc/openldap/schema

Explicações do Comando

--enable-fhs: Atribui todos os outros caminhos de arquivo de maneira compatível com o "Filesystem Hierarchy Standard" ("FHS").

--without-systemd: Desabilite a integração "systemd", uma vez que ela não é construída na versão "System V" do LFS/BLFS.

--with-shared-modules='!vfs_snapper': Desabilite o módulo vfs_snapper se você quiser construir samba sem suporte a dbus, para configurações sem interfaces gráficas de usuário(a).

--without-ad-dc: Desabilita a funcionalidade do Controlador de Domínio do "Active Directory". Veja-se Configurar um Controlador de Domínio Samba do Active Directory para informações detalhadas. Remova essa chave se você tiver instalado os módulos "Python" necessários para suporte "ADS". Observe que o BLFS não fornece um conjunto de comandos sequenciais de inicialização ou unidade do "systemd" do Samba para um controlador de domínio do "Active Directory".

--with-system-mitkrb5: Habilita construir com a versão do sistema do Kerberos. Isso atenua vulnerabilidades de segurança e reduz o tempo de construção. Remova isso se você não tiver MIT Kerberos V5-1.21.3 instalado.

--disable-rpath-install: Remove o caminho de instalação da biblioteca dos caminhos incorporados de pesquisa de bibliotecas compartilhadas nos arquivos executáveis binários instalados e nas bibliotecas compartilhadas. Quando esse pacote é instalado no local padrão, o caminho de instalação da biblioteca é /usr/lib. Ele sempre é pesquisado pelo vinculador dinâmico, de forma que não existe necessidade de incorporá-lo aos arquivos instalados.

--with-selftest-prefix=SELFTEST_PREFIX: Essa opção especifica o diretório de trabalho da suíte de teste (padrão=./st).

install -v -m644 examples/LDAP/* /etc/openldap/schema: Esses comandos são usados para copiar esquemas de amostra do "Samba" para o diretório "schema" do "OpenLDAP".

install -v -m644 ../examples/smb.conf.default /etc/samba: Isso copia um arquivo padrão "smb.conf" em "/etc/samba". Essa amostra de configuração não funcionará até que você a copie para "/etc/samba/smb.conf" e faça as mudanças apropriadas para a tua instalação. Veja-se a seção de configuração para os valores mínimos que precisam estar configurados.

Configurando o Samba

Arquivos de Configuração

/etc/samba/smb.conf

Impressão para clientes SMB

Se você usa "CUPS" para serviços de impressão e deseja imprimir em uma impressora conectada a um cliente "SMB", [então] você precisa criar um dispositivo de estrutura de retaguarda "SMB". Para criar o dispositivo, emita o seguinte comando como o(a) usuário(a) "root":

install -dvm 755 /usr/lib/cups/backend &&
ln -v -sf /usr/bin/smbspool /usr/lib/cups/backend/smb

Informação de Configuração

Devido à complexidade e aos diversos usos do "Samba", a configuração completa para todos os recursos do pacote está bem além do escopo do livro BLFS. Esta seção fornece instruções para configurar o arquivo "/etc/samba/smb.conf" para dois cenários comuns. O conteúdo completo de "/etc/samba/smb.conf" dependerá do propósito da instalação do "Samba".

[Nota]

Nota

Você possivelmente ache mais fácil copiar os parâmetros de configuração mostrados abaixo em um arquivo "/etc/samba/smb.conf" vazio em vez de copiar e editar o arquivo padrão conforme mencionado na seção Explicações do Comando. Como você cria/edita o arquivo "/etc/samba/smb.conf" será deixado a seu critério. Certifique-se de que o arquivo só possa ser escrevível pelo(a) usuário(a) "root" (modo 644).

Cenário 1: instalação Mínima Autônoma Somente para Cliente

Escolha essa variante se você quiser somente transferir arquivos usando "smbclient", montar compartilhamentos do Windows e imprimir em impressoras Windows e não quiser compartilhar teus arquivos e impressoras com máquinas Windows.

Um arquivo "/etc/samba/smb.conf" com os seguintes três parâmetros é suficiente:

[global]
    workgroup = GRUPO_DE_TRABALHO
    dos charset = cp850
    unix charset = ISO-8859-1

Os valores nesse exemplo especificam que o computador pertence a um grupo de trabalho do Windows chamado GRUPO_DE_TRABALHO, que usa o conjunto de caracteres cp850 na rede ao conversar com MS-DOS e MS Windows 9x, e que os nomes dos arquivos são armazenados na codificação ISO-8859-1 no disco. Ajuste esses valores adequadamente para a tua instalação. O valor unix charset precisa ser o mesmo que a saída gerada de locale charmap quando executado com a variável LANG configurada para a tua localidade preferida, caso contrário o comando ls possivelmente não exiba nomes de arquivos corretos dos arquivos baixados.

Não existe necessidade de executar quaisquer servidores "Samba" nesse cenário; portanto, você não precisa instalar os conjuntos de comandos sequenciais de inicialização fornecidos.

Cenário 2: Servidor Autônomo de Arquivo/Impressão

Escolha essa variante se quiser compartilhar teus arquivos e impressoras com máquinas Windows em teu grupo de trabalho, além dos recursos descritos no Cenário 1.

Nesse caso, o arquivo "/etc/samba/smb.conf.default" possivelmente seja um bom modelo para começar. Além disso, você deveria adicionar os parâmetros dos charset e unix charset à seção [global] conforme descrito no Cenário 1 para a finalidade de evitar corrupção de nome de arquivo . Por razões de segurança, você possivelmente deseje definir "path = /home/alice/arquivos-compartilhados", assumindo que teu nome de usuário(a) seja alice e que você quer somente compartilhar os arquivos nesse diretório, em vez de todo o teu "home". Em seguida, substitua "homes" por "arquivos-compartilhados" e mude também o comment se usado o arquivo de configuração abaixo ou o "/etc/samba/smb.conf.default" para criar o teu.

O arquivo de configuração a seguir cria um compartilhamento separado para cada diretório inicial de usuário e também torna todas as impressoras disponíveis para máquinas Windows:

[global]
    workgroup = GRUPO_DE_TRABALHO
    dos charset = cp850
    unix charset = ISO-8859-1

[homes]
    comment = Diretórios Home
    browseable = no
    writable = yes

[printers]
    comment = Todas Impressoras
    path = /var/spool/samba
    browseable = no
    guest ok = no
    printable = yes

Outros parâmetros que você possivelmente queira personalizar na seção [global] incluem:

    server string =
    security =
    hosts allow =
    load printers =
    log file =
    max log size =
    socket options =
    local master =

Consulte os comentários no arquivo "/etc/samba/smb.conf.default" para informações relativas a esses parâmetros.

Como os processos de segundo plano smbd e nmbd são necessários nesse caso, instale o conjunto de comandos sequenciais de inicialização do samba. Certifique-se de executar smbpasswd (com a opção -a para adicionar usuários(as)) para habilitar e configurar senhas para todas as contas que precisam de acesso ao Samba. Usando a estrutura de retaguarda passdb padrão do Samba, qualquer usuário(a) que você tentar adicionar também será exigido(a) existir no arquivo /etc/passwd.

Exigências Avançadas

Cenários mais complexos envolvendo controle de domínio ou associação são possíveis. Essas configurações são tópicos avançados e não podem ser abordadas adequadamente no BLFS. Muitos livros completos foram escritos apenas a respeito desses tópicos. Observe que, em alguns cenários de associação de domínio, o processo de segundo plano "winbindd" e o conjunto de comandos sequenciais de inicialização correspondente são necessários.

Conta de visitante

A instalação padrão do "Samba" usa o(a) usuário(a) "nobody" para acesso de visitante ao servidor. Isso pode ser substituído configurando-se o parâmetro "guest account =" no arquivo "/etc/samba/smb.conf". Se você utilizar o parâmetro "guest account =", [então] certifique-se de que esse(a) usuário(a) exista no arquivo "/etc/passwd".

Conjunto de Comandos Sequenciais de Inicialização

Para a tua conveniência, conjuntos de comandos sequenciais de inicialização foram fornecidos para o "Samba". Existem dois incluídos no pacote "blfs-bootscripts-20240416". O primeiro, "samba", iniciará os processos de segundo plano "smbd" e "nmbd" necessários para fornecer serviços "SMB"/"CIFS". O segundo conjunto de comandos sequenciais, "winbind", inicia o processo de segundo plano "winbindd", usado para fornecer serviços de domínio do Windows para clientes Linux.

make install-samba
make install-winbindd

Conteúdo

Aplicativos Instalados: cifsdd, dbwrap_tool, dumpmscat, eventlogadm, gentest, ldbadd, ldbdel, ldbedit, ldbmodify, ldbrename, ldbsearch, locktest, masktest, mdsearch, mvxattr, ndrdump, net, nmbd, nmblookup, ntlm_auth, oLschema2ldif, pdbedit, profiles, regdiff, regpatch, regshell, regtree, rpcclient, samba-log-parser, samba-gpupdate, samba-regedit, samba-tool, sharesec, smbcacls, smbclient, smbcontrol, smbcquotas, smbd, smbget, smbpasswd, smbspool, smbstatus, smbtar, smbtorture, smbtree, tdbbackup, tdbdump, tdbrestore, tdbtool, testparm, wbinfo e winbindd
Bibliotecas Instaladas: libdcerpc-binding.so, libdcerpc-samr.so, libdcerpc-server-core.so, libdcerpc.so, libndr-krb5pac.so, libndr-nbt.so, libndr.so, libndr-standard.so, libnetapi.so, libnss_winbind.so, libnss_wins.so, libsamba-credentials.so, libsamba-errors.so, libsamba-hostconfig.so, libsamba-passdb.so, libsamba-policy.cpython-311-x86_64-linux-gnu.so, libsamba-util.so, libsamdb.so, libsmbclient.so, libsmbconf.so, libsmbldap.so, libtevent-util.so, libwbclient.so e módulos de sistemas de arquivos e de suporte sob /usr/lib/{python3.12,samba}
Diretórios Instalados: /etc/samba, /run/samba, /usr/include/samba-4.0, /usr/lib/python3.12/site-packages/samba, /usr/{lib,libexec,share}/samba e /var/{cache,lib,lock,log,run}/samba

Descrições Curtas

cifsdd

é o comando "dd" para "SMB"

dbwrap_tool

é usado para ler e manipular bases de dados "TDB"/"CTDB" usando a interface "dbwrap"

dumpmscat

despeja o conteúdo de arquivos de catálogo do "MS"

eventlogadm

é usado para escrever registros em registros de eventos a partir do "STDIN", adicionar a fonte especificada e entradas de registro de registro de eventos de "DLL" e exibir os nomes de registro de eventos ativos (a partir de "smb.conf")

gentest

é usado para executar operações genéricas aleatórias "SMB" contra dois servidores "SMB" e mostrar as diferenças de comportamento

ldbadd

é um utilitário de linha de comando para adicionar registros a uma base de dados "LDB"

ldbdel

é um utilitário de linha de comando para deletar registros de base de dados "LDB"

ldbedit

permite que você edite bases de dados "LDB" usando teu editor preferido

ldbmodify

permite que você modifique registros em uma base de dados "LDB"

ldbrename

permite que você renomeie bases de dados "LDB"

ldbsearch

pesquisa em uma base de dados "LDB" por registros que correspondam a uma expressão especificada

locktest

é usado para encontrar diferenças no bloqueio entre dois servidores "SMB"

masktest

é usado para encontrar diferenças na correspondência de curingas entre a implementação do Samba e aquela de um servidor remoto

mdsearch

executa pesquisas "Spotlight" em um servidor "SMB"

mvxattr

é usado para renomear recursivamente atributos estendidos

ndrdump

é um analisador e despejador de pacotes "DCE"/"RPC"

net

é uma ferramenta para administração de servidores "Samba" e "CIFS" remotos, semelhante ao utilitário "net" para "DOS"/"Windows"

nmbd

é o servidor de nomes "NetBIOS" do "Samba"

nmblookup

é usado para consultar nomes "NetBIOS" e mapeá-los para endereços "IP"

ntlm_auth

é uma ferramenta para permitir acesso externo à função de autenticação "NTLM" do "Winbind"

oLschema2ldif

converte esquemas "LDAP" em "LDIF" compatível com "LDB"

pdbedit

é uma ferramenta usada para gerenciar a base de dados "SAM"

profiles

é um utilitário que informa e muda "SIDs" em arquivos de registro do "Windows"

regdiff

é um aplicativo "Diff" para arquivos de registro do "Windows"

regpatch

aplica remendos de registro aos arquivos de registro

regshell

é um navegador de arquivos de registro do "Windows" usando "Readline"

regtree

é um visualizador de registro em modo texto

rpcclient

é usado para executar funções "MS-RPC" do lado do cliente

samba-log-parser

analisa registros do winbind gerados pelo Samba

samba-gpupdate

permite que você edite "Group Policy Objects" ("GPOs") da Microsoft

samba-regedit

é uma ferramenta baseada em "ncurses" para gerenciar o registro do Samba

samba-tool

é a principal ferramenta de administração do Samba

sharesec

manipula permissões de compartilhamento de "ACL" em compartilhamentos de arquivos "SMB"

smbcacls

é usado para manipular listas de controle de acesso do "Windows NT"

smbclient

é um utilitário de acesso "SMB"/"CIFS", semelhante ao "FTP"

smbcontrol

é usado para controlar a execução dos processos de segundo plano "smbd", "nmbd" e "winbindd"

smbcquotas

é usado para manipular cotas do "Windows NT" em compartilhamentos de arquivos "SMB"

smbd

é o principal processo de segundo plano do "Samba" o qual fornece serviços "SMB"/"CIFS" aos clientes

smbget

é um utilitário simples com semântica semelhante ao "wget", que consegue baixar arquivos a partir de servidores "SMB". Você consegue especificar os arquivos que gostaria de baixar na linha de comando

smbpasswd

muda uma senha do "Samba" de um usuário

smbspool

envia uma trabalho de impressão para uma impressora "SMB"

smbstatus

informa as conexões atuais do "Samba"

smbtar

é um conjunto de comandos sequenciais de "shell" usado para produzir cópia de segurança de compartilhamentos "SMB"/"CIFS" diretamente em unidades de fita do Linux ou em um arquivo

smbtorture

é uma suíte de teste que executa vários testes em um servidor "SMB"

smbtree

é um navegador de rede de intercomunicação "SMB" baseado em texto

tdbbackup

é uma ferramenta para produzir cópia de segurança ou para validar a integridade de arquivos .tdb do Samba

tdbdump

é uma ferramenta usada para imprimir o conteúdo de um arquivo .tdb do Samba

tdbrestore

é uma ferramenta para criar um arquivo .tdb do Samba a partir de um ntdbdump

tdbtool

é uma ferramenta que permite a manipulação simples de base de dados a partir da linha de comando

testparm

verifica um arquivo "smb.conf" quanto à sintaxe correta

wbinfo

consulta um processo de segundo "winbindd" em execução

winbindd

resolve nomes a partir de servidores "Windows NT"

libnss_winbind.so

fornece funções da "API" "Name Service Switch" para resolver nomes a partir de servidores "NT"

libnss_wins.so

fornece funções de "API" para implementação do Samba do "Windows Internet Naming Service"

libnetapi.so

fornece funções de "API" para as ferramentas de administração usadas para servidores Samba e "CIFS" remotos

libsmbclient.so

fornece funções de "API" para as ferramentas de cliente "SMB" do Samba

libwbclient.so

fornece funções de "API" para serviços de cliente de domínio do "Windows"