<sect id="s-samba-s">Conceitos gerais para a configuração do SAMBA
 <p>
Este capítulo documenta como configurar o seu servidor <prgn>SAMBA</prgn> 
permitindo o acesso a compartilhamento de arquivos e impressão no sistema.


<sect1 id="s-samba-nome">Nome de máquina (nome NetBios)
 <p>
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).
 <p>
O nome de máquina é especificado nas diretivas <em>netbios name</em> e 
<em>netbios aliases</em> (veja <ref id="s-samba-s-global-nome">) para detalhes. 


<sect1 id="s-samba-workgroup">Grupo de trabalho
 <p>
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 <tt>comunicação</tt>, <tt>redes</tt>, 
<tt>web</tt>, <tt>rh</tt>, as máquinas que pertencem ao grupo de 
<tt>redes</tt> serão agrupadas no programa de navegação: 
<example>
redes
  gleydson
  tecnico
  marcelo
  henrique
  michelle

rh
  mrpaoduro
 
web
  web1
  web2
  web3

comunicacao
  comunic1
  comunic2
  comunic3

</example>
A segurança no acesso a arquivos e diretórios na configuração de 
<em>grupo de trabalho</em> é 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 <prgn>Lan Manager</prgn>, <prgn>Windows for Workgroups</prgn>, 
<prgn>Windows 95</prgn>, <prgn>Windows 98</prgn>, 
<prgn>XP Home Edition</prgn> usam este nível de acesso por padrão. Se 
deseja configurar uma rede usando o nível de grupo de trabalho, veja
<ref id="s-samba-wrkgrp"> para detalhes passo a passo e exemplos práticos.
 <p>
Os programas para navegação na rede NetBIOS são mostrados em 
<ref id="s-samba-c-workgroup-linux-smbclient">, 
<ref id="s-samba-c-workgroup-linux-nmblookup"> e 
<ref id="s-samba-c-graficos">. 


<sect1 id="s-samba-dominio">Domínio
 <p>
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. 
 <p>
Estas características para configuração de máquinas em domínio são documentadas
passo a passo em <ref id="s-samba-dom-intro">.


<sect1 id="s-samba-compart">Compartilhamento
 <p>
Um compartilhamento é um recurso da máquina local que é disponibilizado para 
acesso via rede, que poderá ser <em>mapeada</em> 
(veja <ref id="s-samba-mapeamento">) 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 
<ref id="s-samba-a"> para aprender os métodos de como fazer isto).
 <p>
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.
 <p>
O guia <em>Foca Linux</em> abordará estes assuntos com detalhes e explicará 
didaticamente como tornar seguro seu servidor samba e garantir um minucioso 
controle de acesso a seus compartilhamentos.


<sect1 id="s-samba-mapeamento">Mapeamento
 <p>
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 <ref id="s-samba-compart">). Por 
exemplo, o diretório <file>/usr</file> <tt>compartilhado</tt> com o nome 
<tt>usr</tt>, pode ser mapeado por uma máquina <prgn>Windows</prgn> como 
a unidade <em>F:</em>, ou mapeado por uma máquina <prgn>Linux</prgn> 
no diretório <file>/mnt/samba</file>.
 <p>
O programa responsável por mapear unidades compartilhadas no <prgn>Linux</prgn> 
é o <prgn>smbmount</prgn> e <prgn>smbclient</prgn> (veja 
<ref id="s-samba-c-workgroup-linux">). 


<sect1 id="s-samba-nmbd">Navegação na Rede e controle de domínio
 <p>
Esta função é controlada pelo <prgn>nmbd</prgn> que fica ativo o tempo todo
disponibilizando os recursos da máquina na rede, participando de eleições 
NetBIOS (<ref id="s-samba-s-oslevel">), fazer logon de máquinas no domínio 
(<ref id="s-samba-dom-intro">), etc.
 <p>
A função de navegação na rede é feita utilizando o compartilhamento <file>IPC$</file>. 
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 <tt>guest account</tt> 
(<ref id="s-samba-s-a-param">), ou a navegação de recursos no sistema (ou na
rede, dependendo da configuração do SAMBA) não funcionará.
<![ %OBS [
 <p>
<strong>OBS: </strong> 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.
]]>

