Samba-4.17.5

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 adequadamente usando uma plataforma LFS 11.3.

Informação do Pacote

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

  • Transferência (FTP):

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

  • Tamanho da transferência: 29 MB

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

  • Tempo de construção estimado: 2,2 UPC (usando paralelismo=4; adicionar 0,3 UPC para teste rápido)

Dependências do "Samba"

Exigidas

GnuTLS-3.8.0, jansson-2.14, JSON-4.10, libtirpc-1.3.3, lmdb-0.9.29 e rpcsvc-proto-1.4.3

Recomendadas

Opcionais

Avahi-0.8, BIND-9.18.12, Cups-2.4.2, Cyrus SASL-2.1.28, GDB-13.1, git-2.39.2, GnuPG-2.4.0 (exigido para "ADS" e a suíte de teste), libaio-0.3.113, libarchive-3.6.2, libcap-2.67 com PAM, libgcrypt-1.10.1, libnsl-2.0.0, libunwind-1.6.2, MIT Kerberos V5-1.20.1, nss-3.88.1, popt-1.19, Talloc-2.4.0 (incluso), Vala-0.56.4, Valgrind-3.20.0 (opcionalmente usado pela suíte de teste), xfsprogs-6.1.1, cmocka, cryptography, ctdb (incluso), cwrap, dnspython, FAM, Gamin, GlusterFS, Heimdal (incluso), iso8601, ldb (incluso), M2Crypto (exigido para "ADS"), OpenAFS, pyasn1, PyGPGME (recomendado para "ADS"), tevent (incluso), tdb (incluso) e tracker-2

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

Instale na ordem listada: six-1.16.0, pytest-7.2.1, argparse, extras, hypothesis, coverage, pytest-cov, doctools, unittest2, testtools, fixtures, python-mimeparse, contextlib2, traceback2, linecache2, testscenarios, testresources, virtualenv, pbr e python-subunit

Observações de Usuário(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            \
CPPFLAGS="-I/usr/include/tirpc"            \
LDFLAGS="-ltirpc"                          \
./configure                                \
    --prefix=/usr                          \
    --sysconfdir=/etc                      \
    --localstatedir=/var                   \
    --with-piddir=/run/samba               \
    --with-pammodulesdir=/usr/lib/security \
    --enable-fhs                           \
    --without-ad-dc                        \
    --enable-selftest                      &&
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 um caminho rigidamente codificado para o interpretador "Python" 3:

sed '1s@^.*$@#!/usr/bin/python3@' \
   -i ./bin/default/source4/scripting/bin/samba-gpupdate.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.11/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.LDAP  &&

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-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-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, 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 o teu local preferido, 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 as unidades "systemd" fornecidas.

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 a unidade do "systemd" "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 a unidade do "systemd" 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".

Unidades do systemd

Para iniciar os processos de segundo plano do "Samba" na inicialização, instale as unidades do "systemd" a partir do pacote "blfs-systemd-units-20220720" executando o seguinte comando como o(a) usuário(a) "root":

make install-samba

Para iniciar o processo de segundo plano "winbindd" na inicialização, instale a unidade do "systemd" a partir do pacote "blfs-systemd-units-20220720" executando o seguinte comando como o(a) usuário(a) "root":

make install-winbindd
[Nota]

Nota

Esse pacote vem com dois tipos de unidades: um arquivo de serviço e um arquivo de soquete. O arquivo de serviço iniciará o processo de segundo plano "smbd" uma vez na inicialização e ele continuará executando até o sistema ser desligado. O arquivo de soquete fará com que o "systemd" escute na porta do "smbd" (padrão 445, precisa ser editado para qualquer outra coisa) e iniciará o processo de segundo plano "smbd" quando algo tentar se conectar a essa porta e parará o processo de segundo plano quando a conexão for terminada. Isso é chamado de ativação de soquete e é análogo a usar "{,x}inetd" em um sistema baseado em "SysVinit".

Por padrão, o primeiro método é usado - o processo de segundo plano "smbd" é iniciado na inicialização e parado no desligamento. Se o método de soquete for desejado, [então] você precisa executar os seguintes comandos como o(a) usuário(a) "root":

systemctl stop smbd &&
systemctl disable smbd &&
systemctl enable smbd.socket &&
systemctl start smbd.socket

Observe que somente o processo de segundo plano "smbd" pode ser ativado por soquete.

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-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-310-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 suporte sob /usr/lib/{python3.11,samba}
Diretórios Instalados: /etc/samba, /run/samba, /usr/include/samba-4.0, /usr/lib/python3.11/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-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"