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 permissoes 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ívies em:
http://us4.samba.org/samba/download.html
- 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.
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 DEB, RPM ou .tar
(.tgz ou .tar.gz). Se sua distribuição for Debian,
utilize
apt-get install samba smbclient smbfs
. Se o pacote for um RPM (RedHat e derivados), execute o
comando
rpm -ivh samba-2.0.x- 1 .rpm
, substituindo 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.0.x- 1 .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
make
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.0.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. 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.
-
smbpasswd -
Alterar senhas (encriptadas) de usuários smb.
-
smbprint -
Cliente para envio de impresão a sistemas Linux.
-
smbstatus -
Apresenta a situação atual das conexoes SMB no
Host.
-
testparm -
Verifica o arquivo smb.conf (configuração do
SAMBA).
-
testprns -
Verifica a comunicação via rede com as
impressoras.
Configuração
(continuação)
O smb.conf é dividido basicamente em três
partes: a configuração do servidor SAMBA
(parâmetros na seção [global]), 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 = csh -c 'xedit %s;rm %s' &
log file = /var/log/samba_log.%u
null passwords = no
1 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á validar a 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 adinate isso será explicado de forma
detalhada).
os level
Este parâmetro não é obrigatório se voce
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 ingles). 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 commando 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 exmplo 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).
1 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.
Conhecendo os parâmetros
(continuação)
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 ecrever em
sua pasta pessoal (home dir).
Demais Seções
Correspondem a compartilhamentos presentes na rede. Os
parâmtros abaixo são apenas alguns dos
possíveis:
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.
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, WinNT e Win95.
%I - O endereço IP da máquina cliente.
%T - Data e horário.
Conclusão
Noi próximo artigo, teremos a parte mais
prática, ensinando como colocar o SAMBA em funcionamento
e como testá-lo. Até lá!
Colaboraram:
Luciano Linhares Martins (
lmartins@matrix.com.br
)
Marcelo Subtil Marçal (
jason@unleashed.com.br
)
Augusto César Campos (
brain@matrix.com.br
)