<sect1 id="s-samba-arquivocfg">Arquivo de configuração do samba
 <p>
Toda a configuração relacionada com nomes, grupo de trabalho, tipo de servidor, 
log, compartilhamento de arquivos e impressão do <prgn>samba</prgn> é colocada
no arquivo de configuração <file>/etc/samba/smb.conf</file>. Este arquivo é 
dividido em <em>seções</em> e <em>parâmetros</em>. 
  <p>
Uma seção no arquivo de configuração do <prgn>samba</prgn> (<file>smb.conf</file>) 
é 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 <tt>[global]</tt> 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 
<prgn>samba</prgn>, eles são os seguintes: 
<taglist compact>
 <tag><tt>[global]</tt></tag>
  <item>
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 <ref id="s-samba-s-global">.

 <tag><tt>[homes]</tt></tag>
  <item>
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 <ref id="s-samba-s-homes">.

 <tag><tt>[printers]</tt></tag>
  <item>
Define opções gerais para controle das impressoras do sistema. Este 
compartilhamento mapeia os nomes de todas as impressoras encontradas 
no <file>/etc/printcap</file>. Configurações especiais podem ser feitas 
separadamente. Veja <ref id="s-samba-s-printers">.

<tag><tt>[profile]</tt></tag>
 <item>
Define um perfil quando o servidor <prgn>samba</prgn> é usado como PDC de 
domínio. Veja <ref id="s-samba-dom-profiles">.

</taglist>
Qualquer outro nome de [seção] no arquivo <file>smb.conf</file> que não 
sejam as acima, são tratadas como um compartilhamento ou impressora. 
 <p>
Um <em>parâmetro</em> é definido no formato <em>nome = valor</em>. Para um 
exemplo prático, veja um exemplo de arquivo <file>smb.conf</file> em 
<ref id="s-samba-exemplos">. Na configuração de booleanos, a seguinte sintaxe 
pode ser usada:
<list compact>
 <item><tt>0</tt> ou <tt>1</tt>
 <item><tt>yes</tt> ou <tt>no</tt>
 <item><tt>true</tt> ou <tt>false</tt>
</list>
Assim, as seguintes configurações são equivalentes
<example>
master browse = 0
master browse = no
master browse = false
</example>
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 :-)
 <p>
Linhas iniciadas por <tt>#</tt> ou <tt>;</tt> são tratadas como comentário. 
Quebras de linha pode ser especificadas com uma <tt>\</tt> no final da linha.


<sect1 id="s-samba-s-global">Seção <tt>[global]</tt>
 <p>
Os parâmetros especificados nesta seção tem efeito em todo o servidor 
<prgn>samba</prgn> incluindo os compartilhamentos. Caso o parâmetro 
seja novamente especificado para o compartilhamento, o valor que 
valerá é o do compartilhamento. 
 <p>
Por exemplo, se <tt>guest user = nobody</tt> for usado na seção 
<em>[global]</em> e o <tt>guest user = foca</tt> for usado no compartilhamento 
<tt>[focalinux]</tt>, o usuário que fará acesso público a todos os 
compartilhamentos do servidor será o <tt>nobody</tt>, exceto para o 
compartilhamento <tt>[focalinux]</tt>, que será feito pelo usuário 
<tt>foca</tt>. Veja <ref id="s-samba-s-a"> 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 
<file>smb.conf</file>.
 <p>
Irei descrever alguns parâmetros utilizados nesta seção, organizado de 
forma didática e simplificada. 


<sect2 id="s-samba-s-global-nome">Nomes e grupos de trabalho
 <p>
<taglist compact>
 <tag>netbios name = [nome do servidor]</tag>
  <item>
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.
 <p>
Ex.: <tt>netbios name = focasamba</tt>.

 <tag>workgroup = [grupo de trabalho/domínio]</tag>
  <item>
Diz qual o nome do grupo de trabalho/domínio que a máquina samba 
pertencerá.
 <p>
Ex.: <tt>workgroup = focalinux</tt>.

 <tag>netbios aliases = [nomes alternativos ao sistema]</tag>
  <item>
