Revista Do Linux  
EDIÇÃO DO MÊS
  Atualidades
  Banco de Dados
  CAPA
  Gestão
  Grupos de Usuários
  Gráficos
  Jogos
  Mercado
  Mundo Corporativo
  Opinião
  Plugue-se
  Ponto de Vista
  Primeiros Passos
  Rede

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:

rpm -q samba

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:

%SNome do serviço (compartilhamento) atual.
%uNome do usuário.
%gNome do grupo.
%HNome do diretório pessoal do usuário.
%mNome da máquina cliente fornecido pelo NetBIOS.
%LNome do servidor NetBIOS, permite que a configuração seja alterada com base no cliente que está acessando o sistema.
%MNome Internet da máquina cliente.
%aSistema operacional da máquina remota, reconhecidos os valores: WfW, WinNT e Win95.
%IO endereço IP da máquina cliente.
%TData 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

$ man smb.conf

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:

announce as = NT Server

browseable (S)
Controla se o compartilhamento será visualizado na lista de recursos disponíveis. O padrão é

browseable = Yes

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:

copy = home

create mode (S)
Define as permissões que serão utilizadas na criação de arquivos no recurso compartilhado. Exemplo:

create mode = 0775

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 account = ftp

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:

guest ok = yes

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:

load printers = yes

max connections (S)
Permite configurar o número máximo de conexões simultâneas a um determinado serviço. Exemplo:

max connections = 10

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:

max disk size = 250

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:

path = /home/josie

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:

security = DOMAIN

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:

workgroup = Linux0

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:
swat 901/tcp

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

http://localhost:901/.

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:

$ smbclient -L windows01

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

 

A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade