Conectiva® Linux® em Redes Windows® Por Sandro Henrique Na atualidade, redes locais tornaram-se um padrão e uma necessidade em grande parte, senão na maioria, das organizações. Em inúmeros casos, estas redes são compostas por clientes Windows que utilizam um servidor Windows NT, Netware, Un*x,... como repositório de dados, controlador de acesso às informações e gerenciador de tarefas de impressão. Com a popularização do Linux, em especial no mercado latino americano, muitas redes passaram a utilizar o Linux como cliente ou estação de trabalho em redes mistas com servidores ou clientes Windows. O quadro pode ser extremamente heterogêneo, onde as funcionalidades e facilidades de cada plataforma podem ser exploradas pelo usuário de forma produtiva e adequada às suas necessidades. Aspectos como robustez, performance, estabilidade, baixo custo e farta disponibilidade de softwares inerentes ao Linux podem ser aproveitadas na sua plenitude, sem que isso signifique uma mudança radical de plataforma num primeiro momento. Apresentamos a seguir alguns roteiros e pontos para análise pelo administrador da rede sobre como utilizar o Linux como servidor ou cliente em redes heterogêneas com máquinas Windows, servindo inclusive a antigas sistemas DOS ou Windows for Workgroups®. Linux - Servidor de Estações Windows® O Conectiva Linux pode assumir, dentre outras, as funções de um servidor de arquivos e de impressão em uma rede heterogênea de maneira bastante tranquila. Isso sem mencionarmos outras funções adicionais que podem funcionar de forma simultânea, como servidor Intranet, Correio Eletrônico, etc... Uma das possibilidades é a utilização do Samba, um software desenvolvido por Andrew Tridgell, o qual converte uma máquina Linux em uma poderoso servidor de impressão e arquivos para computadores que utilizem DOS e Windows©. Desde o início de 1991, este produto já demonstrou ser uma ferramenta estável e confiável, tornando-se inclusive um substituto em muitos casos para servidores Windows NT e Netware. Para que isso seja possível, os clientes ou estações de rede devem possuir os softwares adequados para poderem interligar-se à rede local, ou seja devem atuar como Clientes SMB. Exceto para sistemas DOS e Windows 3.1, todos os demais sistemas operacionais para PCs suportam o protocolo SMB para importar ou exportar arquivos. Já os servidores SMB disponibilizam espaço em disco aos seus clientes através da função denominada compartilhamento, constituído por um diretório e seus respectivos subdiretórios disponibilizados aos clientes da rede através de um nome previamente definido. Um diretório compartilhado pode ser criado a qualquer tempo e com qualquer nome, assim como uma impressora pode ser disponibilizada na rede através do mesmo método. Os clientes podem acessar estes recursos (diretórios e impressoras) através do nome do compartilhamento. O protocolo SMB foi originado na plataforma DOS e se dispõem a cobrir os aspectos de segurança de forma direta. Todo o recurso compartilhado pode estar protegido por uma senha, a qual pode ser implementada de duas formas distintas: Senha Por Compartilhamento - cada item compartilhado: disco, diretório, impressora, etc. tem uma senha própria; Senha Por Usuário - neste caso todo o usuário deve identificar-se no servidor através de um nome e de uma senha. Após uma validação positiva, o servidor fornecerá os acessos de acordo com as permissões pré definidas para o usuário. 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. Instalando o Servidor No Conectiva Linux está disponível o pacote Samba, constituído pelos servidores SMB e NetBIOS e por diversos aplicativos complementares. Eles normalmente são instalados no diretório /usr/sbin e os servidores são executados toda vez que o Linux é inicializado ou a partir do servidor de serviços de rede inetd. Alguns dos programas presentes no pacote Samba: Nome do Programa Servidor/Cliente Descrição smbd Servidor O Servidor Samba nmbd Servidor Servidor de nomes NetBIOS smbclient Cliente Cliente SMB para máquinas Unix sbmbprint Cliente Cliente para envio de tarefas de impressão para uma máquina SMB smbstatus Cliente Lista a situação das conexões SMB da máquina local. O Samba é muito simples de ser instalado. Para tanto deve-se executar os seguintes comandos no Conectiva Linux: $ mount /dev/cdrom $ cd /mnt/cdrom/conectiva/RPMS/ $ rpm -ivh samba-2.0.4b-10cl.i386.rpm Existem ainda alternativas como o kpackage e o gnorpm que possibilitam a instalação de pacotes através da interface gráfica do Linux. Após a instalação, passamos para o estágio de configuração do software conforme as necessidades de cada ambiente. Para tanto deve-se editar o arquivo de configuração /etc/smb.conf, ou utilizar uma das diversas ferramentas gráficas que podem auxiliar neste processo. Executando os Servidores Os dois servidores SMB são denominados /usr/sbin/smbd e /usr/sbin/nmbd. Para que a rede possa funcionar, estes servidores devem estar permanentemente ativos. Caso algum deles seja finalizado por qualquer motivo há uma forma de fazer com que ele seja reinicializado imediatamente.Para tanto eles devem ser executados a partir do servidor de rede inetd . Neste caso insira as seguintes linhas no arquivo /etc/inetd.conf: # Serviços NetBIOS e SAMBA (para compartilhamento de arquivos e impressoras) netbios-ssn stream tcp nowait root /usr/sbin/smbd smbd netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd Para inicializar os servidores automaticamente quando todo o sistema for iniciado, acione o programa ntsysv e torne a opção smb ativa. Após alterar algum parâmetro de configuração esteja seguro de reinicializar o servidor para que os parâmetros sejam ativados. Este procedimento é realizado dos seguintes comandos: $ /etc/rc.d/init.d/smb stop $; /etc/rc.d/init.d/smb start Configurando Um Servidor A configuração do Samba no Conectiva Linux (e em outras máquinas Un*x) é controlada por um único arquivo denominado /etc/smb.conf. Neste arquivo são determinados quais recursos do sistema se deseja compartilhar com o mundo exterior e quais as restrições que serão aplicadas aos usuários externos. O arquivo smb.conf apresentado a seguir é bastante simples e serve apenas para propósitos introdutórios, apesar de poder atender à configuração básica da maioria das instalações. O Arquivo smb.conf O arquivo smb. conf é constituído por seções e parâmetros. Seções são iniciadas por um nome encerrado 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] que é 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 os padrões Unix. Para aqueles não familiarizados com esta nomenclatura, sugerimos a leitura do documento http://www.conectiva.com.br/documentacao/manual/usuario/node452.html. Seções Seção [global] Os parâmetros nesta seção aplicam-se ao servidor como um todo ou como padrões para que todas as seções não necessitem especificá-los novamente. Seção [homes] Caso uma seção com esta denominação seja incluída no arquivo de configuração, os serviços de conexão de clientes com os seus diretórios pessoais serão disponibilizados automaticamente. No Conectiva Linux eles serão iguais a /home/nome_do_usuário. É sugerido o uso do parâmetro "browsable = no" nesta seção, evitando assim que um usuário comum possa visualizar os diretórios pessoais alheios. Seção [printers] Seção dedicada a impressoras, permitindo que os clientes (Linux, Windows, DOS, ...) possam utilizar uma impressora conectada à máquina local, configurada através do utilitário printcap (5). Uma típica seção de impressora terá o seguinte aspecto: Parâmetros Parâmetros definem os atributos das seções em que se encontram, sendo que alguns deles são específicos e podem ser usados somente em determinadas seções. Varíaveis Muitos valores definidos para um parâmetro podem ser substituídos por um valor definitivo somente 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. Dentre diversas variáveis disponíveis, apresentamos a seguir as mais significativas: Variável Descrição %S Nome do serviço (compartihamento) 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. São reconhecidos os seguintes valores: WfW, WinNT e Win95. %I O endereço IP da máquina cliente. %T Data e horário. Principais Parâmetros do smb.conf Apresentamos a seguir os principais parâmetros utilizados no arquivo smb.conf. A lista completa pode ser obtida através do seguinte comando no Conectiva Linux: $ man smb.conf Na lista a seguir os parâmetros seguidos de (S) podem ser utilizados em qualquer seção que defina um compartilhamento, ao passo que aqueles seguidas 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 é feito uma solicitação da lista de recursos disponíveis na rede. Exemplo comment = Diretório Pessoal no Servidor Linux copy (S) Este parâmetro 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. Esta funcionalidade é muito útil para a criação de modelos que podem ser replicados e rapidamente alterados para todos os recursos compartilhados. 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 que será 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, então nenhuma senha será solicitada ao usuário. Os privilégios serão iguais aos definidos para a conta "guess account" definida no parâmetro anterior. Exemplo: guest ok = yes hosts allow (S) Este parâmetro 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 sub parâmetro "EXCEPT" para excluir-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) Exatamente 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) Variável que define se todas 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 compartihamento. A unida 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) Este parâmetro define o nome da impressora para a qual os serviços de impressão serão enviados. Exemplo: printer name = laserwriter security (G) Esta opção define a forma de 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 , então será possível utilizar esta opção. Neste caso as informações de usuário e senha serão enviadas para um servidor Windows NT Primário exatamente da mesma forma que uma máquina NT o faria. Note que é 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 = Linux 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. Note-se que 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! Configurando os Clientes Clientes são as máquinas que necessitam acessar os recursos disponíveis no servidor Samba instalado no Conectiva 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 possam atuar como um cliente Samba podem ser obtidos em ftp://ftp.microsoft.com/bussys/Clients/MSCLIENT, o qual é 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 Agora que tivemos um bom contato com os conceitos de configuração de um servidor Samba, cabe ressaltar que praticamente toda esta atividade 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. A seguir apresentaremos as opções mais utilizadas: SWAT - Ferramenta Web de Administração do Samba Uma interessante forma de configurar o Samba é a utilização do programa SWAT- Ferramenta Web de Administração do Samba, o qual permite a administração do Samba a partir de um navegador Internet. Para uma demonstração de como este utilitário pode funcionar, o leitor pode acessar http://anu.samba.org/cgi-bin/swat/. Tela SWAT de Configuração dos Parâmetros Globais Ele é disponibilizado em conjunto com o Samba. Após instalá-lo através do uso do programa 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 é realmente importante, porém deve obedecer a dois aspectos: 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 Pode-se utilizar ainda o programa Linuxconf, o configurador padrão de uma série de serviços do Conectiva Linux, dentre eles o Samba. 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 tem 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/linuxconf-1.16r1-5cl.i386.rpm Tela Inicial de Configuração do Samba no Linuxconf Especificação dos Parâmetros Globais Criação de Um Recurso Compartilhado Configurando As Permissões de Acesso Linux - Cliente em Uma Rede Windows® Da mesma forma que o Conectiva Linux pode agir como um servidor em uma rede que utilize o protocolo SMB, ele pode também atuar também como uma estação de trabalho, ou seja um usuário de rede pode valer-se de todos os recursos do Linux e ainda acessar dados e informações em estações e servidores Windows, Netware,... , sem que estes últimos tenham que ser especialmente configurados para isso. Linux Acessando Dados em Um Servidor 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, o qual disponibiliza uma interface similar ao FTP em linha de comando. Ele pode ser utilizado para receber e enviar arquivos para uma máquina Windows , listar diretórios, navegar pelos diretórios, renomear e apagar arquivos e outros serviços similares ao FTP em uma máquina Windows. Para verificar quais compartilhamentos estão disponíveis em uma determinada máquina, pode-se executar o seguinte 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 ter uma aparência similar a: A lista acima mostra ainda outros servidores SMB com recursos compartilhados na rede local. Para a execução do programa deve-se informar o seguinte na linha de comando: $ smbclient serviço onde "serviço" é uma máquina e o nome de compartilhamento. Por exemplo, caso se esteja tentando acessar o diretório compartilhado como "publico" em uma máquina denominada porto, os serviços devem ser referenciados como \\porto\publico. De qualquer forma, devido à restrições do ambiente de trabalho, serão necessárias usar as contrabarras, o que provocará a geração de 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 se obterá 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 interessante aplicação 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 Linux Acessando Uma Impressora de Um Servidor Windows A partir de uma máquina Linux é possível enviar uma tarefa para impressão para uma 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 /usr/bin/smbprint. Ele é disponibilizado com o pacote Samba. Janela de Configuração de Uma Impressora Com o Printtool Para maiores informações sobre os parâmetros de configuração, visite http://www.conectiva.com.br/documentacao/manual/instalacao/node189.html. Acessando Um 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 que todas as saídas serão enviadas automaticamente para o cliente Linux, como por exemplo para um navegador Internet. Isto é possível através de um software de livre distribuição denominado VNC ou Rede Virtual de Computação. Este na essência se resume 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 uma tela possa ser acessada por diversas máquinas simultaneamente. Este programa está sendo incluído na distribuição do Conectiva Linux, sendo que no momento pode ser obtido via Internet em http://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, logo não há custos ou limitações em relação ao seu uso. Para a sua utilização devem ser observados os preceitos da Licença Pública GNU, disponível em http://www.conectiva.com.br/documentacao/manual/instalacao/node321.html. Sessão Windows sendo executada no navegador Netscape Executando Uma Aplicação DOS/Windows Sob Linux Existem ainda diversas possibilidades do uso do Linux em conjunto com o Windows. É possível por exemplo executar aplicações DOS, Windows 16 bits e Windows 32 bits sob o Linux através do uso de emuladores que disponibilizam um ambiente similar aos sistemas originais. Este tema será assunto de artigo futuro, sendo para aqueles que necessitem deste tipo de funcionalidade de imediato podem verificar a seção Referêncas e Recursos. Conclusão Certamente com algum pequeno esforço, o Linux pode desempenhar um papel importante em redes locais, onde graças à sua maleabilidade pode desempenhar os mais diversos papéis, de acordo com 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. Referências Conectiva Linux: http://www.conectiva.com.br Samba: http://www.samba.org Windows: http://www.microsoft.com gnorpm: http://www.conectiva.com.br/documentacao/manual/usuario/node390.html kpackage: http://www.general.uwa.edu.au/u/toivo/kpackage/ Integrating UNIX and Windows por John Blair: http://www.ssc.com/ssc/samba/ Clientes SMB para DOS e Windows 3.X:ftp://ftp.microsoft.com/bussys/Clients Samba - Em Português: http://ldp-br.conectiva.com.br/documentos/comofazer/html/samba.pt_BR.html Recursos Conectiva Linux ftp://ftp.conectiva.com.br Mirrors em http://www.conectiva.com.br/ftp/ Terminais Windows sob Linux http://www.uk.research.att.com/vnc/ Emulação 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 Emuladores 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 Sandro Henrique atua na Conectiva Informática, empresa desenvolvedora e distribuidora do Conectiva Linux para a América Latina. Ele pode ser contatado através do email info@conectiva.com.br. Documento atualizado em 07-ago-1999. *********** Não seja um pirata. Seja livre. Use Linux. *******************