Permite o uso de nomes alternativos ao servidor, separados por espaços.
<p>
Ex.: <tt>teste1 teste2</tt>.

 <tag>server string = [identificação]</tag>
  <item>
Identificação enviada do servidor samba para o ambiente de rede. 
A string padrão é <tt>Samba %v</tt> (%v é substituída pela versão 
do samba, para maiores detalhes, veja <ref id="s-samba-s-varsubst">).
 <p>
Ex: <tt>server string = Servidor Samba versão %v</tt>.

 <tag>name resolve order = [ordem] </tag>
  <item>
Define a ordem de pesquisa para a resolução de nomes no 
samba. A ordem padrão é: <tt>lmhosts host wins bcast</tt>, 
que é a melhor para resolução rápida e que tente gerar 
menos tráfego broadcast possível. Veja <ref id="s-samba-s-nameresolv"> 
para uma explicação mais detalhada. 
</taglist>


<sect2 id="s-samba-s-global-carac">Caracteres e página de código
 <p>
Uma das partes essenciais após colocar o <prgn>SAMBA</prgn> 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: 
<list compact>
 <item>
Dentro da opção "File Systems", "Network File Systems" defina como 
"Default Remote NLS Option" a iso8859-1. Esta opção permite ao 
<prgn>smbmount</prgn> montar os volumes locais usando os caracteres 
corretos.

 <item>
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.
</list>
Note que esta ordem pode variar dependendo da versão do seu kernel, basta 
que as entenda para fazer as modificações apropriadas. 
<![ %INIC-INTER [ Em caso de dúvidas sobre a compilação do kernel, 
veja <ref id="kern-recompilando">. ]]>
<taglist compact>

 <tag>character set = [conjunto_caracteres]</tag>
  <item>
Seleciona o conjunto de caracteres dos arquivos exibidos pelo servidor samba. 
Para os idiomas de língua latina, sempre utilize iso8859-1.
 <p>
Ex.: <tt>character set = iso8859-1</tt>.

 <tag>client code page = [pagina_de_codigo]</tag>
  <item>
Seleciona a página de código do servidor samba para tratar os caracteres. 
Para os idiomas de língua latina, sempre utilize 850.
 <p>
Ex.: <tt>client code page = 850</tt>.

 <tag>preserve case = </tag>
  <item>
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 
<em>default case</em> (caso seja especificado <tt>yes</tt>).

 <tag>short preserve case = </tag>
  <item>
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 <em>default case</em> (caso seja especificado <tt>yes</tt>).

 <tag>default case = [lower/upper]</tag>
  <item>
Define se os arquivos criados terão seus nomes todos em minúsculas (lower) ou
maiúsculas (upper).

<tag>valid chars = [caracteres]</tag>
  <item>
Define caracteres válidos nos nomes de arquivos: 
<tt>valid chars =á:Á é:É í:Í ó:Ó ú:Ú â:Â ê:Ê ô:Ô ã:Ã õ:Õ à:À ò:Ò</tt>. Este 
parâmetro <strong>DEVERÁ</strong> ser sempre especificado depois
do <tt>client code page</tt>, pois caso contrário, eles serão substituídos
por estes.

</taglist>


<sect2 id="s-samba-s-global-restrusu">Restrições de acesso/mapeamento de usuários
 <p>
<taglist compact>
  <tag><tt>guest account = [conta]</tt></tag>
   <item>
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 
<ref id="s-samba-s-a-param">.

<tag><tt>invalid users</tt></tag>
 <item>
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 <tt>root</tt>). Veja mais detalhes em 
<ref id="s-samba-a-restrusu">.

<tag><tt>valid users</tt></tag>
 <item>
Semelhante a opção <tt>invalid users</tt> mas permite que somente os usuários
especificados tenham acesso ao sistema. Veja mais detalhes em 
<ref id="s-samba-a-restrusu">.

<tag><tt>default service = nome</tt></tag>
 <item>
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 <tt>default</tt> é 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. 

<tag><tt>username map = [arquivo]</tt></tag>
 <item>
