Introdução
Antes de começar vamos entender o que é o Samba. Em uma rede é
necessírio compartilhar dados, por isso temos que pensar em obter o míximo em
qualidade do Sistema / Aplicação que serí o responsível por esta tarefa.
Com o SAMBA é possàvel compartilhar diretórios, impressoras, acessar
arquivos na rede exatamente como em redes Microsoft. Mas neste caso, seu
servidor é um Linux rodando uma aplicação especàfica. O Windows NT e o
2000 (assim como o NetWare 5 e outros presentes no mercado) são
reconhecidos mundialmente por sua segurança e escalabilidade, mas o SAMBA
possui muitas vantagens que podem se transformar em soluções e economia
para sua empresa. Confira:
- Permite compatibilidade com estações Windows (de WfW a 2000) e
servidores WinNT 4.0 e 2000. Entre servidores e estações Linux (com Interface
Grífica por exemplo) a compatibilidade é total.
- O SAMBA é 100% configurível, com a grande vantagem de centralizar
esta configuração em um único arquivo, o smb.conf. Sem dúvida é muito
interessante ter a possibilidade de restaurar toda a configuração que
disponibiliza seu Servidor de Arquivos (inclusive as permissões de acesso)
através do backup de apenas 1 arquivo, em casos de desastre. Porém isso
não quer dizer que não seja necessírio o backup de outros arquivos de
configuração... :)
- Todo o SAMBA pode ser configurado remotamente através de acesso
seguro, além do recebimento por email de informações do estado do servidor
(bastando utilizar um script especàfico que busca informações nos
arquivos de log e cria um arquivo que pode ser enviado por email).
- Em se falando de economia não hí o que discutir: o Linux e o SAMBA
estão disponàveis para download na Internet sem ônus algum para qualquer
usuírio comum ou empresa que se interesse em utilizí-lo, sem custos com
licenças ou atualizações.
- As mais recentes distribuições jí trazem o SAMBA como padrão, mas seu
download e atualizações estão disponàveis em:
- O suporte estí disponàvel 24h por dia, o ano todo: além do próprio site do
SAMBA existem milhares de sites e listas de discussão dedicadas ao assunto,
entre outras documentações e artigos em sites de renome por Administradores e
Engenheiros de Redes Linux. Muita coisa jí estí em nosso idioma facilitando
os iniciantes e interessados em leitura. Muitos sites nacionais são
especializados em Linux e Segurança para Linux.
Se a sua empresa busca uma solução estível e segura para Servidor de
Arquivos da rede, o SAMBA é uma grande opção.
Instalação
----------
Se a distribuição que deseja utilizar jí traz o SAMBA (como a
Conectiva, RedHat, Mandrake, Debian, TechLinux, Suse, praticamente todas hoje em
dia!), a instalação não é necessíria. Se deseja atualizí-lo ou iniciar
a instalação, siga os passos abaixo.
Para instalar o SAMBA é necessírio antes saber se o pacote obtido estí
no formato RPM ou .tar (.tgz ou .tar.gz). Se o pacote for um RPM,
execute o comando abaixo:
#rpm -ivh samba-2.2.x-i386.rpm
Atualmente grande parte das distribuições instalam o conjunto de
pacotes samba-common, samba-client e samba-doc juntamente com o pacote samba,
criando uma dependência entre estes pacotes.
Substitua o "x" pelo número relativo a versão do pacote ou o nome
correto do pacote dependendo da sua distribuição. Para atualizar o SAMBA
atual, substitua a sintaxe -ivh por -Uvh. Se o pacote veio no formato
tar.gz, execute o comando abaixo:
#tar -zxvf samba-2.2.x-i386.tar.gz
Um diretório serí criado com o nome samba-2.0.x. Entre neste diretório
e em seguida no subdiretório source. Para iniciar a instalação digite:
#./configure Em seguida digite:
#make Os binírios do SAMBA serão criados. Quando terminar digite:
#make install
Agora os binírios e píginas do man serão instalados. Aguarde o processo
e quando terminar confira o diretório /usr/doc/samba-2.2.x/docs para
informações sobre o SAMBA.
Configuração
------------
Toda a configuração do SAMBA é centralizada no arquivo smb.conf, que
deve ser guardado no diretório /etc.
(OBS: A partir da versão 7 do RedHat, o arquivo smb.conf foi "movido",
devendo ser guardado no diretório: /etc/samba)
Nele é que são descritos os compartilhamentos, permissões de acesso,
impressoras, dentre outras configurações disponàveis. Quando instalado, o
SAMBA disponibiliza os seguintes componentes:
smbd - O servidor SAMBA.
nmbd - O Servidor de nomes NetBios
smbclient - Cliente SMB para sistemas Unix.
smbmount - Ver final do documento, em Configurações.
smbpasswd - Alterar senhas (encriptadas) de usuírios smb.
smbprint - Cliente para envio de impressão a sistemas Linux.
smbstatus - Apresenta a situação atual das conexões SMB no Host.
testparm - Verifica o arquivo smb.conf (configuração do SAMBA).
testprns - Verifica a comunicação via rede com as impressoras.
O smb.conf é dividido basicamente em três partes: a configuração do
servidor SAMBA (parâmetros na seção [global], [printers] e [netlogon]), a
configuração dos diretórios/pastas pessoais dos usuírios (parâmetros na
seção [homes]) e as demais seções que correspondem aos diretórios
compartilhados.
Cada seção é representada entre colchetes [seção], e os parâmetros são
seguidos do sinal de igual (=) e o valor ou termo correspondente.
Confira abaixo um exemplo do smb.conf para um servidor Samba como PDC da
rede:
[global]
comment = Servidor SAMBA
workgroup = EMPRESA
security = user
os level = 100
announce as = NT Server
domain logons = yes
logon script = %U.bat
logon path = //%L/Profiles/%U
domain master = yes
local master = yes
preferred master = yes
guest account = nobody
encrypt passwords = yes
# wins server = 192.168.0.2
wins support = yes
keep alive = 20
debug level = 3
winpopup command = /bin/csh -c 'xedit %s; rm %s' &
log file = /var/log/samba_log.%u
null passwords = no
unix password sync = yes
socket options = IPTOS_LOWDELAY TCP_NODELAY
printing = bsd
printcap name = /etc/printcap
load printers = yes
hosts allow = 192.168.0. 127.
hosts deny = 192.168.0.3 192.168.0.4
[homes]
comment = Pastas dos Usuarios
public = no
browseable = yes
writeable = yes
hosts deny = 192.168.0.250
[printers]
comment = Impressoras Linux
public = no
browseable = yes
printable = yes
read only = yes
create mode = 0700
path = /var/spool/samba
admin users = admin, usuario1
[netlogon]
comment = Compartilhamento de Scripts
path = /etc/scripts
public = no
browseable = yes
writeable = no
[diretoria]
comment = Grupo Diretoria
path = /home/diretoria
public = no
browseable = yes
valid users = @diretoria
writeable = yes
write list = @diretoria
force create mode = 0777
force directory mode = 0777
[comercial]
comment = Grupo Comercial
path = /home/comercial
public = yes
browseable = yes
writeable = yes
write list = @comercial
read list = @marketing
force create mode = 0777
force directory mode = 0777
[transf]
comment = Area de Transferencia
path = /home/transf
public = yes
browseable = yes
writeable = yes
write list = @todos
force create mode = 0777
force directory mode = 0775
max disk size = 200
[oculto$]
comment = Especifico do Admin
path = /home/admin/oculto
copy = homes
max connections = 1
Conhecendo os parâmetros
------------------------
-> Seção [global]
Define as configurações globais do SAMBA. A relação abaixo apresenta a
explicação dos parâmetros do exemplo:
comment
Comentírio para este Host na Rede.
workgroup
Especifica o Domànio ou Workgroup a que o Host pertence na Rede.
security
Por padrão o SAMBA utiliza a segurança a nàvel de usuírio (security =
user), com opções:
security = share - Senhas de acesso serão solicitadas por cada recurso
compartilhado e não por usuírio, ou seja, cada diretório ou impressora
poderí ter uma senha única conhecida pelos usuírios autorizados. Esta
opção é geralmente usada p/ estações de trabalho Linux, onde em diversos
casos simplifica o acesso a dados locais quando necessírio.
security = user - As permissões são dadas de acordo com o login do
usuírio, ou através dos grupos (@grupo).
security = server - O SAMBA tentarí validara senha do usuírio enviando
os dados para outro servidor SMB, como outro servidor SAMBA ou um
servidor Windows. Deve-se incluir o parâmetro .password server = x.x.x.x. na
seção [global] do smb.conf.
security = domain - Usado se o Host for adicionado a um Domànio Windows
através do comando smbpasswd. Neste caso as informações de usuírio e
senha serão enviadas para o PDC da rede, exatamente como o servidor NT
faria. Note que é necessírio que a conta do usuírio exista tanto no Linux
quanto no servidor primírio (mais adiante isso serí explicado de forma
detalhada).
os level
Este parâmetro não é obrigatório se você não possui um servidor Linux
ou Windows na rede, mas deve ser usado caso tenha um ou mais. A variível
é um número de 1 a 255, onde 65 é a mesma variível utilizada pelo
servidor Windows. Especifique um número maior que este (como 100 por
exemplo) para garantir que o servidor SAMBA seja eleito na escolha de
validação do login das estações.
announce as
Permite especificar o tipo de servidor NetBios (nmbd) que serí
divulgado na rede. As opções aceitas pelo SAMBA: "NT Server", "NT Workstation",
"Win95" ou "WfW".
domain logons
Usado para validar o login na rede, apenas para estações Windows.
logon script
Indica qual arquivo de logon script serí executado para os usuírios. A
variível %u corresponde ao usuírio na rede. Deve também ser criado um
compartilhamento de nome [netlogon] apontando para o diretório dos
scripts.
logon path
Indica o caminho do perfil remoto do usuírio. A variível %L corresponde
ao nome do servidor NetBios (que pode ser o próprio SAMBA). O logon
path é útil quando usuírios costumam efetuar logon em mais de um Host na
rede, pois seu perfil é trazido com o logon. No caso do exemplo, o
diretório "Profiles" deve conter os scripts (em formato Microsoft usando NET
USE e etc) e os scripts devem ser criados com o notepad do Windows por
exemplo, a fim de conservar o formato do arquivo.
domain master
Indica se o Host serí o Domain Master Browser da rede inteira (WAN).
local master
Indica se o Host serí o Master Browser da rede local.
preferred master
Este parâmetro força a eleição do SAMBA como Master Browser para o
workgroup. É recomendível utilizar este parâmetro em conjunto com o "domain
master = yes" para garantir a eleição. Mas tome cuidado: se você possui
uma rede com servidores Windows e SAMBA e jí possui um servidor como
Domain Master, não use esta opção e deixe o parâmetro "os level = 65"
para haver equilàbrio.
guest account
O SAMBA trabalha melhor em redes Microsoft com a existência de uma
conta guest (visitante em inglês). Por padrão a conta usada é nobody (a
mesma utilizada pelo Apache).
wins server
Indica qual o servidor de Wins da rede. Se o próprio Host for o
servidor de Wins então não utilize este parâmetro, pois haverí um loop e o
sistema travarí!
wins support
Permite ao SAMBA ser o servidor de Wins na rede. Isto significa que o
SAMBA terí uma tabela com o ambiente completo da rede, garantindo que as
estações tenham acesso a estas informações e ganho em velocidade para
encontrar e acessar os compartilhamentos e impressoras. O Wins Server
deve ser especificado na configuração de rede (TCP/IP) das estações,
indicando o endereço IP do servidor.
keep alive
Como míquinas rodando Windows tendem a travar com o passar do tempo,
este parâmetro é usado para verificar o estado da conexão, evitando
trífego desnecessírio na rede. Também pode ser usado para estações Linux.
debug level
Parâmetro usado para dar flexibilidade a configuração do sistema.
Permite ao SAMBA trabalhar corretamente com algumas situações de erro, por
exemplo.
winpopup command
Especifica qual comando serí executado quando o servidor receber
mensagens Winpopup. Aqui, muitas opções podem ser usadas de acordo com a
preferência do Administrador. Se sua rede utiliza mensagens deste tipo, é
interessante definir um comando para o parâmetro, evitando assim
possàveis mensagens de erro para quem enviou a mensagem ao servidor.
log file
Indica o arquivo de log do SAMBA. A variível %u corresponde ao nome de
logon do usuírio. O samba por padrão gera arquivos de log em
/var/log/samba que indicam por exemplo os horírios de logon dos usuírios, quem
acessou determinado arquivo, etc. Esteja atento para estas informações
para consultas quando necessírio.
null passwords
Indica se serí ou não possàvel que usuírios tenham senha nula de logon
(logon sem senha).
unix password sync
Se este parâmetro for ativado (= yes) então clientes SMB (como estações
Windows) poderão trocar sua senha de login.
socket options
Este parâmetro permite configurações extras para o protocolo,
possibilitando uma melhor performance do servidor em lidar com os pacotes na
rede.
printing
Indica qual o sistema de impressão padrão utilizado pelo Linux.
printcap name
Indica o arquivo para busca das definições das impressoras.
load printers
Disponibiliza as impressoras para a rede.
hosts allow
Indica quais míquinas tem acesso ao servidor SAMBA. Pode-se utilizar o
endereço IP ou o nome da míquina. Para garantir acesso a toda uma rede
por exemplo, escreva: "hosts allow = 192.168.1.". Este parâmetro deve
ser usado preferencialmente nas demais seções, mas também pode ser usado
na seção Global.
hosts deny
Como em "hosts allow", mas para restringir o acesso ao servidor SAMBA.
Seção [homes]
Define os parâmetros para as pastas pessoais dos usuírios na rede (home
dir):
comment
Comentírio para este compartilhamento.
public
Também conhecido como "guest ok", permite ou não acesso de outros
usuírios.
browseable
Define se o compartilhamento serí ou não visàvel para o Ambiente de
Rede. Estações Windows95 versão 4.00.950-C não aceitam esta opção, onde
uma possàvel solução é utilizar o nome do compartilhamento seguido de $
(teste$ por exemplo), como faz-se no Windows.
writeable
Indica se o usuírio poderí ou não escrever em sua pasta pessoal (home
dir).
-> Demais Seções [shares]
Correspondem aos compartilhamentos presentes na rede. Os parâmetros
abaixo são apenas alguns dos possàveis que podem ser utilizados:
comment
Comentírio para o compartilhamento.
path
Caminho do diretório compartilhado.
valid users
Este parâmetro é usado para destacar quem terí acesso ao
compartilhamento na rede. É importante destacar que estações Win95/98/Me têm
diferenças entre si que em muitas situações representam um problema para acesso
e segurança. Acontece algumas vezes de você definir o "write list" e o
"read list" corretamente mas mesmo assim usuírios do "read list"
conseguem escrever no compartilhamento (!). Para resolver este problema,
inclua o "valid users" indicando os usuírios que têm acesso e em seguida
inclua o "write list" e o "read list" conforme sua necessidade.
writeable
Indica se serí ou não possàvel criar ou excluir arquivos ou diretórios
do compartilhamento.
public / guest ok
Indica se serí ou não permitido o acesso de outros usuírios.
browseable
Define se o compartilhamento serí ou não visàvel para o Ambiente de
Rede do Windows (apresentado na rede).
write list
Define os usuírios e/ou grupos com acesso de escrita no
compartilhamento. Para mais de um usuírio, separe os nomes por vàrgula
(user1, user2, etc) e para grupos utilize @ antes do nome do grupo.
read list
Como em .write list., mas define quem terí permissão de apenas leitura.
force create mode
Diz ao SAMBA para forçar o tipo de permissão dos arquivos criados (o
mesmo que usar o chmod). Esta permissão tem menor prioridade que os
parâmetros write list e read list.
force directory mode
O mesmo que force create mode, mas para os diretórios criados no
compartilhamento.
admin users
Indica quais são os usuírios com permissão completa para o
compartilhamento (permissão de root).
copy
Permite copiar os parâmetros de outra seção, como um template por
exemplo, útil se utiliza compartilhamentos semelhantes. Para alterar
parâmetros basta informí-los na seção atual.
hosts allow
Indica quais míquinas podem acessar o compartilhamento. Pode-se
utilizar o endereço IP ou o nome da míquina. Para garantir acesso a toda uma
rede classe C por exemplo, escreva: "hosts allow = 192.168.1.".
hosts deny
Como em "hosts allow", mas para restringir o acesso ao
compartilhamento.
max connections
Permite especificar o número míximo de conexões simultâneas ao
compartilhamento.
max disk size
Permite especificar qual o limite de espaço em disco que o
compartilhamento pode utilizar. Este valor é definido em Mb (megabytes).
Abaixo temos variíveis que podem ser usadas em parâmetros:
%S - Nome do Serviço (compartilhamento) atual.
%u - Nome do usuírio.
%g - Nome do grupo.
%H - Nome do diretório pessoal do usuírio (home dir).
%m - Nome da míquina cliente fornecido pelo NetBios.
%L - Nome do servidor NetBios, permitindo que a configuração desejada
seja alterada de acordo com o cliente que vai acessar o sistema.
%M - Nome Internet da míquina cliente.
%a - Sistema Operacional da míquina remota, onde os reconhecidos são
WfW, Win95, Win2000.
%I - O endereço IP da míquina cliente.
%T - Data e horírio.
Testando o SAMBA
----------------
Agora que o smb.conf estí configurado faça um teste para saber se estí
tudo certo, com o comando testparm:
# testparm > teste_config_samba #
Serí criado o arquivo teste_config_samba. Confira este arquivo e caso
exista alguma mensagem de erro (ERROR...) volte a corrija o problema.
Acertadas as configurações, deve-se ativar o SAMBA:
#/etc/rc.d/init.d/smb start
Se quiser conferir se o SAMBA estí realmente no ar, execute o comando
acima mas substitua o "start" por "status".
Para que o SAMBA seja iniciado sempre após a inicialização do servidor,
execute o ntsysv e marque o SMB. Se preferir, você também pode escrever
a linha de "start" do smb no arquivo /etc/rc.d/rc.local, da seguinte
forma:
1) De um vi no rc.local (#vi /etc/rc.d/rc.local ).
2) Tecle "i" para editar e ví até o final do arquivo (Page Down).
3) Escreva a seguinte linha: /etc/rc.d/init.d/./smb start
4) Tecle "Esc" e em seguida ":" e depois "wq" para sair.
A partir de agora, sempre que o computador for reiniciado o SAMBA serí
ativado automaticamente.
Em uma estação Linux, é necessírio dar um "start" exatamente como no
servidor, onde o smbclient deve ser utilizado para acessar os
compartilhamentos disponàveis no servidor.
Ainda na estação Linux, é necessírio que cada uma contenha um smb.conf
se diretórios locais precisarem ser compartilhados.
Estações Windows devem estar com o TCP/IP configurado corretamente (IP,
Míscara de SubRede, Wins se existir, etc).
Acessando Servidores através de Estações Linux
----------------------------------------------
-> O smbclient
Da mesma forma que o SAMBA permite que o Linux atue como servidor para
estações Linux e redes Microsoft, ele também permite atuar como estação
de trabalho para acessar servidores de ambos sistemas, sem que nenhuma
configuração seja necessíria no servidor.
Com o smbclient é possàvel acessar dados em um servidor Windows (lembra
o comando net, mas a sintaxe utilizada é similar aos de FTP). Ele pode
ser usado para receber e enviar arquivos, listar diretórios, navegar
pelos diretórios, renomear e apagar arquivos, entre outros. Diretórios
compartilhados por um servidor SAMBA são acessados da mesma forma.
Para verificar quais compartilhamentos estão disponàveis em um
determinado Host, execute:
$smbclient -L host_desejado
A resposta serí uma lista de serviços, ou seja, nomes de dispositivos
ou impressoras que podem ser compartilhados com os usuírios na rede. A
menos que o servidor SMB não tenha itens de segurança configurados, serí
solicitada uma senha antes de mostrar as informações. Exemplo:
$smbclient -L servidor1
A resposta serí semelhante a:
Server time is Fri Dec 22 15:58:02 2000
Timezone is UTC+10.0
Password:
Domain=[EMPRESA] OS=[Windows NT 4.0]
Server=[NT LAN Manager 4.0]
Server=[servidor1] User=[] Workgroup=[EMPRESA] Domain=[]
Sharename Type Comment
ADMIN$ Disk Remote Administration
Public Disk Public
C$ Disk Default Share
Print$ Disk Printer Control
Para acessar uma pasta compartilhada, basta especificar o caminho na
rede, conforme abaixo:
$smbclient //maquina/pasta1 senha O smbtar
Também é possàvel fazer backup (cópias de segurança) para o formato
.tar de arquivos que estão em compartilhamentos na rede. Esta operação é
muito útil para garantir backup de arquivos em estações com pastas
compartilhadas mas que não pertencem ao Domànio da rede (por exemplo) ou em
estações isoladas da rede. O comando utilizado é o smbtar:
$smbtar -s HOST -p SENHA -x COMPARTILHAMENTO -d PASTA -t FITA (.tar)
Como exemplo vamos criar um arquivo chamado vacina.tar que serí o
backup de //servidor1/vacinas/vacina.exe sem senha para acesso:
$smbtar -s servidor1 -x vacinas -d vacina.exe -t vacina.tar
Para conferir se o arquivo foi criado corretamente, digite:
$tar -tvf vacina.tar
Se o empacotamento teve sucesso, você verí o nome original do arquivo e
seu tamanho. Para que o backup seja guardado em fita deve-se mudar a
sintaxe do comando, substituindo o nome do arquivo pela unidade de fita
instalada (geralmente /dev/st0).
-> O smbpasswd
O SAMBA permite também que as estações troquem suas senhas de logon,
utilizando o smbpasswd. Ele age de forma similar ao comando passwd, mas
as senhas são armazenadas no arquivo smbpasswd. É possàvel ainda alterar
a senha dos usuírios em um servidor Primírio de um Domànio NT (PDC).
Utilizado pelo superusuírio, ele permite que contas sejam adicionados
ou removidos e atributos sejam alterados.
Mantenha o "localhost" especificado no parâmetro "allow hosts" para seu
perfeito funcionamento.
O smbpasswd é um arquivo em formato ASCII e contém o nome do usuírio,
identificação junto ao Linux, a senha encriptada, o indicador de como
estí a conta e a data de última alteração da senha do usuírio.
Vale destacar que o smbpasswd somente é útil quando o SAMBA estí
configurado para utilizar senhas criptografadas (veja detalhes em
Considerações).
-> O smbstatus
Para saber a situação atual das conexões SAMBA, utilizamos o smbstatus
($smbstatus -p - Lista os processos smbd e finaliza em seguida. Útil quando
utilizado em programas.
-S - Lista todos os compartilhamentos definnidos.
-s - Permite utilizar outro arquivo de conffiguração (smb.conf2 por
exemplo), que deve ser especificado após a opção.
-u - Lista as informações rellevantes sobre o usuírio, que deve ser
especificado após a opção.
-> O testprns
O testprns verifica o nome da impressora junto ao smbd, a fim de
determinar se hí um nome vílido (entrada encontrada em printcap para a
impressora) sendo informado para uso pelo serviço de impressão. Pode ser
ativado da seguinte forma:
#testprns ftp://ftp.samba.org/pub/samba/pwdump/pwdump.exe
Efetue logon como usuírio Administrator no servidor NT (que
disponibiliza a autenticação). Em seguida, abra um Command Prompt e ví até o
diretório que você colocou o pwdump. Rode o comando pwdump da seguinte
maneira:
#pwdump smbpasswd
Serí gerado um arquivo smbpasswd com as informações de autenticação
(logon e senha) do Windows NT no formato criptografado utilizado pelo
SAMBA. Agora copie o arquivo smbpasswd gerado para o servidor Linux
(através de diskete ou diretório compartilhado, por exemplo). No Linux, jogue
o arquivo smbpasswd criado para o diretório /etc e defina as permissões
para 600:
#chmod 600 /etc/smbpasswd
Para que funcione corretamente, é importante destacar que o ID dos
usuírios seja o mesmo tanto no smbpasswd quanto no passwd do Linux. Abra o
smbpasswd e exporte os dados de autenticação (nome do usuírio, ID, etc)
mas não é possàvel fazer o mesmo com as senhas. Se você quiser exportar
as senhas vai ter que quebrí-las com algum password cracker :) Na
verdade não é necessírio ter a senha no passwd, apenas o login, ID e home.
Para rodar o SAMBA e ele autenticar os usuírios, não é preciso ter a
senha no passwd do Unix, apenas o login, ID e home se você quiser
exportí-los. Vão ser utilizadas as senhas do smbpasswd.
Luciano Linhares Martins lmartins@matrix.com.br criou um script
baseado no mksmbpasswd para converter as senhas em formato smbpasswd para o
passwd. Funciona bem e pode ser modificado conforme a necessidade de
cada um. É um script bem simples e pode ser alterado de acordo com a sua
necessidade. Crie o arquivo mkpasswd.sh com o conteúdo abaixo:
#!/bin/sh
awk 'BEGIN {FS=":"
printf("#\n# Unix password file.\n#\n")
}
{ printf( "%s:*:%s:103:%s:/home/%s:/bin/bash\n", $1, $2, $5, $1) }
'
Dê um chmod 700 no arquivo e execute da seguinte maneira:
#cat /etc/smbpasswd | ./mkpasswd.sh passwd-smb
Se o seu arquivo smbpasswd e o script mkpasswd.sh estiverem em outro
local, configure de acordo com a sua necessidade. Após isso, é gerado um
arquivo chamado passwd-smb com os logins, id's, home, etc no formato do
passwd do seu sistema.
Normalmente, os ID's do smbpasswd vão começar a partir de 1000 e você
não vai ter problemas para junta-lo com o seu passwd do Unix sem nenhum
conflito. Eu recomendo que você confira antes de juntar as bases.
Procure por logins com o mesmo ID, mesmo username e username com espaços.
Se você utiliza shadow é importante desabilití-lo antes de juntar os
arquivos. Desabilite o shadow através do comando pwunconv. Em seguida
para passar o arquivo passwd-smb para o passwd do sistema entre no
diretório onde esta o arquivo passwd-smb que você gerou e digite:
#cat passwd-smb /etc/passwd
Se você utiliza o shadow, pode reativí-lo agora através do comando
pwconv. Reinicie o Linux para que as alterações entrem em vigor.
Exemplo de Login Script para estações Windows
---------------------------------------------
O login script (ou logon script) é uma ferramenta muito útil para
disponibilizar recursos na rede. O script abaixo é um exemplo que pode usado
em redes com estações Windows.
Lembre-se de que deve ser criado com o notepad (por exemplo) em uma
estação Windows para que funcione corretamente! (Confira a seção [global]
para saber mais sobre o logon script). Note que a sintaxe do comando
net é diferente para sistemas 95/98/Me e NT/2000.
rem Logon script padrão para a rede.
net time \\servidor1 /set /yes
@echo off
if %OS%.==Windows_NT. goto WinNT
:Win95
net use X: \\servidor1\pasta_01
net use Z: /HOME
goto end
:WinNT
net use X: \\servidor1\pasta_01 /persistent:no
net use Z: /HOME /persistent:no
:end
Configurando o SAMBA Remotamente
--------------------------------
Além de ser um software de uso livre e compatàvel com redes existentes,
o SAMBA ainda possui outra caracteràstica: permite ser administrado
remotamente. Para isso deve utilizar um programa especàfico que geralmente
trabalha via http. É possàvel monitorar através de sua rede interna ou
mesmo através da Internet.
Os principais programas são o SWAT, Webmin e o LinuxConf. Existem
outros mas não vou entrar em detalhes de como instalar estes programas ou
utilizí-los, mas abaixo estí o link para downloads, inclusive de
programas para administrar o SAMBA através da Interface Grífica do Linux:
http://us4.samba.org/samba/GUI
Considerações
-------------
Abaixo estão algumas considerações importantes sobre o SAMBA:
O SAMBA permite ainda muitas outras configurações que podem ser
consultadas através do man do smb.conf. Uma documentação importante estí em
/usr/doc/samba-2.2.x/ com dicas e referencias a segurança, navegação,
compatibilidades, etc.
Uma caracteràstica das versões mais recentes do SAMBA é a possibilidade
de um cliente NT/2000 usar sua interface nativa de configuração para
ver e modificar permissões no Linux. O parâmetro "nt acl support = yes"
deve ser adicionado na seção [global] do smb.conf.
A aplicação smbmount vem inclusa no pacote do SAMBA (samba-client) com
a função de possibilitar a montagem de um compartilhamento de outra
míquina localmente. É uma ótima ferramenta mas pode apresentar problemas,
onde os mais conhecidos são quando compartilhamos unidades de CD via
rede. O comando mount é mais seguro e pode fazer exatamente a mesma
tarefa, com a seguinte sintaxe:
mount -t smbfs -o username=usuario,password=senha //estacao/pasta /local
O diretório /local deve ser criado antecipadamente. Vale a pena
escrever uma linha no /etc/fstab para facilitar o processo.
Não é aconselhível reiniciar o SAMBA a cada modificação no smb.conf.
Com excessão a parâmetros como "path", "logon master", e outros que
definem acesso ou segurança, a criação de compartilhamentos e permissões de
acesso são automaticamente validadas pelo Samba. Muitos programas ficam
"salvando" arquivos constantemente enquanto estão abertos, e se neste
momento você reiniciar o SAMBA serí um risco de se perder o arquivo.
Por padrão o SAMBA não utiliza autenticação encriptada na rede, mas sim
"clear text". Versões mais atuais do Windows95/98/Me não utilizam o
modo "clear text". Para resolver este problema temos duas soluções:
Solução 1 - Inserir os parâmetros "encript passwords = yes" e "smb
passwd file = /etc/smbpasswd" na seção [global] do smb.conf e certificar-se
de que todas as estações na rede utilizam autenticação encriptada no
logon. Para fazer o Windows trabalhar com senhas criptografadas, use o
regedit e crie a seguinte chave:
Windows 95/98
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Servic es\VxD\VNETSUP
Adicione um novo valor DWORD: Value Name: EnablePlainTextPassword e
Data: 0x01
Windows NT 4.0
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Servic es\Rdr\Parameters
Adicione um novo valor DWORD: Value Name: EnablePlainTextPassword e
Data: 0x01
Windows 2000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\LanmanWorkStation
\Parameters
Adicione um novo valor DWORD: Value Name: EnablePlainTextPassword e
Data: 0x01
Uma vez que as alterações no registro tenham sido feitas, reinicie a
míquina Windows.
Para maiores detalhes, leia os arquivos ENCRYPTION.txt, Win95.txt e
WinNT.txt na documentação do Samba. Se seus clientes e seu servidor estão
usando senhas criptografadas, você não serí capaz de visualizar
compartilhamentos no servidor até que uma conexão inicial tenha sido feita com
a autenticação apropriada. Para conseguir a conexão inicial, entre o
nome do compartilhamento manualmente no Gerenciador de Arquivos ou na
caixa de diílogo do Explorer, na forma '\\'. Registre-se no servidor com
um nome de usuírio e senha que lhe são vílidos.
Se você suspeita que seu serviço de nomes NetBIOS não estí corretamente
configurado (talvez porque você tenha obtido erros 'host not found' ao
tentar se conectar), tente usar somente o endereço IP do servidor:
'\\192.168.0.1'. Para que o nome dos arquivos apareçam corretamente, você
pode precisar configurar algumas opções na seção do compartilhamento.
Adicione o seguinte parâmetro para clientes Windows 95/98/NT/2000, mas
pode apresentar problemas para clientes WfW3.11: "mangle case = yes".
Solução 2 - Não utilizar encriptação no logon, alterando uma chave no
registro do Windows. O SAMBA trís o arquivo .reg para cada versão do
Windows com a chave modificada. Execute o arquivo correspondente para
validar a mudança (eles estão em /usr/doc/samba-2.0.x/docs).
Se você não possui estes arquivos, abaixo estão as chaves que devem ser
modificadas nas estações Windows para não utilizar o "clear text":
Windows 95/98
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Servic es\VxD\VNETSUP]
"EnablePlainTextPassword"=dword:00000001
WindowsNT 4.0
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\Rdr\Parameters]
"EnablePlainTextPassword"=dword:00000001
Windows 2000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\LanmanWorkStation
\Parameters]
"EnablePlainTextPassword"=dword:00000001
É claro que se sua rede for "sniffada", os passwords que não estiverem
encriptados serão descobertos. Em alguns casos vale a pena tirar a
criptografia de login e monitorar a rede com um anti-sniffer. Mas lembre-se
que o Windows NT e o 2000 só conseguem se autenticar no servidor SAMBA
através de senha encriptada. Mais ainda: o Windows 2000 vem com algumas
dificuldades para entrar no Domànio de um PDC Samba versão 2.1.x.
Utilize a versão 2.2.2 ou superior do Samba para evitar problemas.
Se o SAMBA deve diferenciar maiúsculas e minúsculas quando procurando
por arquivos, adicione "case sensitive = yes". Para utilizar como padrão
letras maiúsculas ou minúsculas quando os arquivos são criados,
adicione "default case = lower (ou upper)". Para preservar maiúsculas e
minúsculas para todos os nomes de arquivo, adicione "preserve case = yes".
Para preservar maiúsculas e minúsculas para nomes DOS (8.3), adicione
"short preserve case = yes".
Se o servidor possui mais de uma placa de rede, o smb.conf deve conter
uma especificação para qual placa serí utilizada pelo Samba. Adicione o
seguinte parâmetro: "interfaces = 192.168.1.1/24", onde o número depois
da / é uma referencia à míscara de sub-rede. "24" é o valor a usar para
uma rede Classe C não segmentada. Para mais informações sobre cílculo
de sub-redes visite:
http://www.ziplink.net/~ralphb/IPSubnet/index.html
O SAMBA atualmente não pode ser utilizado como BDC (Backup Server) em
conjunto com um PDC Windows NT ou 2000. Tanto as versões 2.0.x quanto as
2.2.x ainda ñ estão prontas para tal tarefa (pelo menos por enquanto).
O Samba de modo geral não permite "trust relationship" entre servidores
Windows (NT e 2000). Quem sabe após ler estas linhas este recurso jí
tenha sido disponàvel? :)
Todos os parâmetros de configuração apresentados neste manual são
vílidos para as versões 2.0.x e 2.2.x do Samba. Caso alguém encontre alguma
incompatibilidade, peço que entre em contato ok!
Lembre-se que a documentação do SAMBA (do protocolo SMB em geral) é
extensa. Consulte os docs criados após a sua instalação. Você pode também
obter referencias em documentações do LDP (Linux Documentation
Project), que no Brasil estí em: .
Agradecimentos e créditos
-------------------------
(Em versões anteriores deste manual eu não citei alguns nomes,
puramente por esquecimento... Peço muitas desculpas pois ainda circulam na
Internet. Os devidos créditos estão abaixo e se esqueci de alguém, por
favor email-me!!)
Espero com este artigo ter ajudado todos aqueles que pretendem montar
um servidor de arquivos Linux e difundir o Linux e sua documentação ao
maior número possàvel de empresas, administradores e usuírios.
Deixo meus sinceros agradecimentos a todos que colaboraram com este
manual direta ou indiretamente, principalmente aos seguintes sites (em
ordem de publicação):
Linux Unleashed
LinuxPlace
Linux in Brazil
LDP Brasil
Olinux
Dicas Linux
... e todos os outros que também publicaram este manual e que se
esforçam para divulgar o Linux no Brasil. Documentações foram consultadas
para agregar ainda mais informação a este manual, e foram elas:
smb-howto do LDP
samba-howto da Conectiva
o man do samba (smb.conf e comandos)
publicações disponàveis no site oficial do Samba
Este manual pode ser encontrado em: http://br.geocities.com/vffzbr
Agradeço também a todos os usuírios, administradores e leitores que
enviaram emails a respeito do manual, elogiando e criticando, buscando
respostas para as dúvidas e citando dicas a serem adicionadas a este.
Parabéns ao "Samba Team" pelo excelente trabalho!
Grande Abraço a todos! :P
Antes de começar vamos entender o que é o Samba. Em uma rede é
necessírio compartilhar dados, por isso temos que pensar em obter o míximo em
qualidade do Sistema / Aplicação que serí o responsível por esta tarefa.
Com o SAMBA é possàvel compartilhar diretórios, impressoras, acessar
arquivos na rede exatamente como em redes Microsoft. Mas neste caso, seu
servidor é um Linux rodando uma aplicação especàfica. O Windows NT e o
2000 (assim como o NetWare 5 e outros presentes no mercado) são
reconhecidos mundialmente por sua segurança e escalabilidade, mas o SAMBA
possui muitas vantagens que podem se transformar em soluções e economia
para sua empresa. Confira:
- Permite compatibilidade com estações Windows (de WfW a 2000) e
servidores WinNT 4.0 e 2000. Entre servidores e estações Linux (com Interface
Grífica por exemplo) a compatibilidade é total.
- O SAMBA é 100% configurível, com a grande vantagem de centralizar
esta configuração em um único arquivo, o smb.conf. Sem dúvida é muito
interessante ter a possibilidade de restaurar toda a configuração que
disponibiliza seu Servidor de Arquivos (inclusive as permissões de acesso)
através do backup de apenas 1 arquivo, em casos de desastre. Porém isso
não quer dizer que não seja necessírio o backup de outros arquivos de
configuração... :)
- Todo o SAMBA pode ser configurado remotamente através de acesso
seguro, além do recebimento por email de informações do estado do servidor
(bastando utilizar um script especàfico que busca informações nos
arquivos de log e cria um arquivo que pode ser enviado por email).
- Em se falando de economia não hí o que discutir: o Linux e o SAMBA
estão disponàveis para download na Internet sem ônus algum para qualquer
usuírio comum ou empresa que se interesse em utilizí-lo, sem custos com
licenças ou atualizações.
- As mais recentes distribuições jí trazem o SAMBA como padrão, mas seu
download e atualizações estão disponàveis em:
- O suporte estí disponàvel 24h por dia, o ano todo: além do próprio site do
SAMBA existem milhares de sites e listas de discussão dedicadas ao assunto,
entre outras documentações e artigos em sites de renome por Administradores e
Engenheiros de Redes Linux. Muita coisa jí estí em nosso idioma facilitando
os iniciantes e interessados em leitura. Muitos sites nacionais são
especializados em Linux e Segurança para Linux.
Se a sua empresa busca uma solução estível e segura para Servidor de
Arquivos da rede, o SAMBA é uma grande opção.
Instalação
----------
Se a distribuição que deseja utilizar jí traz o SAMBA (como a
Conectiva, RedHat, Mandrake, Debian, TechLinux, Suse, praticamente todas hoje em
dia!), a instalação não é necessíria. Se deseja atualizí-lo ou iniciar
a instalação, siga os passos abaixo.
Para instalar o SAMBA é necessírio antes saber se o pacote obtido estí
no formato RPM ou .tar (.tgz ou .tar.gz). Se o pacote for um RPM,
execute o comando abaixo:
#rpm -ivh samba-2.2.x-i386.rpm
Atualmente grande parte das distribuições instalam o conjunto de
pacotes samba-common, samba-client e samba-doc juntamente com o pacote samba,
criando uma dependência entre estes pacotes.
Substitua o "x" pelo número relativo a versão do pacote ou o nome
correto do pacote dependendo da sua distribuição. Para atualizar o SAMBA
atual, substitua a sintaxe -ivh por -Uvh. Se o pacote veio no formato
tar.gz, execute o comando abaixo:
#tar -zxvf samba-2.2.x-i386.tar.gz
Um diretório serí criado com o nome samba-2.0.x. Entre neste diretório
e em seguida no subdiretório source. Para iniciar a instalação digite:
#./configure Em seguida digite:
#make Os binírios do SAMBA serão criados. Quando terminar digite:
#make install
Agora os binírios e píginas do man serão instalados. Aguarde o processo
e quando terminar confira o diretório /usr/doc/samba-2.2.x/docs para
informações sobre o SAMBA.
Configuração
------------
Toda a configuração do SAMBA é centralizada no arquivo smb.conf, que
deve ser guardado no diretório /etc.
(OBS: A partir da versão 7 do RedHat, o arquivo smb.conf foi "movido",
devendo ser guardado no diretório: /etc/samba)
Nele é que são descritos os compartilhamentos, permissões de acesso,
impressoras, dentre outras configurações disponàveis. Quando instalado, o
SAMBA disponibiliza os seguintes componentes:
smbd - O servidor SAMBA.
nmbd - O Servidor de nomes NetBios
smbclient - Cliente SMB para sistemas Unix.
smbmount - Ver final do documento, em Configurações.
smbpasswd - Alterar senhas (encriptadas) de usuírios smb.
smbprint - Cliente para envio de impressão a sistemas Linux.
smbstatus - Apresenta a situação atual das conexões SMB no Host.
testparm - Verifica o arquivo smb.conf (configuração do SAMBA).
testprns - Verifica a comunicação via rede com as impressoras.
O smb.conf é dividido basicamente em três partes: a configuração do
servidor SAMBA (parâmetros na seção [global], [printers] e [netlogon]), a
configuração dos diretórios/pastas pessoais dos usuírios (parâmetros na
seção [homes]) e as demais seções que correspondem aos diretórios
compartilhados.
Cada seção é representada entre colchetes [seção], e os parâmetros são
seguidos do sinal de igual (=) e o valor ou termo correspondente.
Confira abaixo um exemplo do smb.conf para um servidor Samba como PDC da
rede:
[global]
comment = Servidor SAMBA
workgroup = EMPRESA
security = user
os level = 100
announce as = NT Server
domain logons = yes
logon script = %U.bat
logon path = //%L/Profiles/%U
domain master = yes
local master = yes
preferred master = yes
guest account = nobody
encrypt passwords = yes
# wins server = 192.168.0.2
wins support = yes
keep alive = 20
debug level = 3
winpopup command = /bin/csh -c 'xedit %s; rm %s' &
log file = /var/log/samba_log.%u
null passwords = no
unix password sync = yes
socket options = IPTOS_LOWDELAY TCP_NODELAY
printing = bsd
printcap name = /etc/printcap
load printers = yes
hosts allow = 192.168.0. 127.
hosts deny = 192.168.0.3 192.168.0.4
[homes]
comment = Pastas dos Usuarios
public = no
browseable = yes
writeable = yes
hosts deny = 192.168.0.250
[printers]
comment = Impressoras Linux
public = no
browseable = yes
printable = yes
read only = yes
create mode = 0700
path = /var/spool/samba
admin users = admin, usuario1
[netlogon]
comment = Compartilhamento de Scripts
path = /etc/scripts
public = no
browseable = yes
writeable = no
[diretoria]
comment = Grupo Diretoria
path = /home/diretoria
public = no
browseable = yes
valid users = @diretoria
writeable = yes
write list = @diretoria
force create mode = 0777
force directory mode = 0777
[comercial]
comment = Grupo Comercial
path = /home/comercial
public = yes
browseable = yes
writeable = yes
write list = @comercial
read list = @marketing
force create mode = 0777
force directory mode = 0777
[transf]
comment = Area de Transferencia
path = /home/transf
public = yes
browseable = yes
writeable = yes
write list = @todos
force create mode = 0777
force directory mode = 0775
max disk size = 200
[oculto$]
comment = Especifico do Admin
path = /home/admin/oculto
copy = homes
max connections = 1
Conhecendo os parâmetros
------------------------
-> Seção [global]
Define as configurações globais do SAMBA. A relação abaixo apresenta a
explicação dos parâmetros do exemplo:
comment
Comentírio para este Host na Rede.
workgroup
Especifica o Domànio ou Workgroup a que o Host pertence na Rede.
security
Por padrão o SAMBA utiliza a segurança a nàvel de usuírio (security =
user), com opções:
security = share - Senhas de acesso serão solicitadas por cada recurso
compartilhado e não por usuírio, ou seja, cada diretório ou impressora
poderí ter uma senha única conhecida pelos usuírios autorizados. Esta
opção é geralmente usada p/ estações de trabalho Linux, onde em diversos
casos simplifica o acesso a dados locais quando necessírio.
security = user - As permissões são dadas de acordo com o login do
usuírio, ou através dos grupos (@grupo).
security = server - O SAMBA tentarí validara senha do usuírio enviando
os dados para outro servidor SMB, como outro servidor SAMBA ou um
servidor Windows. Deve-se incluir o parâmetro .password server = x.x.x.x. na
seção [global] do smb.conf.
security = domain - Usado se o Host for adicionado a um Domànio Windows
através do comando smbpasswd. Neste caso as informações de usuírio e
senha serão enviadas para o PDC da rede, exatamente como o servidor NT
faria. Note que é necessírio que a conta do usuírio exista tanto no Linux
quanto no servidor primírio (mais adiante isso serí explicado de forma
detalhada).
os level
Este parâmetro não é obrigatório se você não possui um servidor Linux
ou Windows na rede, mas deve ser usado caso tenha um ou mais. A variível
é um número de 1 a 255, onde 65 é a mesma variível utilizada pelo
servidor Windows. Especifique um número maior que este (como 100 por
exemplo) para garantir que o servidor SAMBA seja eleito na escolha de
validação do login das estações.
announce as
Permite especificar o tipo de servidor NetBios (nmbd) que serí
divulgado na rede. As opções aceitas pelo SAMBA: "NT Server", "NT Workstation",
"Win95" ou "WfW".
domain logons
Usado para validar o login na rede, apenas para estações Windows.
logon script
Indica qual arquivo de logon script serí executado para os usuírios. A
variível %u corresponde ao usuírio na rede. Deve também ser criado um
compartilhamento de nome [netlogon] apontando para o diretório dos
scripts.
logon path
Indica o caminho do perfil remoto do usuírio. A variível %L corresponde
ao nome do servidor NetBios (que pode ser o próprio SAMBA). O logon
path é útil quando usuírios costumam efetuar logon em mais de um Host na
rede, pois seu perfil é trazido com o logon. No caso do exemplo, o
diretório "Profiles" deve conter os scripts (em formato Microsoft usando NET
USE e etc) e os scripts devem ser criados com o notepad do Windows por
exemplo, a fim de conservar o formato do arquivo.
domain master
Indica se o Host serí o Domain Master Browser da rede inteira (WAN).
local master
Indica se o Host serí o Master Browser da rede local.
preferred master
Este parâmetro força a eleição do SAMBA como Master Browser para o
workgroup. É recomendível utilizar este parâmetro em conjunto com o "domain
master = yes" para garantir a eleição. Mas tome cuidado: se você possui
uma rede com servidores Windows e SAMBA e jí possui um servidor como
Domain Master, não use esta opção e deixe o parâmetro "os level = 65"
para haver equilàbrio.
guest account
O SAMBA trabalha melhor em redes Microsoft com a existência de uma
conta guest (visitante em inglês). Por padrão a conta usada é nobody (a
mesma utilizada pelo Apache).
wins server
Indica qual o servidor de Wins da rede. Se o próprio Host for o
servidor de Wins então não utilize este parâmetro, pois haverí um loop e o
sistema travarí!
wins support
Permite ao SAMBA ser o servidor de Wins na rede. Isto significa que o
SAMBA terí uma tabela com o ambiente completo da rede, garantindo que as
estações tenham acesso a estas informações e ganho em velocidade para
encontrar e acessar os compartilhamentos e impressoras. O Wins Server
deve ser especificado na configuração de rede (TCP/IP) das estações,
indicando o endereço IP do servidor.
keep alive
Como míquinas rodando Windows tendem a travar com o passar do tempo,
este parâmetro é usado para verificar o estado da conexão, evitando
trífego desnecessírio na rede. Também pode ser usado para estações Linux.
debug level
Parâmetro usado para dar flexibilidade a configuração do sistema.
Permite ao SAMBA trabalhar corretamente com algumas situações de erro, por
exemplo.
winpopup command
Especifica qual comando serí executado quando o servidor receber
mensagens Winpopup. Aqui, muitas opções podem ser usadas de acordo com a
preferência do Administrador. Se sua rede utiliza mensagens deste tipo, é
interessante definir um comando para o parâmetro, evitando assim
possàveis mensagens de erro para quem enviou a mensagem ao servidor.
log file
Indica o arquivo de log do SAMBA. A variível %u corresponde ao nome de
logon do usuírio. O samba por padrão gera arquivos de log em
/var/log/samba que indicam por exemplo os horírios de logon dos usuírios, quem
acessou determinado arquivo, etc. Esteja atento para estas informações
para consultas quando necessírio.
null passwords
Indica se serí ou não possàvel que usuírios tenham senha nula de logon
(logon sem senha).
unix password sync
Se este parâmetro for ativado (= yes) então clientes SMB (como estações
Windows) poderão trocar sua senha de login.
socket options
Este parâmetro permite configurações extras para o protocolo,
possibilitando uma melhor performance do servidor em lidar com os pacotes na
rede.
printing
Indica qual o sistema de impressão padrão utilizado pelo Linux.
printcap name
Indica o arquivo para busca das definições das impressoras.
load printers
Disponibiliza as impressoras para a rede.
hosts allow
Indica quais míquinas tem acesso ao servidor SAMBA. Pode-se utilizar o
endereço IP ou o nome da míquina. Para garantir acesso a toda uma rede
por exemplo, escreva: "hosts allow = 192.168.1.". Este parâmetro deve
ser usado preferencialmente nas demais seções, mas também pode ser usado
na seção Global.
hosts deny
Como em "hosts allow", mas para restringir o acesso ao servidor SAMBA.
Seção [homes]
Define os parâmetros para as pastas pessoais dos usuírios na rede (home
dir):
comment
Comentírio para este compartilhamento.
public
Também conhecido como "guest ok", permite ou não acesso de outros
usuírios.
browseable
Define se o compartilhamento serí ou não visàvel para o Ambiente de
Rede. Estações Windows95 versão 4.00.950-C não aceitam esta opção, onde
uma possàvel solução é utilizar o nome do compartilhamento seguido de $
(teste$ por exemplo), como faz-se no Windows.
writeable
Indica se o usuírio poderí ou não escrever em sua pasta pessoal (home
dir).
-> Demais Seções [shares]
Correspondem aos compartilhamentos presentes na rede. Os parâmetros
abaixo são apenas alguns dos possàveis que podem ser utilizados:
comment
Comentírio para o compartilhamento.
path
Caminho do diretório compartilhado.
valid users
Este parâmetro é usado para destacar quem terí acesso ao
compartilhamento na rede. É importante destacar que estações Win95/98/Me têm
diferenças entre si que em muitas situações representam um problema para acesso
e segurança. Acontece algumas vezes de você definir o "write list" e o
"read list" corretamente mas mesmo assim usuírios do "read list"
conseguem escrever no compartilhamento (!). Para resolver este problema,
inclua o "valid users" indicando os usuírios que têm acesso e em seguida
inclua o "write list" e o "read list" conforme sua necessidade.
writeable
Indica se serí ou não possàvel criar ou excluir arquivos ou diretórios
do compartilhamento.
public / guest ok
Indica se serí ou não permitido o acesso de outros usuírios.
browseable
Define se o compartilhamento serí ou não visàvel para o Ambiente de
Rede do Windows (apresentado na rede).
write list
Define os usuírios e/ou grupos com acesso de escrita no
compartilhamento. Para mais de um usuírio, separe os nomes por vàrgula
(user1, user2, etc) e para grupos utilize @ antes do nome do grupo.
read list
Como em .write list., mas define quem terí permissão de apenas leitura.
force create mode
Diz ao SAMBA para forçar o tipo de permissão dos arquivos criados (o
mesmo que usar o chmod). Esta permissão tem menor prioridade que os
parâmetros write list e read list.
force directory mode
O mesmo que force create mode, mas para os diretórios criados no
compartilhamento.
admin users
Indica quais são os usuírios com permissão completa para o
compartilhamento (permissão de root).
copy
Permite copiar os parâmetros de outra seção, como um template por
exemplo, útil se utiliza compartilhamentos semelhantes. Para alterar
parâmetros basta informí-los na seção atual.
hosts allow
Indica quais míquinas podem acessar o compartilhamento. Pode-se
utilizar o endereço IP ou o nome da míquina. Para garantir acesso a toda uma
rede classe C por exemplo, escreva: "hosts allow = 192.168.1.".
hosts deny
Como em "hosts allow", mas para restringir o acesso ao
compartilhamento.
max connections
Permite especificar o número míximo de conexões simultâneas ao
compartilhamento.
max disk size
Permite especificar qual o limite de espaço em disco que o
compartilhamento pode utilizar. Este valor é definido em Mb (megabytes).
Abaixo temos variíveis que podem ser usadas em parâmetros:
%S - Nome do Serviço (compartilhamento) atual.
%u - Nome do usuírio.
%g - Nome do grupo.
%H - Nome do diretório pessoal do usuírio (home dir).
%m - Nome da míquina cliente fornecido pelo NetBios.
%L - Nome do servidor NetBios, permitindo que a configuração desejada
seja alterada de acordo com o cliente que vai acessar o sistema.
%M - Nome Internet da míquina cliente.
%a - Sistema Operacional da míquina remota, onde os reconhecidos são
WfW, Win95, Win2000.
%I - O endereço IP da míquina cliente.
%T - Data e horírio.
Testando o SAMBA
----------------
Agora que o smb.conf estí configurado faça um teste para saber se estí
tudo certo, com o comando testparm:
# testparm > teste_config_samba #
Serí criado o arquivo teste_config_samba. Confira este arquivo e caso
exista alguma mensagem de erro (ERROR...) volte a corrija o problema.
Acertadas as configurações, deve-se ativar o SAMBA:
#/etc/rc.d/init.d/smb start
Se quiser conferir se o SAMBA estí realmente no ar, execute o comando
acima mas substitua o "start" por "status".
Para que o SAMBA seja iniciado sempre após a inicialização do servidor,
execute o ntsysv e marque o SMB. Se preferir, você também pode escrever
a linha de "start" do smb no arquivo /etc/rc.d/rc.local, da seguinte
forma:
1) De um vi no rc.local (#vi /etc/rc.d/rc.local ).
2) Tecle "i" para editar e ví até o final do arquivo (Page Down).
3) Escreva a seguinte linha: /etc/rc.d/init.d/./smb start
4) Tecle "Esc" e em seguida ":" e depois "wq" para sair.
A partir de agora, sempre que o computador for reiniciado o SAMBA serí
ativado automaticamente.
Em uma estação Linux, é necessírio dar um "start" exatamente como no
servidor, onde o smbclient deve ser utilizado para acessar os
compartilhamentos disponàveis no servidor.
Ainda na estação Linux, é necessírio que cada uma contenha um smb.conf
se diretórios locais precisarem ser compartilhados.
Estações Windows devem estar com o TCP/IP configurado corretamente (IP,
Míscara de SubRede, Wins se existir, etc).
Acessando Servidores através de Estações Linux
----------------------------------------------
-> O smbclient
Da mesma forma que o SAMBA permite que o Linux atue como servidor para
estações Linux e redes Microsoft, ele também permite atuar como estação
de trabalho para acessar servidores de ambos sistemas, sem que nenhuma
configuração seja necessíria no servidor.
Com o smbclient é possàvel acessar dados em um servidor Windows (lembra
o comando net, mas a sintaxe utilizada é similar aos de FTP). Ele pode
ser usado para receber e enviar arquivos, listar diretórios, navegar
pelos diretórios, renomear e apagar arquivos, entre outros. Diretórios
compartilhados por um servidor SAMBA são acessados da mesma forma.
Para verificar quais compartilhamentos estão disponàveis em um
determinado Host, execute:
$smbclient -L host_desejado
A resposta serí uma lista de serviços, ou seja, nomes de dispositivos
ou impressoras que podem ser compartilhados com os usuírios na rede. A
menos que o servidor SMB não tenha itens de segurança configurados, serí
solicitada uma senha antes de mostrar as informações. Exemplo:
$smbclient -L servidor1
A resposta serí semelhante a:
Server time is Fri Dec 22 15:58:02 2000
Timezone is UTC+10.0
Password:
Domain=[EMPRESA] OS=[Windows NT 4.0]
Server=[NT LAN Manager 4.0]
Server=[servidor1] User=[] Workgroup=[EMPRESA] Domain=[]
Sharename Type Comment
ADMIN$ Disk Remote Administration
Public Disk Public
C$ Disk Default Share
Print$ Disk Printer Control
Para acessar uma pasta compartilhada, basta especificar o caminho na
rede, conforme abaixo:
$smbclient //maquina/pasta1 senha O smbtar
Também é possàvel fazer backup (cópias de segurança) para o formato
.tar de arquivos que estão em compartilhamentos na rede. Esta operação é
muito útil para garantir backup de arquivos em estações com pastas
compartilhadas mas que não pertencem ao Domànio da rede (por exemplo) ou em
estações isoladas da rede. O comando utilizado é o smbtar:
$smbtar -s HOST -p SENHA -x COMPARTILHAMENTO -d PASTA -t FITA (.tar)
Como exemplo vamos criar um arquivo chamado vacina.tar que serí o
backup de //servidor1/vacinas/vacina.exe sem senha para acesso:
$smbtar -s servidor1 -x vacinas -d vacina.exe -t vacina.tar
Para conferir se o arquivo foi criado corretamente, digite:
$tar -tvf vacina.tar
Se o empacotamento teve sucesso, você verí o nome original do arquivo e
seu tamanho. Para que o backup seja guardado em fita deve-se mudar a
sintaxe do comando, substituindo o nome do arquivo pela unidade de fita
instalada (geralmente /dev/st0).
-> O smbpasswd
O SAMBA permite também que as estações troquem suas senhas de logon,
utilizando o smbpasswd. Ele age de forma similar ao comando passwd, mas
as senhas são armazenadas no arquivo smbpasswd. É possàvel ainda alterar
a senha dos usuírios em um servidor Primírio de um Domànio NT (PDC).
Utilizado pelo superusuírio, ele permite que contas sejam adicionados
ou removidos e atributos sejam alterados.
Mantenha o "localhost" especificado no parâmetro "allow hosts" para seu
perfeito funcionamento.
O smbpasswd é um arquivo em formato ASCII e contém o nome do usuírio,
identificação junto ao Linux, a senha encriptada, o indicador de como
estí a conta e a data de última alteração da senha do usuírio.
Vale destacar que o smbpasswd somente é útil quando o SAMBA estí
configurado para utilizar senhas criptografadas (veja detalhes em
Considerações).
-> O smbstatus
Para saber a situação atual das conexões SAMBA, utilizamos o smbstatus
($smbstatus -p - Lista os processos smbd e finaliza em seguida. Útil quando
utilizado em programas.
-S - Lista todos os compartilhamentos definnidos.
-s - Permite utilizar outro arquivo de conffiguração (smb.conf2 por
exemplo), que deve ser especificado após a opção.
-u - Lista as informações rellevantes sobre o usuírio, que deve ser
especificado após a opção.
-> O testprns
O testprns verifica o nome da impressora junto ao smbd, a fim de
determinar se hí um nome vílido (entrada encontrada em printcap para a
impressora) sendo informado para uso pelo serviço de impressão. Pode ser
ativado da seguinte forma:
#testprns ftp://ftp.samba.org/pub/samba/pwdump/pwdump.exe
Efetue logon como usuírio Administrator no servidor NT (que
disponibiliza a autenticação). Em seguida, abra um Command Prompt e ví até o
diretório que você colocou o pwdump. Rode o comando pwdump da seguinte
maneira:
#pwdump smbpasswd
Serí gerado um arquivo smbpasswd com as informações de autenticação
(logon e senha) do Windows NT no formato criptografado utilizado pelo
SAMBA. Agora copie o arquivo smbpasswd gerado para o servidor Linux
(através de diskete ou diretório compartilhado, por exemplo). No Linux, jogue
o arquivo smbpasswd criado para o diretório /etc e defina as permissões
para 600:
#chmod 600 /etc/smbpasswd
Para que funcione corretamente, é importante destacar que o ID dos
usuírios seja o mesmo tanto no smbpasswd quanto no passwd do Linux. Abra o
smbpasswd e exporte os dados de autenticação (nome do usuírio, ID, etc)
mas não é possàvel fazer o mesmo com as senhas. Se você quiser exportar
as senhas vai ter que quebrí-las com algum password cracker :) Na
verdade não é necessírio ter a senha no passwd, apenas o login, ID e home.
Para rodar o SAMBA e ele autenticar os usuírios, não é preciso ter a
senha no passwd do Unix, apenas o login, ID e home se você quiser
exportí-los. Vão ser utilizadas as senhas do smbpasswd.
Luciano Linhares Martins lmartins@matrix.com.br criou um script
baseado no mksmbpasswd para converter as senhas em formato smbpasswd para o
passwd. Funciona bem e pode ser modificado conforme a necessidade de
cada um. É um script bem simples e pode ser alterado de acordo com a sua
necessidade. Crie o arquivo mkpasswd.sh com o conteúdo abaixo:
#!/bin/sh
awk 'BEGIN {FS=":"
printf("#\n# Unix password file.\n#\n")
}
{ printf( "%s:*:%s:103:%s:/home/%s:/bin/bash\n", $1, $2, $5, $1) }
'
Dê um chmod 700 no arquivo e execute da seguinte maneira:
#cat /etc/smbpasswd | ./mkpasswd.sh passwd-smb
Se o seu arquivo smbpasswd e o script mkpasswd.sh estiverem em outro
local, configure de acordo com a sua necessidade. Após isso, é gerado um
arquivo chamado passwd-smb com os logins, id's, home, etc no formato do
passwd do seu sistema.
Normalmente, os ID's do smbpasswd vão começar a partir de 1000 e você
não vai ter problemas para junta-lo com o seu passwd do Unix sem nenhum
conflito. Eu recomendo que você confira antes de juntar as bases.
Procure por logins com o mesmo ID, mesmo username e username com espaços.
Se você utiliza shadow é importante desabilití-lo antes de juntar os
arquivos. Desabilite o shadow através do comando pwunconv. Em seguida
para passar o arquivo passwd-smb para o passwd do sistema entre no
diretório onde esta o arquivo passwd-smb que você gerou e digite:
#cat passwd-smb /etc/passwd
Se você utiliza o shadow, pode reativí-lo agora através do comando
pwconv. Reinicie o Linux para que as alterações entrem em vigor.
Exemplo de Login Script para estações Windows
---------------------------------------------
O login script (ou logon script) é uma ferramenta muito útil para
disponibilizar recursos na rede. O script abaixo é um exemplo que pode usado
em redes com estações Windows.
Lembre-se de que deve ser criado com o notepad (por exemplo) em uma
estação Windows para que funcione corretamente! (Confira a seção [global]
para saber mais sobre o logon script). Note que a sintaxe do comando
net é diferente para sistemas 95/98/Me e NT/2000.
rem Logon script padrão para a rede.
net time \\servidor1 /set /yes
@echo off
if %OS%.==Windows_NT. goto WinNT
:Win95
net use X: \\servidor1\pasta_01
net use Z: /HOME
goto end
:WinNT
net use X: \\servidor1\pasta_01 /persistent:no
net use Z: /HOME /persistent:no
:end
Configurando o SAMBA Remotamente
--------------------------------
Além de ser um software de uso livre e compatàvel com redes existentes,
o SAMBA ainda possui outra caracteràstica: permite ser administrado
remotamente. Para isso deve utilizar um programa especàfico que geralmente
trabalha via http. É possàvel monitorar através de sua rede interna ou
mesmo através da Internet.
Os principais programas são o SWAT, Webmin e o LinuxConf. Existem
outros mas não vou entrar em detalhes de como instalar estes programas ou
utilizí-los, mas abaixo estí o link para downloads, inclusive de
programas para administrar o SAMBA através da Interface Grífica do Linux:
http://us4.samba.org/samba/GUI
Considerações
-------------
Abaixo estão algumas considerações importantes sobre o SAMBA:
O SAMBA permite ainda muitas outras configurações que podem ser
consultadas através do man do smb.conf. Uma documentação importante estí em
/usr/doc/samba-2.2.x/ com dicas e referencias a segurança, navegação,
compatibilidades, etc.
Uma caracteràstica das versões mais recentes do SAMBA é a possibilidade
de um cliente NT/2000 usar sua interface nativa de configuração para
ver e modificar permissões no Linux. O parâmetro "nt acl support = yes"
deve ser adicionado na seção [global] do smb.conf.
A aplicação smbmount vem inclusa no pacote do SAMBA (samba-client) com
a função de possibilitar a montagem de um compartilhamento de outra
míquina localmente. É uma ótima ferramenta mas pode apresentar problemas,
onde os mais conhecidos são quando compartilhamos unidades de CD via
rede. O comando mount é mais seguro e pode fazer exatamente a mesma
tarefa, com a seguinte sintaxe:
mount -t smbfs -o username=usuario,password=senha //estacao/pasta /local
O diretório /local deve ser criado antecipadamente. Vale a pena
escrever uma linha no /etc/fstab para facilitar o processo.
Não é aconselhível reiniciar o SAMBA a cada modificação no smb.conf.
Com excessão a parâmetros como "path", "logon master", e outros que
definem acesso ou segurança, a criação de compartilhamentos e permissões de
acesso são automaticamente validadas pelo Samba. Muitos programas ficam
"salvando" arquivos constantemente enquanto estão abertos, e se neste
momento você reiniciar o SAMBA serí um risco de se perder o arquivo.
Por padrão o SAMBA não utiliza autenticação encriptada na rede, mas sim
"clear text". Versões mais atuais do Windows95/98/Me não utilizam o
modo "clear text". Para resolver este problema temos duas soluções:
Solução 1 - Inserir os parâmetros "encript passwords = yes" e "smb
passwd file = /etc/smbpasswd" na seção [global] do smb.conf e certificar-se
de que todas as estações na rede utilizam autenticação encriptada no
logon. Para fazer o Windows trabalhar com senhas criptografadas, use o
regedit e crie a seguinte chave:
Windows 95/98
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Servic es\VxD\VNETSUP
Adicione um novo valor DWORD: Value Name: EnablePlainTextPassword e
Data: 0x01
Windows NT 4.0
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Servic es\Rdr\Parameters
Adicione um novo valor DWORD: Value Name: EnablePlainTextPassword e
Data: 0x01
Windows 2000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\LanmanWorkStation
\Parameters
Adicione um novo valor DWORD: Value Name: EnablePlainTextPassword e
Data: 0x01
Uma vez que as alterações no registro tenham sido feitas, reinicie a
míquina Windows.
Para maiores detalhes, leia os arquivos ENCRYPTION.txt, Win95.txt e
WinNT.txt na documentação do Samba. Se seus clientes e seu servidor estão
usando senhas criptografadas, você não serí capaz de visualizar
compartilhamentos no servidor até que uma conexão inicial tenha sido feita com
a autenticação apropriada. Para conseguir a conexão inicial, entre o
nome do compartilhamento manualmente no Gerenciador de Arquivos ou na
caixa de diílogo do Explorer, na forma '\\'. Registre-se no servidor com
um nome de usuírio e senha que lhe são vílidos.
Se você suspeita que seu serviço de nomes NetBIOS não estí corretamente
configurado (talvez porque você tenha obtido erros 'host not found' ao
tentar se conectar), tente usar somente o endereço IP do servidor:
'\\192.168.0.1'. Para que o nome dos arquivos apareçam corretamente, você
pode precisar configurar algumas opções na seção do compartilhamento.
Adicione o seguinte parâmetro para clientes Windows 95/98/NT/2000, mas
pode apresentar problemas para clientes WfW3.11: "mangle case = yes".
Solução 2 - Não utilizar encriptação no logon, alterando uma chave no
registro do Windows. O SAMBA trís o arquivo .reg para cada versão do
Windows com a chave modificada. Execute o arquivo correspondente para
validar a mudança (eles estão em /usr/doc/samba-2.0.x/docs).
Se você não possui estes arquivos, abaixo estão as chaves que devem ser
modificadas nas estações Windows para não utilizar o "clear text":
Windows 95/98
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Servic es\VxD\VNETSUP]
"EnablePlainTextPassword"=dword:00000001
WindowsNT 4.0
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\Rdr\Parameters]
"EnablePlainTextPassword"=dword:00000001
Windows 2000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\LanmanWorkStation
\Parameters]
"EnablePlainTextPassword"=dword:00000001
É claro que se sua rede for "sniffada", os passwords que não estiverem
encriptados serão descobertos. Em alguns casos vale a pena tirar a
criptografia de login e monitorar a rede com um anti-sniffer. Mas lembre-se
que o Windows NT e o 2000 só conseguem se autenticar no servidor SAMBA
através de senha encriptada. Mais ainda: o Windows 2000 vem com algumas
dificuldades para entrar no Domànio de um PDC Samba versão 2.1.x.
Utilize a versão 2.2.2 ou superior do Samba para evitar problemas.
Se o SAMBA deve diferenciar maiúsculas e minúsculas quando procurando
por arquivos, adicione "case sensitive = yes". Para utilizar como padrão
letras maiúsculas ou minúsculas quando os arquivos são criados,
adicione "default case = lower (ou upper)". Para preservar maiúsculas e
minúsculas para todos os nomes de arquivo, adicione "preserve case = yes".
Para preservar maiúsculas e minúsculas para nomes DOS (8.3), adicione
"short preserve case = yes".
Se o servidor possui mais de uma placa de rede, o smb.conf deve conter
uma especificação para qual placa serí utilizada pelo Samba. Adicione o
seguinte parâmetro: "interfaces = 192.168.1.1/24", onde o número depois
da / é uma referencia à míscara de sub-rede. "24" é o valor a usar para
uma rede Classe C não segmentada. Para mais informações sobre cílculo
de sub-redes visite:
http://www.ziplink.net/~ralphb/IPSubnet/index.html
O SAMBA atualmente não pode ser utilizado como BDC (Backup Server) em
conjunto com um PDC Windows NT ou 2000. Tanto as versões 2.0.x quanto as
2.2.x ainda ñ estão prontas para tal tarefa (pelo menos por enquanto).
O Samba de modo geral não permite "trust relationship" entre servidores
Windows (NT e 2000). Quem sabe após ler estas linhas este recurso jí
tenha sido disponàvel? :)
Todos os parâmetros de configuração apresentados neste manual são
vílidos para as versões 2.0.x e 2.2.x do Samba. Caso alguém encontre alguma
incompatibilidade, peço que entre em contato ok!
Lembre-se que a documentação do SAMBA (do protocolo SMB em geral) é
extensa. Consulte os docs criados após a sua instalação. Você pode também
obter referencias em documentações do LDP (Linux Documentation
Project), que no Brasil estí em: .
Agradecimentos e créditos
-------------------------
(Em versões anteriores deste manual eu não citei alguns nomes,
puramente por esquecimento... Peço muitas desculpas pois ainda circulam na
Internet. Os devidos créditos estão abaixo e se esqueci de alguém, por
favor email-me!!)
Espero com este artigo ter ajudado todos aqueles que pretendem montar
um servidor de arquivos Linux e difundir o Linux e sua documentação ao
maior número possàvel de empresas, administradores e usuírios.
Deixo meus sinceros agradecimentos a todos que colaboraram com este
manual direta ou indiretamente, principalmente aos seguintes sites (em
ordem de publicação):
Linux Unleashed
LinuxPlace
Linux in Brazil
LDP Brasil
Olinux
Dicas Linux
... e todos os outros que também publicaram este manual e que se
esforçam para divulgar o Linux no Brasil. Documentações foram consultadas
para agregar ainda mais informação a este manual, e foram elas:
smb-howto do LDP
samba-howto da Conectiva
o man do samba (smb.conf e comandos)
publicações disponàveis no site oficial do Samba
Este manual pode ser encontrado em: http://br.geocities.com/vffzbr
Agradeço também a todos os usuírios, administradores e leitores que
enviaram emails a respeito do manual, elogiando e criticando, buscando
respostas para as dúvidas e citando dicas a serem adicionadas a este.
Parabéns ao "Samba Team" pelo excelente trabalho!
Grande Abraço a todos! :P