Samba Passo a passo
O caminho para substituir servidores de rede por Linux
Sandro Henrique
Um dos softwares mais interessantes do mundo
Linux é o Samba, pacote desenvolvido por Andrew Tridgell. Ele é
composto por ferramentas que utilizam os protocolos de rede Netbios
e SMB (Server Message Block), este nativo do Windows 95/98/NT, e que
permitem que uma máquina Linux atue como servidor ou estação de
trabalho em redes mistas.
Ele vem substituindo vários servidores Windows,
OS2, Netware e Unix, pois, além de ser muito estável e poderoso, exige
pouco em termos de hardware. Há também a vantagem de ser licenciado
pela GPL, de livre distribuição, sem limite de usuários ou custos por
licença. Tecnicamente também há ganhos em performance e segurança de
dados.
O Samba é um trunfo indiscutível para o administrador
de redes, pois permite introduzir clientes Linux, tornando a rede heterogênea,
para depois substituir o servidor, até por fim atingir a completa conversão
de toda a rede. Este tem sido o histórico de muitas empresas que abandonam
seus sistemas antigos sem traumas e que se tornam entusiastas do Linux.
Contam muito na avaliação dos especialistas a estabilidade,
uma farta disponibilidade de softwares, a robustez e superior performance da
solução, além, é claro, da radical economia de recursos humanos, técnicos e
financeiros. Ter o Linux como servidor de estações Windows é uma experiência
bastante tranqüila, compartilhando arquivos e impressão nas estações, além de
Intranet e correio eletrônico simultaneamente.
Um servidor SMB compartilha diretórios, subdiretórios e
dispositivos atribuindo para estes recursos um "nome de compartilhamento",
previamente definido para toda a rede e que pode ser protegido com o uso de
senhas. O nome deste recurso compartilhado pode ser criado a qualquer momento,
para sistemas de arquivos e impressoras, e será acessível para as estações
através do seu nome público. A proteção através de senhas pode se dar por nome
de usuário ou de recursos, no qual um dos dois possuirá uma validação de senha
para acesso. A diferença entre os dois métodos é definida no próprio servidor,
não podendo coexistirem para um mesmo recurso compartilhado através da rede.
Exceto para o DOS e Windows 3.1, todos os outros sistemas para PCs suportam o
protocolo SMB para exportar e importar arquivos.
Para configurar o Samba em máquina Linux atuando como servidor
ou cliente para uma rede Windows, deve-se antes verificar se o Samba já está
instalado, e isto pode ser feito digitando na linha de comando:
Se estiver, haverá uma resposta com o nome do pacote e sua
versão. Caso contrário você pode instalá-lo a partir do CD que acompanha a
Revista do Linux, com estes três passos:
# mount /dev/cdrom
# cd /mnt/cdrom/conectiva/RPMS/
# rpm -ivh samba-2.0.4b-10cl.i386.rpm
|
O servidor Linux poderá atribuir perfis diferenciados
(roaming profiles) a determinados usuários SMB, criar hierarquias de acesso
restrito, adotar áreas de trabalho personalizadas ou padrão segundo o acesso.
Isso de maneira invisível para seus clientes, e com eficiência, como têm
comprovado os testes de várias revistas especializadas.
Normalmente encontraremos os aplicativos do Samba em "/usr/bin"
e, em geral, são inicializados automaticamente com o boot do Linux.
Para inicializar os servidores automaticamente com o boot,
acione o programa "ntsysv" e torne a opção smb ativa.
Para configurar o servidor é preciso editar o arquivo de
configuração do Samba, que estará em /etc/smb.conf. O exemplo a seguir é bastante
simples, mas servirá para atender à configuração básica da maioria das instalações.
; /etc/smb.conf
;
[global]
# Nome do grupo do ambiente Windows
workgroup = LINUX
log file = /var/log/samba-log.%m
lock directory = /var/lock/samba
share modes = yes
# Samba necessita de um usuário com
# permissões limitadas
guest account = visitante
# Máquinas Windows tendem a travar de
# tempos em tempos. Este parâmetro é
# utilizado para verificar o estado da
# conexão.
keep alive = 20
# Serviços de navegação via recursos
# compartilhados
0s level = 2
# Vide seção permissões
security = user
# Sistema de impressão
printing = bsd
# Para carga automática das impressoras
printcap name = /etc/printcap
load printers = yes
[homes]
comment = Diretórios Pessoais
# Evita que os diretórios pessoais sejam
# vistos por outros usuários
browsable = no
# Samba proíbe, por padrão, a gravação
# em recursos exportados.
# O parâmetro a seguir permite que
# os usuários possam gravar em
# seus diretórios pessoais.
read only = no
# Permissões utilizadas na criação de
# um novo programa
create mode = 750
[printers]
# Comentários
comment = Impressoras Linux
browseable = no
printable = yes
public = no
read only = yes
create mode = 0700
directory = /var/spool/samba
[tmp]
comment = Arquivos Temporários
path = /tmp
read only = no
public = yes
|
O arquivo smb. conf é constituído por seções e parâmetros.
Seções são iniciadas por nome entre colchetes, como por exemplo [global],
[homes], [printers], [temp], etc. Parâmetros estão inseridos
em seções e são definidos no formato "nome=valor".
Cada seção do arquivo de configuração descreve um compartilhamento
específico, exceto a seção [global], aplicada a todos os compartilhamentos
do servidor. O nome da seção é igual ao nome do recurso compartilhado. Há três
seções com nomes especiais: [global], [homes] e [printers].
As permissões de acesso ao servidor são definidas de acordo com padrões Unix.
Na seção [global] estabelecemos os parâmetros que se
aplicam ao servidor como um todo ou como padrões para que todas as seções não
necessitem especificá-los novamente.
Na seção [homes], define-se que os serviços de conexão
de clientes com os seus diretórios pessoais serão disponibilizados automaticamente.
Na seção [printers] permite-se que os clientes (Linux,
Windows, DOS) utilizem uma impressora conectada à máquina local, configurada através
do utilitário printcap.
Uma típica seção de impressora terá o seguinte aspecto:
[printers]
path = /usr/spool/public
writeable = no
guest ok = yes
printable = yes
|
Parâmetros: definem os atributos das seções em que se
encontram, sendo alguns deles específicos e usados somente em determinadas
seções.
Variáveis: valores definidos para um parâmetro podem ser
substituídos por valor definitivo no momento do acesso ao recurso compartilhado.
Por exemplo a opção "path = /tmp/%u" pode ser
interpretada como "path = /tmp/josie" caso se tenha acessado o sistema
com o nome de usuário igual a josie. Entre diversas variáveis, as mais
significativas são:
%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. |
%m | Nome da máquina cliente fornecido pelo NetBIOS. |
%L | Nome do servidor NetBIOS, permite que a configuração seja alterada com base no cliente que está acessando o sistema. |
%M | Nome Internet da máquina cliente. |
%a | Sistema operacional da máquina remota, reconhecidos os valores: WfW, WinNT e Win95. |
%I | O endereço IP da máquina cliente. |
%T | Data e horário. |
Apresentamos a seguir os principais parâmetros utilizados
no arquivo smb.conf. A lista completa pode ser obtida através do comando
Os parâmetros seguidos de (S) podem ser utilizados em
qualquer seção que defina um compartilhamento. Os seguidos por (G) podem
ser utilizados somente na seção [global].
admin users (S)
Permite definir os usuários que terão privilégios de administração do
compartilhamento, ou seja, terão poderes de superusuário. Exemplo:
admin users = josue, buda, moises
|
announce as (G)
Especifica o tipo de servidor nmbd (Servidor de Nomes NetBIOS) que será
divulgado na rede. O padrão é igual a Windows NT. As opções válidas são
"NT", "NT Server", "NT Workstation", "Win95" ou "WfW" . Exemplo:
browseable (S)
Controla se o compartilhamento será visualizado na lista de recursos disponíveis. O padrão é
comment (S)
Contém o texto que será visualizado pelo usuário quando solicita uma lista
de recursos disponíveis na rede. Exemplo:
comment = Diretório Pessoal no Servidor Linux
|
copy (S)
Permite que a seção atual seja uma cópia de qualquer seção anterior. Caso haja
necessidade de alterar um parâmetro, basta informá-lo na seção atual. Útil para
criar modelos que podem ser replicados e rapidamente alterados para todos os
recursos compartilhados. Exemplo:
create mode (S)
Define as permissões que serão utilizadas na criação de arquivos no recurso compartilhado. Exemplo:
guest account (S)
Define o nome do usuário usado para acessar os compartilhamentos definidos
com o parâmetro guest ok'. Normalmente este usuário estará definido no Linux,
porém não terá uma forma válida de acesso ao sistema. Usualmente a conta "ftp"
é uma boa escolha. Exemplo:
guest ok (S)
Caso este parâmetro seja definido como yes' para um serviço, nenhuma senha
será solicitada ao usuário. Os privilégios serão iguais aos determinados para a
conta "guess account" definida no parâmetro anterior. Exemplo:
hosts allow (S)
Define o conjunto de máquinas que podem acessar um determinado compartilhamento.
Pode-se utilizar o nome ou o endereço IP da máquina. É possível, por exemplo,
restringir o acesso a somente uma sub-rede de classe C, como em "allow hosts = 150.203.5.".
Pode-se ainda usar o subparâmetro "EXCEPT" para excluir(em)-se alguma(s) máquina(s), como por exemplo:
hosts allow = 150.203. EXCEPT 150.203.6.66
allow hosts = 150.203.5. máquina.domínio.com.br
|
hosts deny (S)
O oposto do parâmetro anterior, já que aqui podem ser listadas todas as máquinas
que não devem ter acesso aos serviços. Exemplo:
hosts deny = 150.203.5. minha_máquina.domínio.com.br
|
load printers (G)
Determina que as impressoras definidas no printcap serão disponibilizadas na lista padrão
de recursos. Exemplo:
max connections (S)
Permite configurar o número máximo de conexões simultâneas a um determinado serviço. Exemplo:
max disk size (G)
Permite definir um limite aparente da área em disco que pode ser utilizada pelo
compartilhamento. A unidade-padrão é igual a Mb (megabytes). Exemplo:
path (S)
Especifica o diretório ao qual o usuário do serviço terá acesso. No caso de impressoras,
será o diretório de arquivos temporários de impressão. Exemplo:
printer (S)
Define o nome da impressora para a qual os serviços de impressão serão enviados. Exemplo:
printer name = laserwriter
|
security (G)
Define a autenticação de um cliente junto ao servidor Samba. São possíveis as seguintes opções:
"security=share": senhas de acesso são solicitadas
por recurso compartilhado e não por usuário, ou seja, cada diretório ou
impressora poderá ter uma senha única conhecida por todos os usuários autorizados.
"security=user": para acesso a determinado recurso, o
usuário deverá apresentar uma identificação individual e uma senha válida.
"security=server": neste caso o Samba tentará validar
o usuário e a senha enviando os dados para um servidor SMB, como por exemplo um
servidor Windows NT.
"security=domain": caso a máquina local tenha sido
adicionada a um Domínio Windows NT através do comando smbpasswd, será possível
utilizar esta opção. As informações de usuário e senha serão enviadas para um
servidor Windows NT Primário da mesma forma que uma máquina NT o faria. É necessário
que a conta exista tanto no Linux quanto no servidor primário. O padrão assumido
pelo Samba é "security = USER". Exemplo:
workgroup (G)
Define em qual grupo de trabalho o servidor estará presente, quando pesquisado
pelos clientes. Este parâmetro também define o nome do domínio usado em "security=domain".
Exemplo:
writeable (S)
Caso este parâmetro seja definido como "no", não será permitida a criação
ou modificação de arquivos no diretório compartilhado. O parâmetro "printable
= yes" sempre permitirá a gravação através de operações de geração de arquivos
temporários de impressão. Exemplos:
read only = no
writeable = yes
write ok = yes
|
Todos produzirão o mesmo efeito! Clientes são as máquinas
que necessitam acessar os recursos disponíveis no servidor Samba instalado no
Linux, as quais podem conter diversos sistemas operacionais, tais como DOS,
Windows 3.X, Windows 9X, Windows NT,... DOS e Windows 3.1. O programa necessário
para que máquinas DOS atuem como um cliente Samba pode ser obtido em
ftp://ftp.microsoft.com/bussys/Clients/MSCLIENT, e é composto por dois disquetes.
Windows For Workgroups
Esta versão já traz o suporte a SMB, porém o protocolo
TCP/IP deverá ser instalado. Ele pode ser obtido em ftp://ftp.microsoft.com/bussys/clients/WFW/TCP32B.EXE. É um
arquivo com um formato de extração automática.
Windows 9X
Estas versões já trazem o suporte a TCP/IP. Para configurá-lo
deve-se utilizar o Painel de Controle.
Ferramentas de Configuração do Samba
Cabe ressaltar que praticamente toda a atividade de
configuração pode ser executada a partir da interface gráfica, sem a necessidade
de edição direta de arquivos. Na verdade existe mais de meia dezena de opções
possíveis para esta atividade.
As opções mais utilizadas:
SWAT - Ferramenta Web de Administração do Samba
Permite a administração do Samba a partir de um navegador Internet. Para ver
como este utilitário pode funcionar, o leitor pode acessar http://anu.samba.org/cgi-bin/swat/. Ele é disponibilizado em conjunto com o
Samba. Após instalá-lo através do rpm, kpackage ou gnorpm, observe os seguintes
passos:
Edite o arquivo /etc/services, adicionando-se a seguinte linha:
A escolha do número da porta não é importante, porém não deve
ser menor que 1.024 e não pode estar em uso no momento.
Edite o arquivo /etc/inetd.conf e adicione a seguinte linha:
swat stream tcp nowait.400 root
/usr/local/samba/bin/swat swat
|
a seguir pare e reinicie o inetd para que as mudanças tenham efeito.
Para acessar o swat, acione o navegador de sua preferência e digite na linha da URL
LinuxConf - Ferramenta de Configuração Linux
Para ter acesso à configuração do Samba via Linuxconf, acione o programa e
selecione Ambiente de Rede -> Tarefas de Servidor -> Samba. Os parâmetros a serem
informados têm o mesmo formato do descrito na seção de configuração do arquivo
smb.conf.
O Linuxconf pode ser obtido no seguinte endereço:
ftp://ftp.conectiva.com.br/pub/conectiva/4.0/i386/conectiva/RPMS/
Linux como cliente em rede Windows
Assim como nas funções de servidor, o Samba disponibiliza outros
softwares que permitem a sua utilização do Linux como cliente.
Um destes softwares é o smbclient, que disponibiliza uma
interface similar ao FTP em linha de comando. Ele pode ser utsado para receber e
enviar arquivos para máquina Windows, listar diretórios, navegar, renomear e apagar
arquivos e serviços similares ao FTP em máquina Windows.
Para verificar quais compartilhamentos estão disponíveis pode-se executar o comando:
$ /usr/sbin/smbclient -L servidor
|
onde "servidor" é o nome da máquina que se deseja visualizar.
Isso retornará uma lista de nomes de serviços, ou seja, nomes de dispositivos ou
impressoras que podem ser compartilhadas com o usuário que executou o comando.
A menos que o servidor SMB não tenha itens de segurança configurados, será solicitada
uma senha antes do fornecimento das informações.
Exemplo:
A saída deste comando deve ser similar a:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 2.05a]
Sharename Type Comment
wd disk Temporary file space
IPC$ IPC IPC Service (Samba Server)
Ip Printer
Ip0 Printer
Ip1 Printer
Ip2 Printer
Server Comment
Workgroup Master
CONECTIVA PERNINHA
MYGROUP ANIMANIACS
|
Esta máquina tem uma lista similar a:
Server Comment
LINUX4 Samba 1.9.15p8
LINUX3 Samba 1.9.15p8
LINUX9 Samba 1.9.15p8
LINUX7 Samba 1.9.15p8
WINDOWS01
|
A lista acima mostra ainda outros servidores SMB com recursos compartilhados na rede local.
Para execução do programa deve-se informar o seguinte, na linha de comando:
$ smbclient serviço <senha>
|
onde "serviço" é uma máquina e o nome de compartilhamento.
Por exemplo, para acessar o diretório compartilhado como "público" em máquina
denominada "porto", os serviços devem ser referenciados como \\porto\publico.
De qualquer forma, por restrições do ambiente de trabalho, serão necessárias
contrabarras, o que criará um comando similar a:
$ smbclient \\\\porto\\publico <senha>
|
onde "senha" é literalmente a cadeia de caracteres que contém a senha do usuário.
A seguir obter-se-á o indicador de linha de comando do smbclient:
Server time is Sat Aug 10 15:58:44 1999
Timezone is UTC+10.0
Domain=[LINUX] OS=[Windows NT 4.0]
Server=[NT LAN Manager 4.0]
smb: \>
|
Digite "h" para obter ajuda ao usar o smbclient:
smb: \> h
ls dir lcd cd pwd
get mget put mput rename
more mask del rm mkdir
md rmdir rd prompt recurse
translate lowercase print printmode queue
cancel stat quit q exit
newer archive tar blocksize tarmode
setmode help ? !
|
Uma aplicação interessante do smbclient é a produção de
cópias de segurança em um formato-padrão e comum a todas as plataformas.
Todos os arquivos da máquina SMB/CIFS serão guardados no formato tar. Por
exemplo, para criar um arquivo chamado copia.tar contendo todos os arquivos
sob o diretório usuarios/docs do serviço windows01/usuarios, pode-se executar
o seguinte comando:
$ smbclient //windows01/usuarios "" -N
-Tc copia.tar usuarios/docs
|
Acesso a impressoras
A partir de máquina Linux é possível enviar tarefa para
impressão em máquina Windows, observando-se os seguintes passos:
Adicionar as entradas adequadas em /etc/printcap, as quais
devem corresponder à estrutura de diretórios local (para o diretório de tarefas
temporárias, etc.). Para tanto pode ser utilizado o programa printtool. Deve-se
ter à disposição o programa smbprint. Ele é disponibilizado com o pacote Samba.
Acesso a Terminal Windows no
Linux
É possível abrir um terminal gráfico no Linux referente a um
servidor Windows e executar qualquer aplicativo no servidor, sendo todas as saídas
enviadas automaticamente para o cliente Linux, como por exemplo para um navegador Internet.
Isso é possível por meio de um software de livre distribuição
denominado VNC ou Rede Virtual de Computação. Este resume-se a um sistema de reenvio
de telas, permitindo que o ambiente de trabalho seja direcionado para qualquer estação
da rede. Ele permite ainda que uma máquina ou tela seja acessada por diversas máquinas
simultaneamente. Este programa pode ser obtido via Internet em www.uk.research.att.com/vnc/.
Ele pode ser usado também sob o Windows para executar um terminal acessando o Linux,
por exemplo.
Trata-se de um software de livre distribuição e para sua utilização
devem ser observados os preceitos da Licença Pública GNU.
Conclusão
Com um pequeno esforço, o Linux pode ser um item importante em redes
locais. Graças à sua maleabilidade, pode desempenhar os mais diversos papéis, segundo
as necessidades do usuário.
Considerando-se ainda os inúmeros pacotes adicionais, que vão do
StarOffice até Firewall, ele pode se adequar às mais diversas demandas, mantendo as
suas características básicas: robustez, performance e baixo custo.
Emulações
Terminais Windows sob Linux
http://www.uk.research.att.com/vnc/
DOS sob Linux
http://www.dosemu.org/
ftp://ftp.conectiva.com.br/pub/conectiva/4.0/i386/conectiva/RPMS/dosemu-0.99.10-4cl.i386.rpm
ftp://ftp.conectiva.com.br/pub/conectiva/4.0/i386/conectiva/RPMS/dosemu-freedos-0.99.10-4cl.i386.rpm
Windows Para Linux
Wine
http://www.winehq.com/
http://www.cse.psu.edu/~juran/wine/wine-990731-1.i386.rpm
VMWare (produto comercial)
http://www.vmware.com/products/forlinux.html