Especifica um arquivo que faz o mapeamento entre nomes fornecidos por clientes
e nomes de contas Unix locais. Veja <ref id="s-samba-a-usernamemap"> para mais 
detalhes de como configurar este recurso.

<tag>obey pam restrictions = yes</tag>
 <item>
Indica se as restrições do usuário nos módulos PAM terão efeito 
também no SAMBA.

</taglist>


<sect2 id="s-samba-s-global-nivelauth">Níveis de autenticação
 <p>
(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).
<taglist compact>
<tag><tt>security = [nível]</tt></tag>
  <item>
Define o nível de segurança do servidor. Os seguintes valores são 
válidos:
<list compact>
 <item>
<tt>share</tt> - Usada principalmente quando apenas a senha é enviada por 
compartilhamento acessado para o servidor, caso muito típico em sistemas 
<prgn>Lan Manager</prgn> e <prgn>Windows for Workgroups</prgn>.
 <p>
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):
<enumlist compact>
 <item>
Se o parâmetro <tt>guest only</tt> é usado no compartilhamento junto com 
o <tt>guest ok</tt>, o acesso é imediatamente permitido, sem verificar 
inclusive a senha.
 <item>
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 <em>user</em>).
 <item>
Se ele usou um nome para fazer o logon no <prgn>Windows</prgn> 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 <ref id="s-samba-a-usernamemap">)
 <item>
O nome do serviço é tentado como nome de usuário.
 <item>
O nome da máquina NetBios é tentada como nome de usuário
 <item>
Os usuários especificados na opção <tt>user</tt> do compartilhamentos
são utilizados (veja <ref id="s-samba-s-a-param">).

 <item>
Caso nenhum destes métodos acima for satisfeito, o acesso é NEGADO.
</enumlist>
Hoje em dia, o uso do nível de acesso <tt>share</tt> é raramente
usado, porque todos os sistemas a partir do <prgn>Windows 95</prgn> 
e acima enviam o nome de usuário ao acessar um compartilhamento 
(caindo na segunda checagem do nível <em>share</em>), sendo equivalente 
a usar o nível <em>user</em>. Entretanto, o nível de segurança 
<em>share</em> é recomendado para servidores onde TODO o conteúdo 
deve ter acesso público (seja leitura ou gravação) e o parâmetro
<tt>guest shares</tt> também funciona nativamente.
 <p>
As senhas criptografadas (<tt>encrypt passwords = 1</tt>) <strong>NÃO</strong>
funcionarão no nível <em>share</em>, lembre-se deste detalhe.


 <item>
<tt>user</tt> - Este é o padrão. O usuário precisa ter uma conta de usuário 
no <prgn>Linux</prgn> para acessar seus compartilhamentos. A mesma conta de 
usuário/senha deverá ser usada no <prgn>Windows</prgn> para acessar seus 
recursos ou realizado um mapeamento de nomes de usuários (veja 
<ref id="s-samba-a-usernamemap">). Este é o padrão do SAMBA.
No nível de acesso <em>user</em> o usuário precisa ser autenticado de 
qualquer forma, inclusive se for usado o parâmetro <tt>guest only</tt> ou 
<tt>user</tt>. Os seguintes passos são usados para autorizar uma conexão
usando o nível <em>user</em> (retirado da documentação do SAMBA):
<list compact>
 <item>
É tentada a validação usando o nome/senha passados pelo cliente. Se 
tudo estiver OK, a conexão é permitida.
 <item>
Caso já tenha se autenticado anteriormente para acessar o recurso e 
forneceu a senha correta, o acesso é permitido.
 <item>
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.
 <item>
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.
 <item>
É tentada a checagem com o parâmetro <em>user</em> no compartilhamento
(veja <ref id="s-samba-s-a-param">.
 <item>
É verificado se o serviço é público, então a conexão é feita usando 
o usuário <tt>guest account</tt> e ignorando a senha (veja 
<ref id="s-samba-a-publico">).
</list>

 <item>
<tt>domain</tt> - Neste nível, o acesso só será permitido quando a máquina
for adicionada ao domínio com o <prgn>smbpasswd</prgn> 
(<ref id="s-samba-c-dominio-linux">). 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 <ref id="s-samba-c-dominio-linux"> para detalhes.

 <item>
<tt>server</tt> - 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 <em>user</em> na base de usuários local (será necessário o 
arquivo de senhas criptografado do samba para que a autenticação local
funcione, veja <ref id="s-samba-senhas-crypto">). Este nível é bastante 
usado quando configuramos um servidor de perfis de usuários ou 
logon separado do PDC. 

</list> 
</taglist>


<sect2 id="s-samba-s-global-log">Log de acessos/serviços
 <p>
<taglist compact>
 <tag>log file= [arquivo]</tag>
  <item>
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 <ref id="s-samba-s-varsubst">).
 <p>
