[ anterior ] [ Conteúdo ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ 19 ] [ 20 ] [ 21 ] [ próximo ]
Este capítulo descreve a configuração, utilização, aplicação, integração de
redes Windows e Linux através do SAMBA.
Entre as explicações de cada opção, são passados detalhes importantes
relacionados com seu funcionamento, performance e impactos de segurança sobre o
servidor como um todo.
Uma seção foi especialmente separada para os mais paranóicos (como eu) conhecerem, combinar e aplicar as restrições de forma mais adequada a configuração da máquina.
O SAMBA é um servidor e conjunto de ferramentas que permite que
máquinas Linux e Windows se comuniquem entre si,
compartilhando serviços (arquivos, diretório, impressão) através do protocolo
SMB (Server Message Block)/CIFS (Common Internet File System), equivalentes a
implementação NetBEUI no Windows. O SAMBA é uma das soluções em
ambiente UNIX capaz de interligar redes heterogênea.
Na lógica da rede Windows o NetBEUI é o protocolo e o
NETBIOS define a forma com que os dados são transportados. Não é
correto dizer que o NetBIOS é o protocolo, como muitos fazem.
Com o SAMBA, é possível construir domínios completos, fazer
controle de acesso a nível de usuário, compartilhamento, montar um servidor
WINS, servidor de domínio, impressão, etc. Na maioria dos casos o controle de
acesso e exibição de diretórios no samba é mais minucioso e personalizável que
no próprio Windows.
O guia Foca GNU/Linux documentará como instalar e ter as máquinas Windows de
diferentes versões (Win3.11, Win95, Win95OSR/2, Win98, XP, WinNT,
W2K) acessando e comunicando-se entre si em uma rede NetBEUI. Estas
explicações lhe poderão ser indispensáveis para solucionar problemas, até mesmo
se você for um técnico especialista em redes Windows e não tem ainda planos de
implementar um servidor SAMBA em sua rede.
A versão do servidor samba documentada neste capítulo do guia é a 2.2.
Andrew Tridgell - Desenvolveu o samba porque precisava montar um volume Unix em sua máquina DOS. Inicialmente ele utilizava o NFS, mas um aplicativo precisava de suporte NetBIOS. Andrew então utilizou um método muito avançado usado por administradores para detectar problemas: escreveu um sniffer de pacotes que atendesse aos requerimentos para ter uma única função: analisar e auxilia-lo a interpretar todo o tráfego NetBIOS da rede.
Ele escreveu o primeiro código que fez o servidor Unix aparecer como um servidor de arquivos Windows para sua máquina DOS que foi publicado mais ou menos em meados de 1992 quando também começou a receber patches. Satisfeito com o funcionamento de seu trabalho, deixou seu trabalho de lado por quase 2 anos. Um dia, ele resolveu testar a máquina Windows de sua esposa com sua máquina Linux, e ficou maravilhado com o funcionamento do programa que criou e veio a descobrir que o protocolo era documentado e resolveu levar este trabalho a fundo melhorando e implementando novas funções.
O SAMBA atualmente é um servidor fundamental para a migração de pequenos grupos de trabalho à grandes domínios com clientes mixtos. Nenhum servidor de rede NetBEUI conhecido proporciona tanta flexibilidade de acesso a clientes como o SAMBA para compartilhamento de arquivos/impressão em rede. As funções de segurança que foram adicionadas ao SAMBA hoje garantem um controle mais rigoroso que a própria implementação usada no Windows NT, incluindo o serviços de diretórios, mapeamento entre IDs de usuários Windows com Linux, PDC, perfis móveis e uma coisa que inclusive apresenta problemas no Windows: compatibilidade total entre as diferentes implementações de versões do Windows.
Sua configuração pode receber ajustes finos pelo administrador nos soquetes TCP de transmissão, recepção, cache por compartilhamento, configurações físicas que afetam a performance de rede. Seu código vem sendo melhorado constantemente por hackers, obtendo excelente performance com hardwares mais obsoletos. O guia tem por objetivo abordar estes temas e permitir que você configure seu sistema com uma performance batendo a mesma alcançada em um servidor NT dedicado.
Para contribuir com o desenvolvimento do samba, veja os detalhes na página: http://us1.samba.org/samba/devel/
Caso encontre um bug no programa, ele poderá ser relatado se inscrevendo na lista de discussão samba-technical-request@lists.samba.org. Após responder a mensagem de confirmação, envie um relato detalhado do problema encontrado no programa.
Segue abaixo algumas funcionalidades importantes de aplicações do samba e seu conjunto de ferramentas:
Compartilhamento de arquivos entre máquinas Windows e
Linux ou de máquinas Linux (sendo o servidor SAMBA)
com outro SO que tenha um cliente NetBEUI (Macintosh, OS/2, LanManager, etc).
Montar um servidor de compartilhamento de impressão no Linux que
receberá a impressão de outras máquinas Windows da rede.
Controle de acesso aos recursos compartilhados no servidor através de diversos métodos (compartilhamento, usuário, domínio, servidor).
Controle de acesso leitura/gravação por compartilhamento.
Controle de acesso de leitura/gravação por usuário autenticado.
Possibilidade de definir contas de "Convidados", que podem se conectar sem fornecer senha.
Possibilidade de uso do banco de dados de senha do sistema
(/etc/passwd), autenticação usando o arquivo de dados
criptografados do samba, LDAP, PAM, etc.
Controle de cache e opções de tunning por compartilhamento.
Permite ocultar o conteúdo de determinados diretórios que não quer que sejam exibidos ao usuário de forma fácil.
Possui configuração bastante flexível com relação ao mapeamento de nomes DOS => UNIX e vice versa, página de código, acentuação, etc.
Permite o uso de aliases na rede para identificar uma máquina com outro nome e simular uma rede NetBIOS virtual.
O samba possibilita ajuste fino nas configurações de transmissão e
recepção dos pacotes TCP/IP, como forma de garantir a melhor performance
possível de acordo com suas instalações.
Permite o uso do gerenciador de mensagem do Linux (Linpopup) para
a troca de mensagens com estações Windows via
NetBios. Com a flexibilidade do samba é possível até
redirecionar a mensagem recebida via e-mail ou pager.
Possui suporte completo a servidor WINS (também chamado de NBNS - NetBios Name Service) de rede. A configuração é bastante fácil.
Faz auditoria tanto dos acessos a pesquisa de nomes na rede como acesso a compartilhamentos. Entre os detalhes salvos estão a data de acesso, IP de origem, etc.
Suporte completo a controlador de domínio Windows (PDC).
Suporte quase completo a backup do controlador de domínio (BDC). Até a versão
2.2 do samba, o suporte a BDC é parcial. Este código
provavelmente estará estável até a versão 3.0.
Permite montar unidades mapeadas de sistemas Windows ou outros
servidores Linux como um diretório no Linux.
Permite a configuração de recursos simples através de programas de configuração gráficos, tanto via sistema, como via web.
Permite executar comandos no acesso ao compartilhamento ou quando o acesso ao compartilhamento é finalizado.
Com um pouco de conhecimento e habilidade de administração de sistemas
Linux, é possível criar ambientes de auditoria e monitoração até
monitoração de acesso a compartilhamento em tempo real.
Entre outras possibilidades.
Pacote samba
Outros utilitários importantes para a operação do clientes samba.
smbclient - Ferramenta para navegação e gerenciamento de arquivos,
diretórios e impressoras compartilhados por servidores Windows ou
samba.
smbfs - Pacote que possui ferramentas para o mapeamento de
arquivos e diretórios compartilhados por servidores Windows ou
samba em um diretório local.
winbind - Daemon que resolve nomes de usuários e grupo através de um servidor NT/SAMBA e mapeia os UIDs/GIDs deste servidor como usuários locais.
Processador 386 ou superior, 15 MB de espaço em disco (não levando em conta os logs gerados e espaço para arquivos de usuários, aplicativos, etc.), 8 MB de memória RAM.
O daemon nmbd salva seus logs em /var/log/daemon.log (dependendo da diretiva de
configuração syslog do arquivo smb.conf) e em
/var/log/samba/log.nmbd. Os detalhes de acesso a compartilhamento
são gravados no arquivo /var/log/samba/log.smbd (que pode ser
modificado de acordo com a diretiva log file no smb.conf,
Log de acessos/serviços, Seção 18.2.8.5).
Digite apt-get install samba smbclient smbfs para instalar o
conjunto de aplicativos samba. O pacote samba é o servidor samba
e os pacotes smbclient e smbfs fazem parte dos
aplicativos cliente. Caso deseje apenas mapear compartilhamentos remotos na
máquina Linux, instale somente os 2 últimos pacotes.
O servidor samba pode ser executado tanto via inetd como daemon:
No modo inetd, o servidor de nomes nmbd será carregado assim que for
feita a primeira requisição de pesquisa e ficará residente na memória. No caso
de acesso a um compartilhamento, o smbd será carregado e lerá a
configuração em smb.conf a cada acesso do cliente a um
compartilhamento. Quando o samba opera via inetd, ele não usa o
controle de acesso dos arquivos hosts.allow e
hosts.deny. Veja Restringindo o
acesso por IP/rede, Seção 18.12.2 e Restringindo o acesso por interface de rede, Seção
18.12.3 para detalhes de como fazer o controle de acesso.
Para reiniciar o samba digite killall -HUP nmbd. Não é necessário reiniciar o serviço smbd, conforme foi explicado acima.
Quando opera no modo daemon, ambos os daemons nmbd e
smbd são carregados. No caso de um acesso a compartilhamento, é
criado um processo filho do smbd que é finalizado assim que o
compartilhamento não for mais usado.
Para iniciar o samba em modo daemon digite: /etc/init.d/samba start, para interromper o samba: /etc/init.d/samba stop e para reiniciar: /etc/init.d/samba restart.
Se desejar mudar do modo daemon para inetd ou vice versa,
edite o arquivo /etc/default/samba e modifique o valor da linha
RUN_MODE= para daemons ou inetd. Uma
forma de fazer isso automaticamente é executando o dpkg-reconfigure
samba.
OBS: Como praticamente não existe diferença entre os modos de
operação inetd e daemon para o SAMBA, é
aconselhável que execute sempre que possível via inetd, pois isto
garantirá uma disponibilidade maior do serviço caso algo aconteça com um dos
processos.
Opções de linha de comando usadas pelo nmbd:
Quando especificado, o servidor samba fará a procura de nomes primeiro neste arquivo e depois usando a rede.
Especifica uma nova localização para o arquivo de configuração do samba. Por
padrão o /etc/samba/smb.conf é usado.
Especifica o nível de depuração do nmbd, que podem ir de 0 a 10. O valor padrão é 0.
Especifica a localização do diretório onde o nmbd gravará o arquivo de log
log.nmbd. O valor padrão é /var/log/samba
Permite utilizar o nome NetBIOS especificado a invés do especificado no arquivo
smb.conf para identificar o computador na rede.
Este capítulo documenta como configurar o seu servidor SAMBA
permitindo o acesso a compartilhamento de arquivos e impressão no sistema.
Toda a máquina em uma rede NetBEUI é identificada por um nome, este nome deve ser único na rede e permite que outras máquinas acessem os recursos disponibilizados ou que sejam enviadas mensagens para a máquina. Este nome é composto de 16 caracteres, sendo 15 que identificam a máquina e o último o tipo de serviço que ela disponibiliza. O tipo de serviço é associado com o nome da máquina e registrado em servidores de nomes confirme a configuração da máquina (você verá isto mais adiante).
O nome de máquina é especificado nas diretivas netbios name e netbios aliases (veja Nomes e grupos de trabalho, Seção 18.2.8.1) para detalhes.
O grupo de trabalho organiza a estrutura de máquinas da rede em forma de árvore, facilitando sua pesquisa e localização. Tomemos como exemplo uma empresa grande com os departamentos comunicação, redes, web, rh, as máquinas que pertencem ao grupo de redes serão agrupadas no programa de navegação:
redes
gleydson
tecnico
marcelo
henrique
michelle
rh
mrpaoduro
web
web1
web2
web3
comunicacao
comunic1
comunic2
comunic3
A segurança no acesso a arquivos e diretórios na configuração de grupo de
trabalho é controlada pela própria máquina, normalmente usando segurança a
nível de compartilhamento. Esta segurança funciona definindo um usuário/senha
para acessar cada compartilhamento que a máquina possui. O Lan
Manager, Windows for Workgroups, Windows 95,
Windows 98, XP Home Edition usam este nível de acesso
por padrão. Se deseja configurar uma rede usando o nível de grupo de trabalho,
veja Configuração em Grupo de
Trabalho, Seção 18.4 para detalhes passo a passo e exemplos
práticos.
Os programas para navegação na rede NetBIOS são mostrados em smbclient, Seção 18.14.2.9.2, nmblookup, Seção 18.14.2.9.3 e Programas de navegação gráficos, Seção 18.14.5.
O funcionamento é semelhante ao grupo de trabalho, com a diferença que a segurança é controlada pela máquina central (PDC) usando diretivas de acesso e grupos. O PDC (Primary Domain Controller) deverá ter todas as contas de acesso que serão utilizadas pelo usuário para acessar os recursos existentes em outras máquinas, script de logon que poderá ser executado em cada máquina para fazer ajustes, sincronismo, manutenção ou qualquer outra tarefa programada pelo administrador do sistema.
Estas características para configuração de máquinas em domínio são documentadas passo a passo em Uma breve introdução a um Domínio de rede, Seção 18.7.1.
Um compartilhamento é um recurso da máquina local que é disponibilizado para acesso via rede, que poderá ser mapeada (veja Mapeamento, Seção 18.2.5) por outra máquina. O compartilhamento pode ser um diretório, arquivo, impressora. Além de permitir o acesso do usuário, o compartilhamento pode ser protegido por senha, e ter controle de acesso de leitura/gravação, monitoração de acessos, diretórios ocultos, autenticação via PDC (domínio) e outras formas para restringir e garantir segurança na disponibilização dos dados (veja Controle de acesso ao servidor SAMBA, Seção 18.12 para aprender os métodos de como fazer isto).
Um compartilhamento no SAMBA pode ser acessível publicamente (sem senha) ou estar rigidamente protegido tendo que passar por diversas barreiras para chegar ao seu conteúdo, como senhas, endereço de origem, interfaces, usuário autorizados, permissões de visualização, etc.
O guia Foca Linux abordará estes assuntos com detalhes e explicará didaticamente como tornar seguro seu servidor samba e garantir um minucioso controle de acesso a seus compartilhamentos.
Mapear significa pegar um diretório/arquivo/impressora compartilhado por alguma
máquina da rede para ser acessada pela máquina local. Para mapear algum
recurso de rede, é necessário que ele seja compartilhado na outra máquina (veja
Compartilhamento, Seção 18.2.4). Por exemplo,
o diretório /usr compartilhado com o nome
usr, pode ser mapeado por uma máquina Windows como a
unidade F:, ou mapeado por uma máquina Linux no diretório
/mnt/samba.
O programa responsável por mapear unidades compartilhadas no Linux
é o smbmount e smbclient (veja Linux, Seção 18.14.2.9).
Esta função é controlada pelo nmbd que fica ativo o tempo todo
disponibilizando os recursos da máquina na rede, participando de eleições
NetBIOS (Níveis de sistema para eleição de rede,
Seção 18.2.12), fazer logon de máquinas no domínio (Uma breve introdução a um Domínio de rede, Seção
18.7.1), etc.
A função de navegação na rede é feita utilizando o compartilhamento
IPC$. Este compartilhamento possui acesso público somente leitura
e utiliza o usuário "guest" para disponibilização de seus. Como deve
ter percebido, é necessário especificar esta ID de usuário através do parâmetro
guest account (Descrição de
parâmetros usados em compartilhamento, Seção 18.3.1), ou a navegação de
recursos no sistema (ou na rede, dependendo da configuração do SAMBA) não
funcionará.
OBS: A função de navegação (browsing) poderá não funcionar corretamente caso a máquina não consiga resolver nomes NetBIOS para endereços IP.
Toda a configuração relacionada com nomes, grupo de trabalho, tipo de servidor,
log, compartilhamento de arquivos e impressão do samba é colocada
no arquivo de configuração /etc/samba/smb.conf. Este arquivo é
dividido em seções e parâmetros.
Uma seção no arquivo de configuração do samba
(smb.conf) é definido por um nome entre "[ ]". As
seções tem o objetivo de organizar os parâmetros pra que tenham efeito somente
em algumas configurações de compartilhamento do servidor (exceto os da seção
[global] que não especificam compartilhamentos, mas suas diretivas
podem ser válidas para todas os compartilhamentos do arquivo de configuração).
Alguns nomes de seções foram reservados para configurações específicas do
samba, eles são os seguintes:
Define configurações que afetam o servidor samba como um todo, fazendo efeito em todos os compartilhamentos existentes na máquina. Por exemplo, o grupo de trabalho, nome do servidor, página de código, restrições de acesso por nome, etc. Veja Seção [global], Seção 18.2.8.
Especifica opções de acesso a diretórios homes de usuários. O diretório home é disponibilizado somente para seu dono, após se autenticar no sistema. Veja Seção [homes], Seção 18.2.9.
Define opções gerais para controle das impressoras do sistema. Este
compartilhamento mapeia os nomes de todas as impressoras encontradas no
/etc/printcap. Configurações especiais podem ser feitas
separadamente. Veja Seção
[printers], Seção 18.2.10.
Define um perfil quando o servidor samba é usado como PDC de
domínio. Veja Configurando perfis de
usuários, Seção 18.7.8.
Qualquer outro nome de [seção] no arquivo smb.conf que não sejam
as acima, são tratadas como um compartilhamento ou impressora.
Um parâmetro é definido no formato nome = valor. Para um
exemplo prático, veja um exemplo de arquivo smb.conf em Exemplos de configuração do servidor SAMBA, Seção
18.15. Na configuração de booleanos, a seguinte sintaxe pode ser usada:
0 ou 1
yes ou no
true ou false
Assim, as seguintes configurações são equivalentes
master browse = 0
master browse = no
master browse = false
Todos significam "NÃO ser o navegador principal de domínio". A escolha fica a gosto do administrador. Durante a configuração, você notará o poder da flexibilidade oferecida pelo samba na configuração de um servidor SMB :-)
Linhas iniciadas por # ou ; são tratadas como comentário. Quebras de linha pode ser especificadas com uma \ no final da linha.
Os parâmetros especificados nesta seção tem efeito em todo o servidor
samba incluindo os compartilhamentos. Caso o parâmetro seja
novamente especificado para o compartilhamento, o valor que valerá é o do
compartilhamento.
Por exemplo, se guest user = nobody for usado na seção
[global] e o guest user = foca for usado no
compartilhamento [focalinux], o usuário que fará acesso público a
todos os compartilhamentos do servidor será o nobody, exceto para
o compartilhamento [focalinux], que será feito pelo usuário
foca. Veja Compartilhamento de arquivos
e diretórios, Seção 18.3 para obter uma lista e descrição dos principais
parâmetros de compartilhamentos existentes. Uma lista completa pode ser obtida
na página de manual do smb.conf.
Irei descrever alguns parâmetros utilizados nesta seção, organizado de forma didática e simplificada.
Especifica o nome NetBIOS primário do servidor samba. Caso não seja ajustado, ele usará o hostname de sua máquina como valor padrão.
Ex.: netbios name = focasamba.
Diz qual o nome do grupo de trabalho/domínio que a máquina samba pertencerá.
Ex.: workgroup = focalinux.
Permite o uso de nomes alternativos ao servidor, separados por espaços.
Ex.: teste1 teste2.
Identificação enviada do servidor samba para o ambiente de rede. A string padrão é Samba %v (%v é substituída pela versão do samba, para maiores detalhes, veja Variáveis de substituição, Seção 18.2.13).
Ex: server string = Servidor Samba versão %v.
Define a ordem de pesquisa para a resolução de nomes no samba. A ordem padrão é: lmhosts host wins bcast, que é a melhor para resolução rápida e que tente gerar menos tráfego broadcast possível. Veja Resolução de nomes de máquinas no samba, Seção 18.5 para uma explicação mais detalhada.
Uma das partes essenciais após colocar o SAMBA em funcionamento, é
configurar a página de código para que os caracteres sejam gravados e exibidos
corretamente no cliente. A primeira coisa que precisa verificar é se seu
kernel possui o suporte a página de código local. Caso não tenha, baixe o
fonte do kernel e siga os seguintes passos na configuração:
Dentro da opção "File Systems", "Network File Systems"
defina como "Default Remote NLS Option" a iso8859-1. Esta opção
permite ao smbmount montar os volumes locais usando os caracteres
corretos.
Entre na opção "File Systems", "Native Language Support". Na opção "Default NLS Option" coloque "iso8859-1". Ative também o suporte as páginas de código 437, 850 e 860 e também ao conjunto de caracteres iso8859-1 e UTF8.
Note que esta ordem pode variar dependendo da versão do seu kernel, basta que as entenda para fazer as modificações apropriadas.
Seleciona o conjunto de caracteres dos arquivos exibidos pelo servidor samba. Para os idiomas de língua latina, sempre utilize iso8859-1.
Ex.: character set = iso8859-1.
Seleciona a página de código do servidor samba para tratar os caracteres. Para os idiomas de língua latina, sempre utilize 850.
Ex.: client code page = 850.
Seleciona se arquivos com nomes extensos criados serão criados com os caracteres em maiúsculas/minúsculas definidos pelo cliente (no) ou se será usado o valor de default case (caso seja especificado yes).
Seleciona se os arquivos com nomes curtos (formato 8.3) serão criados com os caracteres mixtos enviados pelo cliente (no) ou se será usando o valor de default case (caso seja especificado yes).
Define se os arquivos criados terão seus nomes todos em minúsculas (lower) ou maiúsculas (upper).
Define caracteres válidos nos nomes de arquivos: valid chars =á:Á é:É í:Í ó:Ó ú:Ú â:Â ê:Ê ô:Ô ã:Ã õ:Õ à:À ò:Ò. Este parâmetro DEVERÁ ser sempre especificado depois do client code page, pois caso contrário, eles serão substituídos por estes.
Define a conta local de usuário que será mapeada quando um usuário se conectar sem senha (usuário guest). Veja mais detalhes em Descrição de parâmetros usados em compartilhamento, Seção 18.3.1.
Define uma lista de usuários que não terão acesso aos recursos do servidor ou compartilhamento. É seguro restringir o acesso samba a usuários com grande poder no sistema (como o root). Veja mais detalhes em Restringindo o acesso por usuários, Seção 18.12.4.
Semelhante a opção invalid users mas permite que somente os usuários especificados tenham acesso ao sistema. Veja mais detalhes em Restringindo o acesso por usuários, Seção 18.12.4.
Caso o serviço que o usuário deseja se conectar não for encontrado no servidor, o SAMBA mapeará o serviço especificado nesta diretiva como alternativa. A variável "%S" e o caracter "_" podem ser interessantes em algumas alternativas de configuração. A opção default é um sinônimo para esta opção. Caso utilize esta opção, crie o compartilhamento em modo somente leitura e com acesso público, caso contrário (dependendo do planejamento de partições e segurança do sistema de arquivos) a máquina poderá ser derrubada sem dificuldades.
Especifica um arquivo que faz o mapeamento entre nomes fornecidos por clientes e nomes de contas Unix locais. Veja Mapeamento de nomes de usuários, Seção 18.12.16 para mais detalhes de como configurar este recurso.
Indica se as restrições do usuário nos módulos PAM terão efeito também no SAMBA.
(esta seção contém algumas explicações que dependem do resto do conteúdo do guia, caso não entenda de imediato a fundo as explicações, recomendo que a leia novamente mais tarde).
Define o nível de segurança do servidor. Os seguintes valores são válidos:
share - Usada principalmente quando apenas a senha é enviada por
compartilhamento acessado para o servidor, caso muito típico em sistemas
Lan Manager e Windows for Workgroups.
Mesmo assim o samba tenta mapear para um UID de usuário local do sistema usando os seguintes métodos (retirado da página de manual do samba):
Se o parâmetro guest only é usado no compartilhamento junto com o guest ok, o acesso é imediatamente permitido, sem verificar inclusive a senha.
Caso um nome de usuário seja enviado junto com a senha, ele é utilizado para mapear o UID e aplicar as permissões deste usuário (como acontece no nível de segurança user).
Se ele usou um nome para fazer o logon no Windows este nome será
usado como usuário local do SAMBA. Caso ele seja diferente, você deverá usar o
mapeamento de nomes para associar o nome remoto do nome local (veja Mapeamento de nomes de usuários, Seção
18.12.16)
O nome do serviço é tentado como nome de usuário.
O nome da máquina NetBios é tentada como nome de usuário
Os usuários especificados na opção user do compartilhamentos são utilizados (veja Descrição de parâmetros usados em compartilhamento, Seção 18.3.1).
Caso nenhum destes métodos acima for satisfeito, o acesso é NEGADO.
Hoje em dia, o uso do nível de acesso share é raramente usado,
porque todos os sistemas a partir do Windows 95 e acima enviam o
nome de usuário ao acessar um compartilhamento (caindo na segunda checagem do
nível share), sendo equivalente a usar o nível user.
Entretanto, o nível de segurança share é recomendado para servidores
onde TODO o conteúdo deve ter acesso público (seja leitura ou gravação) e o
parâmetro guest shares também funciona nativamente.
As senhas criptografadas (encrypt passwords = 1) NÃO funcionarão no nível share, lembre-se deste detalhe.
user - Este é o padrão. O usuário precisa ter uma conta de
usuário no Linux para acessar seus compartilhamentos. A mesma
conta de usuário/senha deverá ser usada no Windows para acessar
seus recursos ou realizado um mapeamento de nomes de usuários (veja Mapeamento de nomes de usuários, Seção
18.12.16). Este é o padrão do SAMBA. No nível de acesso user o
usuário precisa ser autenticado de qualquer forma, inclusive se for usado o
parâmetro guest only ou user. Os seguintes passos
são usados para autorizar uma conexão usando o nível user (retirado da
documentação do SAMBA):
É tentada a validação usando o nome/senha passados pelo cliente. Se tudo estiver OK, a conexão é permitida.
Caso já tenha se autenticado anteriormente para acessar o recurso e forneceu a senha correta, o acesso é permitido.
O nome NetBIOS da máquina do cliente e qualquer nome de usuário que foi usado é novamente tentado junto com a senha para tentar permitir o acesso ao recurso compartilhado.
Caso o cliente tenha validado o nome/senha com o servidor e o cliente enviou novamente o token de validação, este nome de usuário é usado.
É tentada a checagem com o parâmetro user no compartilhamento (veja Descrição de parâmetros usados em compartilhamento, Seção 18.3.1.
É verificado se o serviço é público, então a conexão é feita usando o usuário guest account e ignorando a senha (veja Criando um compartilhamento para acesso sem senha, Seção 18.12.7).
domain - Neste nível, o acesso só será permitido quando a máquina
for adicionada ao domínio com o smbpasswd (Linux, Seção 18.14.3.9). Neste nível de
acesso, a conta de usuário será validada em um servidor PDC (controlador de
domínio) e o acesso aos recursos das máquinas que fazem parte do domínio será
feito a partir do PDC. Veja Linux, Seção
18.14.3.9 para detalhes.
server - A máquina samba tentara autenticar o usuário em outro servidor NT (ou samba). No caso da autenticação falhar, será usado o nível de acesso user na base de usuários local (será necessário o arquivo de senhas criptografado do samba para que a autenticação local funcione, veja Ativando o suporte a senhas criptografadas, Seção 18.8). Este nível é bastante usado quando configuramos um servidor de perfis de usuários ou logon separado do PDC.
Define a localização e nome do arquivo de log gerado pelo samba. As variáveis de expansão podem ser usadas caso o administrador queira ter um melhor controle dos logs gerados (veja Variáveis de substituição, Seção 18.2.13).
Ex.: /var/log/samba/samba-log-%m.
OBS: Se possível coloque uma extensão no arquivo de log gerado
pelo SAMBA (como .log). O motivo disto é porque se
estes logs forem rotacionados pelo logrotate você terá problemas
de recompactação múltiplas caso utilize um coringa samba-log-*,
gerando arquivos como .gz.gz.gz.., lotando a tabela de arquivos do
diretório e deixando sua máquina em um loop de compactação.
Especifica o tamanho máximo em Kb do arquivo de log gerado pelo samba. O valor padrão é 5000Kb (5MB).
Este processo adiciona a pid aos logs gerados pelo processo smbd
Isto é útil para depuração caso existam múltiplos processos rodando. O valor
padrão é no e a opção debug timestamp deve ser
yes para esta opção ter efeito.
Ativa ou desativa a gravação de data/hora nos arquivos de log gerados pelo samba. O valor padrão é yes.
Aumenta o nível de depuração dos daemons do SAMBA de 0 a
9. Um nível de depuração interessante e que produz uma quantidade
razoável de dados para configuração de um logrotate só para o
SAMBA é o 2, produzindo a lista de todos os compartilhamentos
acessados, quem acessou, data/hora (dependendo das outras opções de depuração).
Isto permite ao administrador saber exatamente o que está sendo acessado e por
quem, quais as tentativas de acesso. Assim terá certeza que o conteúdo não
está sendo acessado indevidamente. O nível de depuração 0 é o
padrão.
Este parâmetro inclui o euid, egid, uid, gid nos arquivos de log. O valor padrão é no.
Define onde serão gravados os arquivos de lock gerados pelo samba.
Especifica o nível do sistema operacional. Este número é usado para as eleições netbios para definir o navegador de grupo local e controlador de domínio (veja Níveis de sistema para eleição de rede, Seção 18.2.12 para detalhes). O valor pode ser de 0 a 255, o padrão é 32.
Selecione o nome que o samba (nmbd) se anunciará na
lista de pesquisa de rede. Os seguintes nomes podem ser usados:
NT Server (ou NT) - Anuncia como Windows NT Server. Este é o padrão.
NT Workstation - Anuncia-se como um NT Workstation.
Win95 ou WfW - Anuncia-se na rede como uma estação Windows 9x, Windows for Workgroups, Windows NT Server e Windows NT Workstation de uma só vez.
Diz se o servidor tentará se tornar o navegador principal de domínio. Os valores que podem ser especificados são: yes, no e auto. O valor padrão é auto. Veja Domain Master Browser, Seção 18.7.3.
Diz se o servidor participará ou não das eleições para navegador local do grupo de trabalho (workgroup). Os valores que podem ser especificados são: yes, no. O valor padrão é yes. Para vencer a eleição, o samba precisa ter o valor de os level maior que os demais.
Note também que o Windows NT não aceita perder as eleições e convoca uma nova eleição caso ele perca. Como esta eleição é feita via broadcasting, isso gera um tráfego grande na rede. Desta forma, se tiver um computador NT na rede configure este valor para "no". Veja Local Master Browser, Seção 18.7.2.
Diz se o servidor samba terá ou não vantagens de ganhar uma eleição local. Se estiver configurado para "yes", o servidor samba pedirá uma eleição e terá vantagens para ganha-la. O servidor poderá se tornar garantidamente o navegador principal do domínio se esta opção for usada em conjunto com domain master = 1. Os valores especificados podem ser yes, no e auto, o padrão é auto.
Antes de ajustar este valor para yes, verifique se existem outros servidores NetBIOS em sua rede que tem preferência para se tornar o master principal, pois poderá ocorrer um tráfego alto de broadcasting causado pelas eleições solicitadas pelas outras máquinas.
Inclui um outro arquivo de configuração na porção atual do arquivo de configuração. Você pode utilizar variáveis de substituição, exceto %u, %P e %S (veja Variáveis de substituição, Seção 18.2.13).
Esta seção tem a função especial de disponibilizar o diretório home do usuário.
Quando o usuário envia seu nome de login como compartilhamento é feita uma
busca no arquivo smb.conf procurando por um nome de
compartilhamento que confira. Caso nenhum seja encontrado, é feita uma busca
por um nome de usuário correspondente no arquivo /etc/passwd, se
um nome conferir e a senha enviada também, o diretório de usuário é
disponibilizado como um compartilhamento com o mesmo nome do usuário local. O
diretório home do usuário poderá ser modificado com o uso de mapeamento de
nomes, veja Mapeamento de nomes de usuários,
Seção 18.12.16. Quando o caminho do compartilhamento não for especificado,
o SAMBA utilizará o diretório home do usuário (no /etc/passwd).
Para maior segurança da instalação, principalmente porque o diretório home do usuário não é um requerimento para a autenticação de usuário, recomendo usar a variável de substituição %S apontando para um diretório com as permissões apropriadas configuradas em seu sistema, por exemplo:
[homes]
comment = Diretórios de Usuários
path=/pub/usuarios/%S
Você apenas terá o trabalho extra de criar os diretórios de usuários que farão
acesso ao sistema. Isto não será nenhum problema após você programar um shell
script simples que verifique os nomes de contas em /etc/passwd e
crie os diretórios com as permissões/grupos adequados (isso não será abordado
por este capítulo do guia, embora não seja complicado). Se deseja, existem
exemplos em Exemplos de configuração do servidor
SAMBA, Seção 18.15 sobre a seção [homes] no arquivo de
configuração.
Os parâmetros aceitos em [homes] aqui são os mesmos usados para compartilhamentos normais (veja Descrição de parâmetros usados em compartilhamento, Seção 18.3.1). Abaixo segue mais um exemplo de seção [homes]:
[homes]
comment = Diretório home de usuários
writable = yes
public = no
invalid users = root nobody @adm
follow symlinks = no
create mode = 0640
directory mode = 0750
A explicação de cada um dos parâmetros podem ser encontradas em Descrição de parâmetros usados em compartilhamento, Seção 18.3.1. O guia está com os parâmetros bem organizados em seções específicas, apenas de uma olhada para entender com o capítulo do SAMBA foi organizado e não terá dificuldades de se localizar.
OBS1:Caso nenhum caminho de compartilhamento seja utilizado, o diretório home do usuário será compartilhado.
OBS2:Não utilize o parâmetro public yes na seção guest, caso contrário todos os diretórios de usuários serão lidos por todos. Veja Considerações de segurança com o uso do parâmetro "public = yes", Seção 18.12.14 para maiores detalhes.
Esta seção tem a função de disponibilizar as impressoras existentes no sistema
(lp, lp1, lp2, etc) existentes no /etc/printcap como
compartilhamento de sistemas Windows. O método que os nomes de impressoras são
pesquisados é idêntico a forma feita para a seção [homes]: Primeiro o
nome do compartilhamento é pesquisado como um nome de serviço, depois se ele é
um nome de usuário (tentando mapear o serviço disponibilizado em [homes]),
depois será verificado a seção [printers].
Ao invés de usar este recurso, se preferir você poderá compartilhar as impressoras individualmente. Para detalhes, veja Configurando o Linux como um servidor de impressão Windows, Seção 18.11.1.
OBS:É importante lembrar que a seção [printers]
DEVE ser definida como printable usando o
parâmetro printable = yes para funcionar. O utilitário
testparm poderá ser usado para verificar problemas no arquivo cd
configuração do SAMBA (veja Buscando problemas
na configuração, Seção 18.2.11).
Durante o processo de configuração do SAMBA, é comum cometer erros de
digitação, usar parâmetros em lugares indevidos, etc. É recomendável o uso do
testparm para checar a configuração do SAMBA sempre que houver
modificações para ter certeza nada comprometa o funcionamento que planejou para
sua máquina.
Para usar o testparm é só digitar testparm. Logo
após executa-lo, analise se existem erros nas seções de configuração e te
pedirá para pressionar <ENTER> para ver um dump do arquivo:
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[tmp]"
Processing section "[cdrom]"
Loaded services file OK.
Press enter to see a dump of your service definitions
A saída acima indica que está tudo OK com todas as configurações que foram realizadas no servidor. É possível especificar um outro arquivo de configuração do SAMBA usando testparm /etc/samba/smb2.conf.
Também é permitido simular o nome NetBIOS que fará acesso a máquina usando o parâmetro -L nome (que será substituído na variável %L).
Para selecionar qual sistema NetBIOS será o local master browse ou domain master browse, é usado um método bastante interessante: o de eleições.
Quando uma nova máquina entra na rede NetBIOS, ela solicita quem é o Local Master Browser, caso nenhuma responda, ela força uma eleição na rede através de uma requisição Broadcasting especial. Vence a eleição quem tiver o ***maior número***, chamado de OS Level (nível de sistema operacional). Caso duas máquinas empatem, o desempate é feito usando outros critérios.
Se você for a única máquina de um workgroup, automaticamente você será o Local Master Browser. De meia em meia hora uma nova eleição é feita, forçando mais tráfego broadcasting na rede. Durante este novo processo de eleição, a lista de computadores é atualizada; as novas máquinas são adicionadas e as desligadas saem da lista após 36 minutos. Este é o motivo porque as máquinas Windows continuam aparecendo no ambiente de rede por algum tempo mesmo depois que desligadas ou porque elas não aparecem de imediato.
O OS Level é um número que é característico de cada sistema operacional ficando entre 0 (mais baixo) e 255. Os níveis de acessos dos sistemas operacionais são os seguintes:
Windows for Workgroups 1
Windows 95 1
Windows 98 2
Windows 98 Second Edition 2
Windows 2000 Server (standalone) 16
Windows 2000 Professional 16
Windows NT 4.0 Wks 17
Windows NT 3.51 Wks 16
Windows NT 3.51 Server 32
Windows NT 4.0 Server 33
Windows 2000 Server (Domain Controller) 32
SAMBA 32
O valor padrão do OS Level do SAMBA é 32, entretanto ele é bastante flexível para permitir sua mudança através do parâmetro "os level" (veja Navegação no servidor/tipo de servidor, Seção 18.2.8.6), isto garante que o SAMBA sempre vença as eleições da rede sobre qualquer outro sistema operacional.
No caso de um servidor que estiver configurado para ser o navegador de rede,
assim que for iniciado ele solicitará uma eleição de rede. As regras são as
mesmas, vence o que tiver o *maior* número. Este número pode ser configurado
facilmente no SAMBA para que ele sempre vença as eleições de rede, tomando
conta da lista de máquinas. Isto é especialmente interessante por causa da
estabilidade do servidor Linux, quando migramos de servidor NT ou
para fornecer mais serviços de navegação, como servidor WINS.
OBS: Nunca deixe um servidor NT configurado para ser o Local Browser ou Domain Master Browser competir com o SAMBA. Mesmo que o SAMBA ganhe, o NT é um péssimo perdedor e convoca uma nova eleição para tentar novamente se eleger, gerando um *extremo* tráfego broadcasting em redes grandes.
Esta seção foi baseada nos dados da página de manual do samba, com adições que não estavam presentes na versão original e exemplos. Existem variáveis especiais que podem ser usadas no arquivo de configuração do samba e são substituídas por parâmetros especiais no momento da conexão do usuário. Um exemplo de utilização de variáveis de substituição seria mudar a localização do diretório home do usuário:
[homes]
comment = Diretório home do usuário
path = /home/usuarios/%u
Cada uma das variáveis são descritas em detalhes abaixo:
O nome do serviço atual, se existir. Seu uso é interessante, principalmente no uso de diretórios homes.
O diretório raíz do serviço atual, se existir.
O nome de usuário do serviço atual, se aplicável. Esta variável é bastante útil para programação de scripts e também para criar arquivos de log personalizados, etc.
O grupo primário do usuário %u.
O nome de usuário da seção (o nome de usuário solicitado pelo cliente, não é uma regra que ele será sempre o mesmo que ele recebeu).
O nome do grupo primário de %U.
O diretório home do usuário, de acordo com %u.
A versão do Samba.
O nome DNS da máquina que está executando o Samba.
O nome NetBIOS da máquina do cliente. Isto é muito útil para log de conexões personalizados e outras coisas úteis.
O nome NetBIOS do servidor. Como o servidor pode usar mais de um nome no samba (aliases), você poderá saber com qual nome o seu servidor está sendo acessado e possivelmente torna-lo o nome primário de sua máquina.
O nome DNS da máquina cliente.
O nome do seu servidor de diretórios home NIS. Este parâmetro é obtido de uma entrada no seu arquivo auto.map. Se não tiver compilado o SAMBA com a opção --with-automount então este valor será o mesmo de %L.
O caminho do diretório home do serviço, obtido de uma entrada mapeada no
arquivo auto.map do NIS. A entrada NIS do arquivo
auto.map é dividida na forma "%N:%p".
O nível de protocolo selecionado após a negociação. O valor retornado pode ser CORE, COREPLUS, LANMAN1, LANMAN2 ou NT1.
A identificação de processo do processo atual do servidor.
A arquitetura da máquina remota. Somente algumas são reconhecidas e a resposta
pode não ser totalmente confiável. O samba atualmente reconhece
Samba, Windows for Workgroups, Windows 95,
Windows NT e Windows 2000. Qualquer outra coisa será
mostrado como "UNKNOWN" (desconhecido).
O endereço IP da máquina do cliente.
A data e hora atual.
Retorna o valor da variável de ambiente especificada.
Esta seção documenta como disponibilizar arquivos e impressoras com o SAMBA e os parâmetros usados para realizar restrições de compartilhamento, modo que os dados serão disponibilizados e ítens de performance. A maior parte destes parâmetros são empregados em serviços do SAMBA, mas nada impede que também sejam colocado na seção [global] do arquivo de configuração, principalmente quando isto é válido para diversos serviços compartilhados (veja Seção [global], Seção 18.2.8).
Abaixo o guia traz algumas das opções que podem ser usadas para controlar o comportamento do compartilhamento de arquivos por serviços no servidor SAMBA:
Indica o diretório que será compartilhado. Lembre-se que o usuário terá as permissões de acesso que ele teria caso estivesse logado no sistema como um usuário UNIX normal, exceto se estiver fazendo mapeamento para outros nomes de usuários (veja Mapeamento de nomes de usuários, Seção 18.12.16).
Ex: path=/pub - Compartilha o diretório local /pub.
OBS: Quando não é definido um path, o diretório
/tmp é usado como padrão.
Descrição do compartilhamento que será mostrada na janela de procura de rede ou no smbclient -L maquina.
Ex: comment=Pasta de conteúdo público do sistema.
Define se o compartilhamento será ou não exibido na janela de procura de rede. Mesmo não sendo exibido, o compartilhamento poderá ser acessado. Veja Criando um compartilhamento invisível, Seção 18.12.12 para uma explicação mais detalhada.
Ex: browseable=yes - Lista o compartilhamento na janela de pesquisa de servidores.
Conta que será usada para fazer acesso sem senha (convidado) quando o parâmetro guest ok ou public forem usados em um compartilhamento. Por padrão ela é mapeada para o usuário nobody. É importante especificar uma nome de usuário guest (convidado), principalmente porque seu UID será usado para fazer várias operações no SAMBA, como exibir os recursos disponíveis na máquina para a rede. Por motivos claros, é recomendável que este usuário não tenha acesso login ao sistema.
Caso não tenha a intenção de ocultar o SAMBA na lista de máquinas da rede (fazendo apenas acesso direto aos recursos), especifique um valor para esta opção.
Ex: guest account = sambausr - Mapeia os usuário se conectando sem senha para o usuário sambausr, desde que o acesso guest seja permitido pela opção public.
Permitem aos usuários usuários se conectarem ao compartilhamento sem fornecer uma senha usando o usuário guest. O UID que o usuário guest será mapeado é especificado pelo parâmetro guest account). Veja Criando um compartilhamento para acesso sem senha, Seção 18.12.7. O parâmetro guest ok é equivalente a public.
Ex: public = no - Não permite
Permite somente conexões guest ao recurso. O UID do usuário é mapeado para guest, mesmo que forneça uma senha correta. O valor padrão é no.
Ex: guest only = no.
Lista de usuários separados por espaço ou vírgula que poderão ler e gravar no
compartilhamento. Caso o nome for iniciado por "@", o nome
especificado será tratado como um grupo UNIX (/etc/group) e todos
os usuários daquele grupo terão acesso de gravação. O uso deste parâmetro
ignora o read only = yes. Veja Excessão de acesso na permissão padrão de
compartilhamento, Seção 18.12.10 para mais detalhes.
Ex: write list = gleydson, @usuarios - Permite acesso gravação somente do usuário gleydson e todos os usuários pertencentes ao grupo @usuarios.
OBS: - O significado de "@" nos parâmetros "invalid users"/"valid users" é diferente das opções write list e read list.
Lista de usuários separados por espaço ou vírgula que poderão apenas ler o compartilhamento. O caracter "@" pode ser especificado para fazer referência a grupos, como no write list. O uso deste parâmetro ignora o read only = no. Veja Excessão de acesso na permissão padrão de compartilhamento, Seção 18.12.10 para mais detalhes.
Ex: read list = nobody, system, operador, @usuarios - Permite acesso de leitura somente do usuário nobody, system, operador e todos os usuários pertencentes ao grupo @usuarios.
Especifica um ou mais nomes de usuários ou grupos (caso o nome seja seguido de
"@") para checagem de senha. Quando o cliente somente fornece uma
senha (especialmente na rede Lan Manager, Windows for
Workgroups e primeira versão do Windows 95) ela será
validada no banco de dados de senhas usando o usuário especificado nesta opção.
Ex: user = john @usuariosrede
Especifica se somente serão permitidas conexões vindas de usuários da diretiva user. O padrão é no. Caso deseje restringir o acesso a determinados usuários, o certo é faze-lo usando valid users e invalid users (veja Restringindo o acesso por usuários, Seção 18.12.4). O uso de only user é apropriado quando é necessário um controle específico de acesso sobre a diretiva user.
Ex: only user = no.
Permite ao SAMBA fazer um lock real de arquivo ou apenas simular. Caso seja especificado como "0", o arquivo não é bloqueado para acesso exclusivo no servidor mas uma resposta positiva de lock é retornada ao cliente. Se definido como "1", um lock real é feito. O padrão é yes.
Ex: locking = yes
Faz o SAMBA ignorar o compartilhamento (como se tivesse retirado do servidor). O valor padrão é "no".
Permite o uso de links simbólicos no compartilhamento (veja também a opção wide links). A desativação desta opção diminui um pouco a performance de acesso aos arquivos. Como é restrita a compartilhamento, o impacto de segurança depende dos dados sendo compartilhados. O valor padrão desta opção é "YES".
Ex: follow symlinks = yes
Permite apontar para links simbólicos para fora do compartilhamento exportada pelo SAMBA. O valor padrão esta opção é "YES".
Ex: wide links = yes.
OBS: - A desativação desta opção causa um aumento na performance do servidor SAMBA, evitando a chamada de funções do sistema para resolver os links. Entretanto, diminui a segurança do seu servidor, pois facilita a ocorrência de ataques usando links simbólicos.
Lembre-se mais uma vez que a segurança do seu sistema começa pela política e uma instalação bem configurada, isso já implica desde a escolha de sua distribuição até o conhecimento de permissões e planejamento na implantação do servidor de arquivos.
Não mostra o conteúdo de diretórios especificados.
Ex: dont descend = /root, /proc, /win/windows, "/win/Arquivos de Programas", "/win/program files".
Especifica se o compartilhamento é uma impressora (yes) ou um compartilhamento de arquivo/diretório (no). O padrão é "no".
Especifica se o compartilhamento é somente para leitura (yes) ou não (no) para todos os usuários. O parâmetro writable é um antônimo equivalente a este parâmetro, só que utiliza as opções invertidas. Por segurança, o valor padrão é somente leitura. Veja uma explicação mais detalhada em Criando um compartilhamento com acesso somente leitura, Seção 18.12.8.
Ex: read only = yes.
Modo padrão para criação de arquivos no compartilhamento. O parâmetro "create mode" é um sinônimo para este. O modo de arquivos deve ser especificado em formato octal.
Ex: create mask = 0600.
Modo padrão para a criação de diretórios no compartilhamento. O parâmetro "directory mode" é um sinônimo para este. O modo de diretório deve ser especificado em formato octal.
Ex: directory mask = 0700.
Permite utilizar um cache para acesso as requisições getwd, diminuindo o número de ciclos de processamento para acesso a arquivos/diretórios. O valor padrão é "Yes".
Tamanho do cache de leitura/gravação do compartilhamento. Este valor é especificado em bytes e o padrão é "0". Veja Melhorando a performance do compartilhamento/servidor, Seção 18.13 para detalhes sobre seu uso.
Ex: write cache size = 384000.
Permite herdar permissões de arquivos/diretórios do diretório pai quando novos arquivos/diretórios são criados, isto inclui bits SGID (set group ID). O padrão é NÃO herdar permissões. O uso desta opção substitui as opções fornecidas por create mask, directory mask, force create mask e force directory mask.
Ex: inherit permissions.
Executa um comando antes a abertura de um compartilhamento. O parâmetro exec é um sinônimo para este. Veja Executando comandos antes e após o acesso ao compartilhamento, Seção 18.12.13.
Executa um comando depois da utilização do compartilhamento. Veja Executando comandos antes e após o acesso ao compartilhamento, Seção 18.12.13.
Fecha imediatamente o compartilhamento caso o valor do comando executado pela opção preexec seja diferente de 0. O uso desta opção só faz sentido em conjunto com preexec. O valor padrão é "no". Veja Executando comandos antes e após o acesso ao compartilhamento, Seção 18.12.13.
Exemplo: preexec close = yes.
Retorna o nome de volume especificado quando é feito o acesso ao compartilhamento. Isto é muito útil para instalações onde o serial do CD, disquete ou HD é verificado durante o acesso. Isto acontece com freqüência em produtos de fabricantes proprietários como forma de evitar a execução ilegal do programa.
A configuração grupo de trabalho é o método mais simples para compartilhar recursos em uma rede e também é indicado quando se possui uma rede pequena (até 30 máquinas) pois o gerenciamento não é tão complicado. Acima deste número, é recomendada a utilização da configuração de domínio para definição de políticas de acesso mais precisas pelo administrador e para manter o controle sobre os recursos da rede (veja Configurando um servidor PDC no SAMBA, Seção 18.7.4).
A configuração do nível de acesso por grupo de trabalho tem como características principais essa simplicidade na configuração e o controle de acesso aos recursos sendo feito pela máquina local através de senhas e controle de IP.
Quanto ao método de senhas, você pode optar tanto por usar senhas criptografadas (Ativando o suporte a senhas criptografadas, Seção 18.8) ou senhas em texto limpo (Ativando o suporte a senhas em texto plano, Seção 18.9).
Veja abaixo um exemplo explicado de configuração do SAMBA para
grupo de trabalho:
[global]
netbios name = servidor
workgroup = focalinux
security = user
obey pam restrictions = yes
encrypt passwords = no
os level = 30
guest account = nobody
server string = servidor da rede
local master = true
domain master = false
[homes]
comment = Diretórios de usuários
create mask= 0700
directory mask = 0700
browseable = no
[tmp]
path = /tmp
comment = Diretório temporário do sistema
read only = yes
valid users = gleydson
public = no
Agora, verifique se existem erros na configuração com o comando
testparm (Buscando problemas na
configuração, Seção 18.2.11) e reinicie o SAMBA (Iniciando o servidor/reiniciando/recarregando a
configuração, Seção 18.1.9). O nome do grupo de trabalho que a máquina
pertencerá é focalinux (workgroup = focalinux). O
nível de acesso usado neste exemplo é de usuário (security =
user), para mais detalhes sobre este método, veja Níveis de autenticação, Seção
18.2.8.4. O parâmetro local master foi definido para
yes para o SAMBA tentar ser o navegador local do
grupo de trabalho (veja Local Master
Browser, Seção 18.7.2).
Para testar se o servidor está funcionando, digite o seguinte comando:
smbclient -L servidor -U usuario
Digite a senha de usuário quando solicitado. O comando deverá listar os recuros da máquina, indicando que a configuração está funcionando corretamente. Se você é paranóico e está preocupado com a segurança da máquina, recomendo ler a Controle de acesso ao servidor SAMBA, Seção 18.12.
O Samba pode utiliza os seguintes métodos para resolução de nomes de máquinas na rede (Nome de máquina (nome NetBios), Seção 18.2.1). Eles estão listados em ordem de prioridade do mais para o menos recomendável:
lmhosts - Pesquisa primeiro o arquivo
/etc/samba/lmhosts (veja Arquivo /etc/samba/lmhosts,
Seção 18.5.1 para detalhes sobre este arquivo).
host - Faz a pesquisa no arquivo /etc/hosts e no DNS
em busca do nome da máquina.
wins - Pesquisa no servidor WINS especificado pelo parâmetro
wins server do smb.conf (veja WINS, Seção 18.5.2).
bcast - Envia um pacote para o endereço de broadcast de sua configuração de rede. Este geralmente deve ser o último método por gerar tráfego excessivo em uma rede com um considerável número de computadores.
A ordem que a resolução de nomes é feita pelo samba, pode ser modificada usando o parâmetro "name resolve order = [ordem]" no arquivo de configuração do samba (ex. name resolve order = lmhosts host wins bcast).
/etc/samba/lmhosts
Este arquivo é um banco de dados que mapeia o endereço IP com o nome NetBIOS de
uma máquina, semelhante ao formato do /etc/hosts. Este arquivo é
útil quando temos servidores que são acessados com freqüência, quando
servidores de rede estão em segmentos separados e não temos um servidor WINS
entre os dois pontos para resolução de nomes, para definir máquinas WINS que
serão acessados pela internet, etc. Para ter certeza da localização do arquivo
lmhosts em sua máquina, digite smbclient -d 3 -L
localhost e veja o diretório de pesquisa deste arquivo. Veja um exemplo
de arquivo lmhosts em Exemplo de lmhosts
do UNIX, Seção 18.5.1.1.
O uso do arquivo lmhosts evita o excesso de broadcasting na rede,
pois a ordem padrão usada para a resolução de nomes do samba,
procura primeiro resolver o nome procurando em arquivos lmhosts, depois usando
dns, wins e broadcast. Dependendo do projeto de sua
rede e como as máquinas resolvem os nomes, ele pode ser uma camada a mais de
segurança contra um simples hijacking de servidor através de NetBEUI ou WINS
(isso é evitado com o uso de domínios, veja Configurando um servidor PDC no SAMBA, Seção
18.7.4).
OBS: Note que em clientes Windows que estejam em
outra subrede, é necessário o arquivo \windows\lmhosts apontando
para um servidor PDC mesmo que ele esteja apontando para o servidor WINS, caso
contrário, a máquina não efetuará o logon.
O formato do arquivo lmhosts do Windows é mais
complexo do que o do Linux pois o sistema precisa de mais detalhes
para resolver os nomes e tipos de máquinas no domínio. Veja o modelo
lmhosts.sam em seu sistema Windows para compreender
seu funcionamento.
lmhosts do UNIXO exemplo abaixo mapeia o endereço IP das máquinas (primeira coluna) com o respectivo nome de máquina (segunda coluna):
172.16.0.34 servarq
172.16.0.30 serverdom
192.168.5.2 servwins
172.16.0.3 servpdc
172.16.0.1 gateway
lmhosts do Windows
O arquivo possui uma sintaxe idêntica a do lmhosts do UNIX, mas
alguns parâmetros especiais são especificados para ajudar o
Windows resolver algumas coisas que não consegue fazer sozinho
(principalmente com relação a identificação de função de máquinas em redes
segmentadas):
192.168.0.5 servarq
192.168.0.1 serverpdc #PRE #DOM:dominio
192.168.0.2 "serverwins \0x1e" #PRE
#INCLUDE \\serverpdc\lmhosts
A primeira entrada do arquivo é a tradicional, onde o nome da máquina NetBIOS é associada ao IP. A segunda utiliza dois parâmetros adicionais:
#PRE - Faz a entrada ser carregada logo na inicialização e se tornando uma entrada permanente no cache NetBIOS.
#DOM - Especifica que a máquina é um controlador de domínio. A máquina deverá ter sido configurada para a função de domínio, pois caso contrário isso simplesmente não funcionará.
Note que ambos #PRE e #DOM devem ser especificados em
maiúsculas. O terceiro exemplo faz uma referência permanente (#PRE) a máquina
servidora WINS serverwins. Neste exemplo é usada uma característica
especial para especificar a ID hexadecimal da máquina na rede 1e. O
quarto utiliza um include para associar outro arquivo ao atual, útil quando
temos um compartilhamento que distribui um arquivo lmhosts para
diversas máquinas na rede. De preferência, utilize sempre uma diretiva
#PRE para todas as máquinas especificadas na diretiva
#INCLUDE em seu arquivo de configuração.
Para a especificação de ID de serviço manual, é necessário manter os 15 caracteres no nome da máquina (preenchendo os restantes com espaços, caso seja preciso). O último caracter é o código hexadecimal que identifica o serviço de rede (veja nmblookup, Seção 18.14.2.9.3 para ver a lista de serviços e sua respectiva função).
OBS: Caso crie este arquivo em um editor de textos do
Linux, não se esqueça de converter o arquivo para que contenha o
CR+LF no final das linhas.
Este é um serviço de resolução de nomes que funciona de forma semelhante ao DNS, só que voltado para o NetBIOS. Quando uma máquina cliente NetBIOS entra na rede, o servidor WINS pega seu nome e IP e inclui em uma tabela para futura consulta pelos clientes da rede.
Esta tabela consultada toda vez que um cliente NetBIOS solicita um nome de máquina, componentes do grupo de trabalho ou domínio na rede. Uma outra aplicação importante de um servidor WINS é permitir a resolução de nomes em pontos de redes que requerem roteamento, a simplicidade de um protocolo não roteável como o NetBIOS fica limitada a simplicidade das instalações de rede. Um servidor WINS pode ser instalado em cada ponta da rede e eles trocarem dados entre si e atualizar suas tabelas de nomes/grupos de trabalhos/IPs.
A resolução de nomes de máquinas será feita consultando diretamente a máquina WINS ao invés de broadcasting (que geram um tráfego alto na rede).
Para ativar o servidor WINS no samba, inclua as seguinte linha na
seção [global] do seu arquivo /etc/samba/smb.conf:
[global]
wins support = yes
wins proxy = no
dns proxy = no
max wins ttl = 518400
O parâmetro wins proxy pode ser necessário para alguns clientes antigos que tenham problemas no envio de suas requisições WINS. O dns proxy permite que o servidor WINS faça a pesquisa no DNS para localização de nomes de máquinas caso não exista no cache. Ambas as opções wins support, wins proxy e dns proxy tem como valor padrão não. Pronto, seu servidor samba agora suporta WINS. Fácil, prático e rápido :-)
Se estiver configurando uma subrede com masquerade para acesso a um PDC ou um
servidor WINS, você terá que mexer no gateway central para apontar uma rota
para o gateway masquerade. O motivo disto é porque o masquerade do
Linux atua somente nos cabeçalhos, mas o IP da estação é enviada e
processada pelo PDC para retornar uma resposta. Da mesma forma, este IP é
registrado no servidor WINS para uso das estações de trabalho. Isto só vai ser
resolvido quando for escrito um módulo de conntrack para conexões SAMBA (até o
lançamento do kernel 2.4.22, isso ainda não ocorreu).
OBS1: NUNCA configure mais de um servidor WINS em uma mesma rede.
OBS2: NÃO especifique o parâmetro wins server caso esteja usando o suporte a WINS.
Para os clientes da rede (Linux, Windows, OS/2, etc.) fazer uso
das vantagens da resolução de nomes usando o WINS, é necessário configurar para
que eles o utilizem para resolver os nomes de máquinas. Isto é feito da
seguinte forma em cada um dos sistemas operacionais:
Adicione a linha wins server = ip_do_servidor_WINS na seção global
do arquivo /etc/samba/smb.conf:
[global]
wins server = 192.168.1.1
Após isto, reinicie o servidor samba. Caso esteja executando o
servidor via inetd, digite: killall -HUP nmbd. Se
estiver rodando através de daemons: /etc/init.d/samba restart.
Não é necessário reiniciar o computador!
Clique com o botão direito sobre o ícone Ambiente de Rede e selecione propriedades. Na janela de configuração de rede clique na aba Configuração. Na lista que aparece selecione o protocolo TCP/IP equivalente a sua placa de rede local e clique em Propriedades.
Na tela de Propriedades TCP/IP clique em Configurações WINS e marque a opção Ativar resolução WINS. Digite o endereço do servidor WINS e clique em Adicionar.
OBS: Se utilizar um servidor DHCP em sua rede local e o endereço do servidor WINS também é oferecido através dele, você poderá marcar a opção Usar DHCP para resolução WINS. Note que esta opção somente estará disponível se escolher a opção Obter um endereço IP automaticamente na tab Endereços IP. Clique em OK até fechar todas as telas e reinicie quando o computador perguntar :-)
O samba pode atuar como um servidor de data/hora ajustando o horário de suas estações de trabalho com o servidor da rede.
As estações clientes poderão executar o comando net para
sincronizar seu relógio durante a inicialização do Windows, ou durante o logon
da rede através do script de logon, caso tenha configurado o servidor
samba para logon em domínios NT.
Para configurar o samba para atuar como servidor de data/hora de sua rede,
adicione o seguinte parâmetro na seção global do arquivo de configuração
/etc/samba/smb.conf:
[global]
time server = yes
Para sincronizar a data/hora das estações de trabalho usando o servidor samba, veja Sincronizando a data/hora no Cliente, Seção 18.6.2. Caso o seu servidor SAMBA também seja o servidor de autenticação PDC da rede, a melhor forma de se fazer isto é colocar o comando net time \\servidor_SAMBA /set /yes em um script que será executado pela estação.
OBS É recomendável instalar um cliente ntp para manter o relógio do servidor sempre atualizado, conseqüentemente mantendo a data/hora das estações também em sincronismo . .
Na estação cliente Windows, use o seguinte comando:
NET TIME \\SERVIDOR /WORKGROUP:GRUPO /SET /YES
Um local interessante para colocação deste comando é na pasta Iniciar da estação Windows, pois todos os comandos que estejam nesta pasta são executados quando o sistema é iniciado.
Exemplos:
net time \\linux /set /yes - Sincroniza a hora com o servidor "\\linux" e não pede confirmação (/yes).
net time \\linux /WORKGROUP:pinguim /set /yes - Sincroniza a hora com o servidor "\\linux" do grupo de trabalho pinguim (/WORKGROUP:pinguim) e não pede confirmação (/yes).
Esta seção descreve todos os passos necessários para configurar um servidor de domínio PDC (Primary Domain Control) com perfis móveis e outros recursos que tornam úteis e seguras a administração de uma rede NetBEUI.
Um domínio de rede consiste em uma máquina central chamada de PDC, que mantém o controle de todas as contas de usuários/grupos e permissões para acesso a rede NetBEUI. O acesso desta forma é centralizado, como vantagem disto você pode usar o nível de acesso por usuários nas máquinas, definindo quais usuários ou grupos terão acesso de leitura/gravação.
É permitido criar scripts de logon, assim comandos programados pelo administrador serão executados nas máquinas clientes durante o logon no domínio (veja Criando Scripts de logon, Seção 18.7.7).
O nome da máquina é protegido contra hijacking através de contas de máquinas
que fazem parte do domínio (veja Contas de
máquinas de domínio, Seção 18.7.5). Isto só é possível em clientes
Linux, Windows NT, Windows 2000 e
Windows XP.
Você poderá usar perfis móveis, copiando todas as personalizações do seu
desktop para qualquer máquina na rede que você faça o logon. Para o
administrador, ele poderá definir políticas com o Poledit e outros
programas que serão salvas junto com o perfil do usuário, valendo para qualquer
máquina que ele se autentique na rede (veja Criando Scripts de logon, Seção 18.7.7).
Se você deseja iniciar logo a configuração do seu domínio, siga até Configurando um servidor PDC no SAMBA, Seção 18.7.4.
É a máquina que ganhou a eleição no segmento local de rede (veja Níveis de sistema para eleição de rede, Seção 18.2.12). Logo que é declarada o local master browser, ela começa a receber via broadcasting a lista de recursos compartilhados por cada máquina para montar a lista principal que será retornada para outras máquinas do grupo de trabalho ou outras subredes que solicite os recursos compartilhados por aquele grupo.
Uma nova eleição é feita a cada 36 minutos ou quando a máquina escolhida é desligada.
Quando o local master browse é eleito no segmento de rede, uma consulta é feita ao servidor WINS para saber quem é o Domain Master Browse da rede para enviar a lista de compartilhamentos. A máquina escolhida como Local Master Browse envia pacotes para a porta UDP 138 do Domain Master e este responde pedindo a lista de todos os nomes de máquinas que o local master conhece, e também o registra como local master para aquele segmento de rede.
Caso tenha configurado sua máquina para ser o domain master browser da rede (também chamado de controlador principal de domínio ou PDC), ela tentará se tornar a máquina que terá a lista completa de recursos enviados pelos locais master browsers de cada segmento de rede. Um PDC também é o local master browse de seu próprio segmento de rede.
É possível ter mais de um domain master browse, desde que cada um controle seu próprio domínio, mas não é possível ter 2 domain master browsers em um mesmo domínio. Caso utilize um servidor WINS em sua rede, o PDC fará consultas constantes em sua base de dados para obter a lista de domínios registrados. O domínio é identificado pelo caracter 1b na rede (veja nmblookup, Seção 18.14.2.9.3).
OBS: O Windows NT configurado como PDC sempre tenta se tornar o domain master browser em seu grupo de trabalho. Não sendo possível retirar o Windows NT configurado como PDC do domínio (por alguma outra razão), a única forma será deixar ele ser o domain master browser. Se este for o caso, você poderá continuar lendo este documento para aprender mais sobre NetBIOS e talvez ainda mudar de idéia sobre manter o NT na rede após ver as características do SAMBA ;-)
Esta é a parte interessante do guia, a prática. Para os administradores que conhecem através da experiência própria os problemas e definições do SAMBA, grande parte do guia foi apenas uma revisão (por favor, se faltou algo que acha interessante, me notifiquem que incluirei na próxima versão e colocarei uma nota no lançamento e na página com os devidos créditos :-))
Para configurar uma máquina para ser o PDC (Controladora Principal de Domínio ou Primary Domain Control), siga esta seqüência:
Habilite o suporte a senhas criptografadas. Caso ainda não tenha feito isso, leia a seção Ativando o suporte a senhas criptografadas, Seção 18.8.
Na seção [global], insira/modifique os seguintes parâmetros:
; Identificação da máquina e domínio
netbios name = gleydson
workgroup = focalinux
;níveis de acesso e funções do servidor
security = user
domain master = yes
prefered master = yes
local master = yes
; senhas criptografadas
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd.db
Onde os parâmetros significam:
netbios name = gleydson - Nome do computador. Este também será o nome usado pelas outras máquinas clientes quando for configurar o PDC (controlador de domínio).
workgroup = focalinux - Nome do domínio que está criando. Todas as máquinas que pertencerem a este domínio, terão o nível de acesso definido pelo PDC. Note que o parâmetro workgroup também é usado ao especificar o nome do grupo de trabalho quando se é usado a configuração grupo de trabalho (Configuração em Grupo de Trabalho, Seção 18.4).
security = user - Requerido para controle de acesso por domínio, já que é utilizado o controle de acesso local usando usuários e grupos locais.
domain master = yes - Especifica se está máquina está sendo configurada para ser o PDC da rede.
OBS: Por favor, certifique-se que não existe outro PDC no
domínio. Veja Domain Master Browser, Seção
18.7.3. prefered master = yes - Força uma eleição com algumas
vantagens para seu servidor ser eleito sempre como o controlador de domínio.
Isto garante que a máquina SAMBA sempre seja o PDC. Veja Navegação no servidor/tipo de servidor,
Seção 18.2.8.6. local master = yes - Define se a máquina será
o controlador principal do grupo de trabalho local que ela pertence.
Pronto, agora teste se existem erros em sua configuração executando o comando
testparm (Buscando problemas na
configuração, Seção 18.2.11) e corrija-os se existir. Resta agora
reiniciar o servidor nmbd para que todas as suas alterações tenham
efeito. Para adicionar seus clientes a um domínio, veja Contas de máquinas de domínio, Seção 18.7.5
e Configurando clientes em Domínio, Seção
18.14.3.
Uma conta de máquina de domínio garante que nenhum outro computador possa
utilizar o mesmo nome de uma máquina confiável e assim utilizar os
compartilhamentos que ela tem permissão. Os clientes Windows NT,
Windows XP e Windows 2000 precisam de uma conta de
máquina para ter acesso ao domínio e seus recursos. A criação de uma conta de
máquina é bastante semelhante a criação da conta de um usuário normal no
domínio.
Existe uma coisa que precisa sempre ter em mente quando estiver configurando uma conta de máquina de domínio: Quando você cria uma conta para a máquina, ela entra e altera sua senha no próximo logon usando um "segredo" entre ela e o PDC, este segredo a identifica sempre como dona daquele nome NetBIOS, ou seja, até o primeiro logon no NT, outra máquina com o mesmo nome NetBIOS poderá ser a dona do netbios naquele domínio caso faça o logon no domínio. A única forma de se evitar isto é logar imediatamente no domínio NT assim que criar as contas de máquinas.
Existem duas formas para criação de contas de máquinas: manual e automática.
Para criar uma conta de domínio para a máquina master, siga estes 2 passos:
Crie uma conta de máquina no arquivo /etc/passwd:
useradd -g domainmac -c "Maquina de Dominio" -s /bin/false -d /dev/null master$
O comando acima cria uma conta para a máquina master$ e torna ela
parte do grupo domainmac. É necessário especificar o caracter
$ após o nome da máquina para criar uma conta de máquina no
domínio, caso contrário o próximo passo irá falhar. Acredito que nas próximas
versões do SAMBA seja desnecessário o uso do arquivo /etc/passwd
para a criação de contas de máquina.
Crie uma conta de máquina no arquivo /etc/samba/smbpasswd:
smbpasswd -m -a master
Isto cria uma conta de máquina para o computador master no arquivo
/etc/samba/smbpasswd. Note que a criação de uma conta de máquina
é muito semelhante a criação de um usuário apenas precisa adicionar a opção
-m. Quando for criar uma conta com o smbpasswd Não é
necessário especificar $ no final do nome da máquina.
O mais importante: Entre IMEDIATAMENTE no domínio após criar a conta de máquina usando a conta de administrador de domínio criada no SAMBA (veja Criando uma conta de administrador de domínio, Seção 18.7.6)! como a máquina ainda não se autenticou pela primeira vez, qualquer máquina que tenha o mesmo nome e entre no domínio, poderá alocar o nome recém criado. A única forma de resolver este problema, é apagando a conta de máquina e criando-a novamente no domínio. Siga os passos de acordo com o sistema operacional em Configurando clientes em Domínio, Seção 18.14.3 para colocar seus clientes em domínio.
OBS1: Como segurança, recomendo desativar a conta de máquina
no /etc/passwd usando o comando passwd -l conta.
Esta conta NUNCA deverá ser usada para login, isto deixa nossa configuração um
pouco mais restrita.
OBS2: A localização do arquivo de senhas criptografadas do
SAMBA pode ser modificado através da opção smb passwd file na
seção [global] do arquivo smb.conf.
OBS3: Os que tem experiência com NT e Windows 2000 devem ter notado que este método é semelhante ao do Server Manager das ferramentas de gerenciamentos de servidores existentes no Windows.
Através deste método, as máquinas clientes terão sua conta criada automaticamente assim que seja feita a entrada no domínio usando a conta do administrador de domínio no SAMBA. Este é o método recomendável de colocação de máquinas no domínio por ser mais prática ao invés do método manual. Note que normalmente isto funciona para o WinXP e Win2000 mas não funciona em redes com o NT4, devendo ser criadas contas de máquinas usando o método manual.
Para fazer a configuração automática, coloque a seguinte linha no arquivo
smb.conf na seção [global]:
add user script = useradd -g domainmac -c "Maquina de Dominio" -s /bin/false -d /dev/null %u
Assim, a conta de máquina será automaticamente criada quando o administrador fizer sua configuração no domínio (veja Criando uma conta de administrador de domínio, Seção 18.7.6). No SAMBA 3.0, a opção add machine script deverá ser usada no lugar de add user script para adicionar uma máquina no domínio.
A conta de administrador do domínio é a conta que tem permissões para realizar
operações de manutenção e administração de máquinas que compõem o domínio de
rede. Com ela é possível, entre outras coisas, adicionar e remover máquina que
compõem o domínio. Para especificar que contas de usuários do arquivo
/etc/samba/smbpasswd que terão poderes administrativos, utilize a
opção domain admin group ou admin users na seção
[global] do arquivo /etc/samba/smb.conf.
O parâmetro admin users permite que todas as operações realizadas
pelo usuário sejam feitas com poderes de usuário root. Isto é
necessário porque o arquivo smbpasswd (usado para ajustar as
contas de máquinas) normalmente tem permissões de leitura/gravação somente para
root. O domain admin group permite que usuários específicos ou
usuários do grupo especificado sejam parte do grupo de administradores do
domínio para adicionar máquinas, etc. Por exemplo, para tornar o usuário
gleydson com privilégios para adicionar/remover máquinas no
domínio:
[global]
...
admin users = gleydson
ou
domain admin group = @admins gleydson
Isto permite que o usuário gleydson possa adicionar/remover máquinas do domínio NT (veja Configurando clientes em Domínio, Seção 18.14.3) entre outras tarefas. Por segurança, recomendo que coloque esta conta no invalid users de cada compartilhamento para que seja utilizada somente para fins de gerenciamento de máquinas no domínio, a menos que deseje ter acesso total aos compartilhamentos do servidor (nesse caso, tenha consciência do nível de acesso que esta conta possui e dos problemas que pode causar caso caia em mãos erradas).
OBS1: Tenha SEMPRE bastante cuidado com quem dará poderes de administrador de domínio, pois toda sua rede poderá ficar vulnerável caso os cuidados de administração não estejam em boas mãos.
OBS2: Em versões antigas do SAMBA, somente o usuário
root tem poderes para adicionar máquinas no domínio usando o
parâmetro domain admins group, devendo ser também adicionado no
arquivo smbpasswd para que possa fazer isto e obviamente não
deverá estar listado em invalid users. Mesmo assim, existem
outras formas explicadas no guia de se contornar o risco causado pela liberação
de acesso do usuário root.
Uma dos recursos mais úteis em um domínio é a possibilidade de se executar
comandos nas máquinas cliente quando fazem o logon no domínio. Desta forma, é
possível instalar programas, executar anti-vírus, mapear compartilhamentos
automaticamente no clientes, etc. A programação de scripts de logon é feita
usando a linguagem em lote do DOS, com possibilidades de usar variáveis de
ambiente, cópia de arquivos entre servidores, etc. O guia não irá abordar a
programação em linguagem de lote, mas isto é simples de se encontrar na
internet e mesmo a documentação que acompanha o próprio Windows é
útil.
Para habilitar o recurso de scripts de logon na máquina, adicione os seguintes
parâmetros no arquivo smb.conf:
[global]
domain logons = yes
logon script = logon.cmd
[netlogon]
path = /pub/samba/netlogon
read only = yes
write list = ntadmin
Segue a descrição de cada parâmetro com detalhes importantes para a configuração e funcionamento do recurso de logon:
domain logons - Deve ser definido para yes para ativar o recurso de logon scripts do SAMBA.
logon drive é a unidade de disco que terá o homedir do usuário mapeado. Isto somente é usado por máquinas NT/2000/XP.
logon script - Define qual é o script que será executado na
máquina cliente quando fizer o logon. Ele deve ser gravado no diretório
especificado pela opção path do compartilhamento
[netlogon] (/pub/samba/netlogon no exemplo). Os
scripts de logon podem ser tanto em formato .bat ou
.cmd. Se for programar um script universal, é recomendável o uso
do formato .bat por ser compatível tanto com Win9X e
WinNT.
Um detalhe que deve ser lembrado durante a programação do script de logon é que
ele DEVE seguir o formato DOS, ou seja, ter os caracteres
CR+LF como finalizador de linhas. Para utilizar editores do UNIX
para escrever este script, será necessário executar o programa
flip (flip -m -b arquivo) ou unix2dos no
arquivo para converte-lo em formato compatível com o DOS.
Segue abaixo um exemplo de script de logon que detecta quando o cliente é Windows 95/NT, ajusta a hora com o servidor e mapeia 2 unidades de disco:
@echo off
cls
rem Logon Script desenvolvido por Gleydson Mazioli
rem da Silva como modelo para o guia Foca GNU/Linux
rem
rem Este script pode ser utilizado para fins didáticos
rem e distribuído livremente de acordo com os termos
rem da GPL
rem
echo "Aguarde enquanto sua máquina efetua"
echo "o logon na rede do domínio focalinux."
rem
if %OS%==Windows_NT goto NT-2000
rem
echo "--------------------------------"
echo "SO: %OS%"
echo "Usuário: %USERNAME%"
echo "Grupo de Trabalho: %LANGROUP%"
echo "Servidor: %DOMINIO%"
echo "--------------------------------"
echo "Recuperando compartilhamentos"
rem mapeia o compartilhamento publico definido no servidor
net use e: \\gleydson\publico
echo "Sincronizando data/hora"
rem sincroniza a data/hora com o servidor
net time \\gleydson /set /yes
goto fim
rem
rem
:NT-2000
echo "--------------------------------"
echo "SO: %OS%"
echo "Usuário: %USERNAME%"
echo "Windows: %windir%"
echo "Logon de domínio: %LOGONSERVER%"
echo "--------------------------------"
echo "Recuperando compartilhamentos"
net use e: \\gleydson\publico /persistent:yes
echo "Sincronizando data/hora"
net time \\gleydson /set /yes
rem
rem
goto fim
rem
:fim
Note no exemplo acima que não podem haver linhas em branco, você deverá
utilizar a palavra rem (comentário em arquivos em lote) em seu
lugar. Note que existem diferenças entre o comando net do Windows
9x/ME e do NT, as variáveis também possuem um significado diferente entre estes
2 sistemas, isto explica a necessidade de se incluir um bloco separado
detectando a existência de qual sistema está sendo efetuado o logon.
A lista completa de variáveis disponíveis para cada sistema operacional pode
ser obtida colocando-se set >c:\vars.txt que gravará uma lista
de variáveis disponíveis durante o logon no arquivo c:\vars.txt da
máquina cliente.
OBS: Caso especifique um computador que contém o script de
login, lembre-se de faze-lo sempre com \ ao invés de
/ para não ter incompatibilidade com o Windows
95/3.11.
ATENÇÃO: Lembre-se que copiar e colar pode não funcionar para este script. Leia novamente esta seção do guia se estiver em dúvidas.
Os profiles permitem que os clientes utilizem o mesmo perfil em qualquer
máquina que ele se autentique na rede. Isto é feito após a autenticação
copiando os arquivos que contém os dados de personalização de usuários
(user.dat, NTuser.dat) para a máquina local. Este
processo também inclui a cópia de papéis de parede, links da área de trabalho,
cache do IE, etc. Para configurar o recurso de perfis móveis no domínio, é
necessário adicionar os seguintes parâmetros no seu arquivo
smb.conf:
[global]
security = user
encrypt passwords = yes
domain logons = yes
logon drive = H:
logon path = \\%N\profilesNT\%u
logon home = \\%N\profiles\%u
preserve case = yes
short preserve case = yes
case sensitive = no
[profiles]
path = /pub/profiles
read only = no
create mask = 0600
directory mask = 0700
[profilesNT]
path = /pub/profilesNT
read only = no
create mask = 0600
directory mask = 0700
Segue a descrição dos parâmetros de detalhes para seu funcionamento:
O parâmetro domain logons = yes especifica que o servidor será usado para fazer logons no domínio. Quando este parâmetro é definido para yes, a máquina automaticamente tentará ser o PDC.
logon path e logon home definem (respectivamente) o
diretório de logon do /pub/profilesNT/usuario (NT) e
/pub/profiles/usuario (Win95) respectivamente.
Durante o logon, a variável %N será substituída pelo nome do
servidor (ou servidor de diretórios, se for o caso) e a variável
%u pelo nome do usuário.
O sistema operacional de origem é detectado no momento da conexão. Isto significa que o usuário poderá ter 2 profiles diferentes, de acordo com o tipo de sistema operacional cliente que estiver conectando.
O diretório home do usuário será mapeado para a unidade H: (logon drive = h:). O parâmetro logon drive somente é usado pelo NT/2000/XP.
As opções preserve case, short preserve case e case sensitive permite que os nomes dos arquivos/diretórios tenham as letras maiúsculas/minúsculas mantidas, isto é requerido para os profiles.
O compartilhamento dos 2 profiles pode ser feito sem tantos traumas, mas isto não será explicado profundamente no guia pois o procedimento segue o mesmo padrão do NT sendo bastante documentado na internet.
Note que é possível definir um servidor separado para servir os profiles para um domínio modificando a variável %N para apontar direto para a máquina. Na máquina que armazenará os profiles, basta definir o nível de segurança por servidor (security = server) e o endereço IP do servidor de senhas (password server = IP).
OBS1: Os perfis só funcionam caso o servidor de profiles contenha a opção security = user e encrypt passwords = yes ou security = server e password server = endereço_IP. Caso tenha problemas, verifique se uma destas alternativas está correta.
OBS2: Quando utiliza o SAMBA com o Windows 2000 SP2, é necessário adicionar a opção nt acl support = no no compartilhamento [profiles], caso contrário, ele retornará um erro de acesso ao compartilhamento.
Um usuário do Windows NT (ou versões baseadas neste) pode modificar as permissões dos arquivos/diretórios que tem acesso através da caixa de diálogo de listas de acesso do NT, lembrando que estas permissões nunca substituirão as definidas pelo administrador local.
A opção "nt acl support" deverá estar definida para "yes" na seção [global] do arquivo de configuração, caso contrário você não terá acesso para mudar as permissões através de caixas de diálogo do NT. \
O uso de senhas criptografadas é um requisito quando você deseja configurar o SAMBA para ser um servidor PDC ou um cliente de um domínio. Quando utiliza senhas criptografadas, elas trafegam em formato seguro através da rede, dificultando a captura por outras pessoas. Em versões mais recentes do Windows (a partir da OSR/2 e NT 4 service pack3) o suporte a senhas criptografadas vem habilitado como padrão para login e utilização de serviços da rede. Não é recomendável desativar o uso de senhas criptografadas, mas se mesmo assim for necessário veja Senhas criptografadas ou em texto puro?, Seção 18.12.15.
Quando usamos senhas criptografadas, elas são armazenadas no arquivo
/etc/samba/smbpasswd ao invés do /etc/passwd, isto
permite que possamos controlar as permissões de usuários separadamente das do
sistema e diferenciar os logins do domínio dos logins do sistema (usuários que
possuem shell). Caso tenha um servidor que já possua muitas contas de usuários
acessando em texto plano, recomendo ler Migrando de senhas texto plano para
criptografadas, Seção 18.8.1 para facilitar o processo de migração de
contas.
O utilitário smbpasswd é o programa utilizado para gerenciar este
arquivo de senhas e também o status de contas de usuários/máquinas do domínio.
Siga estes passos para ativar o uso de senhas criptografadas no SAMBA:
Edite o arquivo /etc/samba/smb.conf e altere as seguintes linhas
na seção [global] para adicionar o suporte a senhas
criptografadas:
[global]
encrypt passwords = true
smb passwd file =/etc/samba/smbpasswd
A linha encrypt passwords = true diz para usar senhas
criptografadas e que o arquivo /etc/samba/smbpasswd contém as
senhas (smb passwd file =/etc/samba/smbpasswd).
Caso sua máquina seja apenas um cliente de rede (e não um PDC), você pode pular
para o passo onde o SAMBA é reiniciado (no final dessa lista), não
é necessária a criação do arquivo de senhas para autenticação pois os usuários
serão validados no servidor.
Execute o comando mksmbpasswd </etc/passwd
>/etc/samba/smbpasswd. Ele pega toda a base de usuários do
/etc/passwd e gera um arquivo /etc/samba/smbpasswd
contendo as contas destes usuários. Por padrão, todas as contas são
DESATIVADAS por segurança quando este novo arquivo é criado. O novo arquivo
terá o seguinte formato:
gleydson:1020:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:[U ]:LCT-00000000:Gleydson Mazioli da Silva,,,
geovani:1004:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:[U ]:LCT-00000000:Geovani Mazioli da Silva,,,
Os campos são separados por ":" e cada campo possui o seguinte significado:
O primeiro é o nome de usuário
UID do usuário no sistema UNIX que a conta será mapeada.
Senha Lan Manager codificada em hex 32 criado usando criptografia DES usada pelo Windows 95/98/ME.
Senha hash criada em formato do NT codificada em hex 32. Esta senha é criada pegando a senha do usuário, convertendo-a para maiúsculas, adicionados 5 bytes de caracteres nulos e aplicando o algoritmo md4.
Opções da conta criada no smbpasswd:
U - Especifica que a conta é uma conta de usuário normal (veja Adicionando usuários no
smbpasswd, Seção 18.8.2)
D - Significa que a conta foi desativada com a opção
-d (veja Desabilitando uma conta no
smbpasswd, Seção 18.8.4).
W - Especifica que a conta é uma conta de máquina criada com a opção -m (veja Contas de máquinas de domínio, Seção 18.7.5).
N - A conta não possui senha (veja Definindo acesso sem senha para o usuário, Seção 18.8.7).
Os caracteres "XXXXXXXXXXXXXXX" no campo da senha, indica que a conta foi recém criada, e portanto está desativada. O próximo passo é ativar a conta para ser usada pelo SAMBA.
ATENÇÃO: O método de criptografia usado neste arquivo não é
totalmente seguro. Recomendo manter o arquivo de senhas smbpasswd
em um diretório com a permissão de leitura somente pelo root.
Para ativar a conta do usuário gleydson, usamos o comando:
smbpasswd -U gleydson
Digite a senha do usuário e repita para confirmar. Assim que a senha for definida, a conta do usuário é ativada. Você também pode especificar a opção "-s" para entrar com a senha pela entrada padrão (muito útil em scripts). Apenas tenha cuidado para que esta senha não seja divulgada em seus arquivos/processos.
Reinicie o processo do SAMBA (veja Iniciando o servidor/reiniciando/recarregando a configuração, Seção 18.1.9).
Verifique se o suporte a senhas criptografadas está funcionando com o comando:
smbclient -L localhost -U gleydson
Substitua localhost pelo IP do servidor e gleydson pelo usuário. Caso obtenha a mensagem session setup failed: NT_STATUS_LOGON_FAILURE significa que a senha informada está incorreta.
No SAMBA, é possível fazer um processo de migração de senhas em texto plano de usuários para criptografadas sem que eles deixem de acessar o servidor durante esta mudança. Caso este seja seu caso, insira o parâmetro
update encrypted = yes
na seção [global] do seu arquivo de configuração
smb.conf. A senha criptografada é definida assim que o usuário se
logar usando sua senha em texto plano. Não se esqueça de desativar esta opção
ou remove-la após o prazo necessário para que todas as senhas sejam trocadas.
smbpasswd
A adição de um usuário no smbpasswd segue duas etapas: primeiro é
necessário adiciona-lo no sistema com o adduser e depois no samba
com o smbpasswd. Você deve estar se perguntando qual a vantagem
de se ter um arquivo separado de usuários se ainda é preciso criar o login nos
dois arquivos; O SAMBA para fazer o controle de acesso aos
arquivos utiliza além dos mecanismos tradicionais do NT, o controle de
permissões a nível UNIX para manter os arquivos ainda mais restritos. Além
disso, será necessário usuários e grupos para criação e acesso ao sistema.
Adicione um usuário no sistema com o comando:
useradd -g grupo-dominio -c "Usuário de Domínio" -s /bin/false -d /dev/null joao
Este comando adiciona o usuário "joao" no grupo grupo-dominio e não define hem uma shell, diretório home nem senha para este usuário. Isto mantém o sistema mais seguro e não interfere no funcionamento do SAMBA, pois somente é necessário para fazer o mapeamento de UID/GID de usuários com as permissões do sistema UNIX.
É interessante padronizar os usuários criados no domínio para um mesmo grupo para pesquisa e outras coisas.
Crie o usuário "joao" no SAMBA:
smbpasswd -a joao
Será solicitada a senha do usuário.
smbpasswd
Utilize o comando smbpasswd -x usuario para remover um usuário do
arquivo smbpasswd. Se desejar, você pode manter o usuário no
/etc/passwd ou remove-lo com o userdel.
OBS: Removendo um usuário deste arquivo fará que ele não tenha mais acesso ao SAMBA. Utilize o comando smbpasswd -a teste
smbpasswdComo administrador, pode ser necessário que precise desativar temporariamente uma conta de usuário por alguma situação qualquer (má utilização de recursos, dúvida se a conta está sendo usada, para que ele ligue reclamando de autenticação para ter aquela desejada conversa (hehe), etc.). Remover uma conta e novamente adiciona-la então não é uma situação muito prática. Utilize então o seguinte comando para desativar uma conta de usuário:
smbpasswd -d usuario
Quando a conta de usuário é desativada, uma flag "D" é adicionada às
opções do usuário (junto com as opções "UX"). Veja Habilitando uma conta no
smbpasswd, Seção 18.8.5 para reativar a conta.
smbpasswdUma conta desativada com o uso do comando smbpasswd -d pode ser novamente ativada usando:
smbpasswd -e usuario
O utilitário smbpasswd pode ser usado tanto para alterar a senha
de usuários locais do SAMBA ou de uma conta em um servidor remoto
(seja SAMBA, NT, W2K). Para alterar a
senha de um usuário local, digite:
smbpasswd -U usuario
Lhe será pedida a antiga senha, a nova senha e a confirmação. Caso seja o usuário root, somente a nova senha e a confirmação. Isto é mecanismo de proteção para usuários que esquecem a senha ;-)
Para alterar a senha de um usuário remoto, utilize:
smbpasswd -r servidor -U usuario
Note que apenas foi adicionada a opção -r servidor comparado com a opção anterior. A diferença é que a senha antiga do usuário sempre será solicitada para troca (pois o root das 2 máquinas pode não ser o mesmo).
Para fazer um usuário acessar sem senha, use o comando:
smbpasswd -n usuario
Isto é completamente desencorajado e necessita que a opção null
passwords da seção [global] no arquivo
smb.conf esteja ajustada para yes (que NÃO é o
padrão).
Esta forma de autenticação é enviada por implementações NetBIOS antigas, como a
encontrada no Lan Manager, Windows for Workgroups e
Windows 95 OSR1. As versões mais novas destas implementações
enviam a senha em formato criptografado, sendo necessário também usar o formato
criptografado no SAMBA para que possa se autenticar (veja Ativando o suporte a senhas criptografadas,
Seção 18.8).
Em Senhas criptografadas ou em texto puro?,
Seção 18.12.15 é feita uma comparação entre o uso de autenticação usando
senhas em texto plano e senhas criptografadas. Em geral, o administrador
prefere a utilização da autenticação usando texto plano quando deseja usar o
/etc/passwd para autenticação e está usando grupos de trabalho é
necessário usar senhas criptografadas para autenticação).
Para configurar o SAMBA para utilizar senhas em texto, modifique o
parâmetro encrypt passwords para no:
[global]
encrypt passwords = no
Reinicie o SAMBA (Iniciando o
servidor/reiniciando/recarregando a configuração, Seção 18.1.9) e a partir
de agora, ele usará o /etc/passwd para autenticação.
OBS: Tenha certeza de não estar participando de um domínio ou que sua máquina seja o PDC antes de fazer esta modificação.
Esta seção descreve como configurar clientes para acessar o servidor
SAMBA usando autenticação em texto plano. Atualmente o guia cobre
os seguintes clientes:
Em cada seção, também é explicado como habilitar novamente a autenticação usando senhas criptografadas (se suportado pelo cliente).
Cliente NetBIOS para DOS. Ele trabalha somente com senhas em texto plano.
Este é o padrão de autenticação do Windows for Workgroups caso não
tenha feito nenhuma alteração específica (mas desconheço algo que faça-o
trabalhar com senhas criptografadas).
O Windows 95 até a release "A", utiliza texto plano como
padrão para autenticação (veja qual a release clicando com o botão direito em
Meu Computador e Propriedades.
Copie o seguinte conteúdo para um arquivo chamado
win95-textoplano.reg:
REGEDIT4
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]
"EnablePlainTextPassword"=dword:00000001
Após isto, execute no Windows 95 o seguinte comando: regedit
win95-textoplano.reg e reinicie o computador para fazer efeito.
Para voltar a utilizar criptografia, apenas altere o valor dword
para 00000000 no arquivo e executa novamente o
regedit.
O procedimento é idêntico ao Windows 95B, Seção 18.9.1.4.
O procedimento é idêntico ao Windows 95B, Seção 18.9.1.4.
Copie o seguinte conteúdo para um arquivo chamado
winNT-textoplano.reg:
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\Parameters]
"EnablePlainTextPassword"=dword:00000001
Após isto, execute no Windows NT o seguinte comando: regedit
winNT-textoplano.reg e reinicie o computador para fazer efeito.
Para voltar a utilizar criptografia, apenas altere o valor dword
para 00000000 no arquivo e execute novamente o
regedit.
Copie o seguinte conteúdo para um arquivo chamado
win2000-textoplano.reg:
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkStation\Parameters]
"EnablePlainTextPassword"=dword:00000001
Após isto, execute no Windows 2000 o seguinte comando:
regedit win2000-textoplano.reg e reinicie o computador para fazer
efeito.
Para voltar a utilizar criptografia, apenas altere o valor dword
para 00000000 no arquivo e execute novamente o
regedit.
Inclua/modifique a linha encrypt passwords = no no arquivo
smb.conf e reinicie o SAMBA. Para voltar a utilizar
criptografia, veja Ativando o suporte a
senhas criptografadas, Seção 18.8.
O mapeamento de usuários do servidor remoto com a máquina local é usado quando
você deseja controlar o acesso aos arquivos/diretórios a nível de usuário. No
Windows isto permite que cada arquivo/diretório tenha o acesso
leitura/gravação somente para os usuários definidos e autenticados no
controlador de domínio. No Linux as permissões de arquivos e
diretórios podem ser definidas para o usuário do PDC, garantindo o mesmo nível
de controle de acesso.
Esta seção explica como configurar o mapeamento de UID/GID entre o servidor PDC SAMBA e seus clientes NetBIOS Windows e Linux.
Para o Windows utilizar os usuários remotos do servidor para fazer
seu controle de acesso por nível de usuário, siga os seguintes passos:
Entre no Painel de Controle/Propriedades de Rede e clique na tab Controle de Acesso. Marque a opção Controle de acesso a nível de usuário e coloque o nome da máquina PDC na caixa de diálogo de onde os usuários/grupos serão obtidos. Você também pode colocar o nome do grupo de trabalho, neste caso a máquina fará uma busca pelo PDC ou outra máquina de onde pode obter os nomes de usuários/grupos.
OBS: Para fazer isto, você deverá estar autenticado no domínio.
A associação de UIDs de usuários de um domínio com usuários locais no
Linux é feita pelo programa winbind. Ele utiliza o
mecani