Ex.: <tt>/var/log/samba/samba-log-%m</tt>.
<![ %OBS [
 <p>
<strong>OBS:</strong> Se possível coloque uma extensão no arquivo de 
log gerado pelo <prgn>SAMBA</prgn> (como <file>.log</file>). O motivo 
disto é porque se estes logs forem rotacionados pelo <prgn>logrotate</prgn> 
você terá problemas de recompactação múltiplas caso utilize um coringa
<file>samba-log-*</file>, gerando arquivos como <file>.gz.gz.gz..</file>,
lotando a tabela de arquivos do diretório e deixando sua máquina em
um loop de compactação. ]]>

 <tag>max log size = [tamanho]
  <item>
Especifica o tamanho máximo em Kb do arquivo de log gerado pelo samba. O 
valor padrão é 5000Kb (5MB).

 <tag>debug pid = [valor]</tag>
  <item>
Este processo adiciona a pid aos logs gerados pelo processo <prgn>smbd</prgn>
Isto é útil para depuração caso existam múltiplos processos rodando. O valor
padrão é <em>no</em> e a opção <em>debug timestamp</em> deve ser <tt>yes</tt> para 
esta opção ter efeito.

 <tag>debug timestamp = [valor]</tag>
  <item>
Ativa ou desativa a gravação de data/hora nos arquivos de log gerados pelo samba.
O valor padrão é <tt>yes</tt>.

 <tag>debug level = [valor]</tag>
  <item>
Aumenta o nível de depuração dos daemons do SAMBA de <tt>0</tt> a <tt>9</tt>. 
Um nível de depuração interessante e que produz uma quantidade razoável 
de dados para configuração de um <prgn>logrotate</prgn> só para o SAMBA é o 
<tt>2</tt>, 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 <tt>0</tt> é o padrão. 

 <tag>debug uid = [valor]</tag>
  <item>
Este parâmetro inclui o euid, egid, uid, gid nos arquivos de log. O valor padrão é 
<tt>no</tt>.
 
 <tag>lock directory = [diretório]</tag>
  <item>
Define onde serão gravados os arquivos de lock gerados pelo samba. 

</taglist>


<sect2 id="s-samba-s-global-browsing">Navegação no servidor/tipo de servidor
 <p>
<taglist compact>
 <tag>os level=[num]</tag>
  <item>
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 <ref id="s-samba-s-oslevel"> para detalhes). O valor pode 
ser de 0 a 255, o padrão é 32. 

 <tag>announce as = [sistema]</tag>
  <item>
Selecione o nome que o <prgn>samba</prgn> (<prgn>nmbd</prgn>) se anunciará na 
lista de pesquisa de rede. Os seguintes nomes podem ser usados:
<list compact>
 <item><tt>NT Server (ou NT)</tt> - Anuncia como <em>Windows NT Server</em>. Este é
o padrão.
 <item><tt>NT Workstation</tt> - Anuncia-se como um <em>NT Workstation</em>.
 <item><tt>Win95 ou WfW</tt> - Anuncia-se na rede como uma estação <em>Windows 9x</em>, <em>Windows for Workgroups</em>, <em>Windows NT Server</em> e <em>Windows NT 
Workstation</em> de uma só vez.
</list>

 <tag>domain master = [valor]</tag>
  <item>
Diz se o servidor tentará se tornar o navegador principal de domínio. Os 
valores que podem ser especificados são: <tt>yes, no e auto</tt>. O valor 
padrão é <tt>auto</tt>. Veja <ref id="s-samba-dom-dmbrowser">.

 <tag>local master = [valor]</tag>
  <item>
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: 
<tt>yes, no</tt>. O valor padrão é <tt>yes</tt>. Para vencer a eleição, 
o samba precisa ter o valor de <tt>os level</tt> maior que os demais. 
 <p>
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 <ref id="s-samba-dom-lmbrowser">.

 <tag>preferred master = [valor]</tag>
  <item>
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 
<em>navegador principal do domínio</em> se esta opção for usada em conjunto com 
<em>domain master = 1</em>. Os valores especificados podem ser <tt>yes, no e 
auto</tt>, o padrão é <tt>auto</tt>. 
 <p>
Antes de ajustar este valor para <tt>yes</tt>, 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. 

</taglist>


<sect2 id="s-samba-s-global-outras">Outros parâmetros de configuração
 <p>
<taglist compact>
 <tag><tt>include</tt></tag>
  <item>
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 
<tt>%u</tt>, <tt>%P</tt> e <tt>%S</tt> (veja <ref id="s-samba-s-varsubst">).

</taglist>


<sect1 id="s-samba-s-homes">Seção <tt>[homes]</tt>
 <p>
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 <file>smb.conf</file> procurando por um nome de compartilhamento que 
confira. Caso nenhum seja encontrado, é feita uma busca 
por um nome de usuário correspondente no arquivo <file>/etc/passwd</file>, 
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 <ref id="s-samba-a-usernamemap">.
Quando o caminho do compartilhamento não for especificado, o SAMBA 
utilizará o diretório home do usuário (no <file>/etc/passwd</file>). 
 <p>
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 <tt>%S</tt> apontando para 
um diretório com as permissões apropriadas configuradas em seu sistema, 
por exemplo:
<example>
 [homes]
  comment = Diretórios de Usuários
  path=/pub/usuarios/%S

</example>
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 
<file>/etc/passwd</file> 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 
<ref id="s-samba-exemplos"> sobre a seção <em>[homes]</em> no arquivo
de configuração.
 <p>
Os parâmetros aceitos em <em>[homes]</em> aqui são os mesmos usados para 
compartilhamentos normais (veja <ref id="s-samba-s-a-param">). Abaixo segue mais
um exemplo de seção <em>[homes]</em>:
<example>
[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

</example>
A explicação de cada um dos parâmetros podem ser encontradas em 
<ref id="s-samba-s-a-param">. 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. 
<![ %OBS [
 <p>
<strong>OBS1:</strong>Caso nenhum caminho de compartilhamento seja 
utilizado, o diretório home do usuário será compartilhado. 
 <p>
<strong>OBS2: </strong>Não utilize o parâmetro <em>public yes</em> na 
seção guest, caso contrário todos os diretórios de usuários serão lidos 
por todos. Veja <ref id="s-samba-a-public-access"> para maiores detalhes.
]]>


<sect1 id="s-samba-s-printers">Seção <tt>[printers]</tt>
 <p>
Esta seção tem a função de disponibilizar as impressoras existentes no 
sistema (lp, lp1, lp2, etc) existentes no <file>/etc/printcap</file> 
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 
<em>[homes]</em>: 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 <em>[printers]</em>. 
<![ %CONSTRUCAO [
 <p>
Para utilizar a impressora compartilhada, é preciso que seu driver 
correspondente seja instalado no Windows ou que sejam utilizados os 
filtros apropriados para tratar e enviar a impressão no 
<prgn>Linux</prgn> (veja **************). ]]>
 <p>
Ao invés de usar este recurso, se preferir você poderá compartilhar as 
impressoras individualmente. Para detalhes, veja <ref id="s-samba-i-win-linux">. 
<![ %OBS [
 <p>
<strong>OBS:</strong>É importante lembrar que a seção <em>[printers]</em> 
<strong>DEVE</strong> ser definida como <tt>printable</tt> usando o 
parâmetro <em>printable = yes</em> para funcionar. O utilitário
<prgn>testparm</prgn> poderá ser usado para verificar problemas no 
arquivo cd configuração do SAMBA (veja <ref id="s-samba-s-testparm">).
]]>


<sect1 id="s-samba-s-testparm">Buscando problemas na configuração
 <p>
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 <prgn>testparm</prgn> 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.
 <p>
Para usar o <prgn>testparm</prgn> é só digitar <tt>testparm</tt>. 
Logo após executa-lo, analise se existem erros nas seções de 
configuração e te pedirá para pressionar &lt;ENTER&gt; para ver 
um dump do arquivo:
<example>
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

</example>
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 <tt>testparm /etc/samba/smb2.conf</tt>. 
 <p>
Também é permitido simular o nome NetBIOS que fará acesso a máquina usando o 
parâmetro <tt>-L nome</tt> (que será substituído na variável <var>%L</var>). 


<sect1 id="s-samba-s-oslevel">Níveis de sistema para eleição de rede
 <p>
Para selecionar qual sistema NetBIOS será o local master browse ou 
domain master browse, é usado um método bastante interessante: o de 
eleições.
 <p>
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.
 <p>
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.
 <p>
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:
<example>
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

</example>

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 
<ref id="s-samba-s-global-browsing">), isto garante que o SAMBA sempre vença 
as eleições da rede sobre qualquer outro sistema operacional. 
 <p>
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 <prgn>Linux</prgn>, quando 
migramos de servidor NT ou para fornecer mais serviços de navegação, como 
servidor WINS. 
<![ %OBS [
 <p>
<strong>OBS</strong>: 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.
]]>


<sect1 id="s-samba-s-varsubst">Variáveis de substituição 
 <p>
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: 
<example>
[homes]
 comment = Diretório home do usuário
 path = /home/usuarios/%u

</example>
Cada uma das variáveis são descritas em detalhes abaixo: 

<taglist>
 <tag>%S</tag>
  <item>
O nome do serviço atual, se existir. Seu uso é interessante, principalmente no 
uso de diretórios homes.

 <tag>%P</tag>
  <item>
O diretório raíz do serviço atual, se existir.

 <tag>%u</tag>
  <item>
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.

 <tag>%g</tag>
  <item>
O grupo primário do usuário %u.

 <tag>%U</tag>
  <item>
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).

 <tag>%G</tag>
  <item>
O nome do grupo primário de %U.

 <tag>%H</tag>
  <item>
O diretório home do usuário, de acordo com %u.

 <tag>%v</tag>
  <item>
A versão do Samba.

 <tag>%h</tag>
  <item>
O nome DNS da máquina que está executando o Samba.

 <tag>%m</tag>
  <item>
O nome NetBIOS da máquina do cliente. Isto é muito útil para 
log de conexões personalizados e outras coisas úteis.

 <tag>%L</tag>
  <item>
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.

 <tag>%M</tag>
  <item>
O nome DNS da máquina cliente.

 <tag>%N</tag>
  <item>
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 
<tt>--with-automount</tt> então este valor será o mesmo de %L.

 <tag>%p</tag>
  <item>
O caminho do diretório home do serviço, obtido de uma entrada mapeada no arquivo
<file>auto.map</file> do NIS. A entrada NIS do arquivo <file>auto.map</file> é 
dividida na forma "%N:%p".

 <tag>%R</tag>
  <item>
O nível de protocolo selecionado após a negociação. O valor retornado pode ser
CORE, COREPLUS, LANMAN1, LANMAN2 ou NT1.

 <tag>%d</tag>
  <item>
A identificação de processo do processo atual do servidor.

 <tag>%a</tag>
  <item>
A arquitetura da máquina remota. Somente algumas são reconhecidas e a resposta
pode não ser totalmente confiável. O <prgn>samba</prgn> atualmente reconhece 
<em>Samba</em>, <em>Windows for Workgroups</em>, <em>Windows 95</em>, 
<em>Windows NT</em> e <em>Windows 2000</em>. Qualquer outra coisa será 
mostrado como "UNKNOWN" (<em>desconhecido</em>). 

 <tag>%I</tag>
  <item>
O endereço IP da máquina do cliente.

 <tag>%T</tag>
  <item>
A data e hora atual.

 <tag>%$(var_ambiente)</tag>
  <item>
Retorna o valor da <em>variável de ambiente</em> especificada.
</taglist>




