Você está na página 1de 10

Sistema de Arquivo de Rede (NFS Network File System)

O Sistema de Arquivo de Rede (NFS) uma maneira de compartilhar arquivos entre mquinas de uma rede, como se estes arquivos estivessem localizados no disco rgido local do cliente. O Red Hat Enterprise Linux pode ser um servidor NFS e um cliente NFS, o que significa que pode exportar sistemas de arquivo para outros sistemas e montar sistemas de arquivo exportados de outras mquinas.

Por que usar o NFS?


O NFS til para compartilhar diretrios de arquivos entre mltiplos usurios da mesma rede. Por exemplo: um grupo de usurios trabalhando no mesmo projeto podem ter acesso aos arquivos deste projeto usando um diretrio compartilhado do sistema de arquivo NFS (comumente conhecido como partilha do NFS) montado no diretrio /myproject. Para accessar os arquivos compartilhados, o usurio vai ao diretrio /myproject. No h senhas ou comandos especiais para lembrar. Os usurios trabalham como se o diretrio estivesse em suas mquinas locais.

Compartilhando arquivos usando o NFS


Criado 4/jul/2007 s 14h54 por Carlos E. Morimoto
2

Introduo
Enquanto o Samba permite solucionar sem muita dor de cabea o desafio de interligar mquinas Linux e Windows na mesma rede, o NFS uma opo para compartilhar sistemas de arquivos entre mquinas Linux, de uma forma prtica e estvel. Na verdade, voc pode perfeitamente usar o Samba para compartilhar arquivos entre mquinas Linux, mas, o NFS no deixa de ser um recurso importante, que voc no deve deixar de estudar. Assim como o Samba, o NFS um servidor que precisa ser habilitado manualmente na maior parte das distribuies. No Mandriva, Fedora e outras distribuies derivadas do Red Hat, procure pelo servio "nfs". Nas distribuies derivadas do Debian, procure pelo servio "nfskernel-server". O NFS utiliza um outro servio, o portmap para gerenciar as requisies dos clientes. Este servio precisa estar ativo para que o NFS funcione. Ou seja, para inicializar o servidor NFS voc precisa ativar os dois:

# /etc/init.d/portmap # /etc/init.d/nfs start (ou "/etc/init.d/nfs-kernel-server start" no Debian)

A configurao do NFS feita em um nico arquivo, o "/etc/exports", onde vai a configurao dos diretrios compartilhados, um por linha. Originalmente este arquivo fica vazio, ou contm apenas um comentrio. Voc precisa apenas abr-lo num editor de textos e adicionar as pastas que deseja compartilhar. Por exemplo, para compartilhar a pasta "/home/arquivos" como somente leitura, para todos os micros da sua rede local, adicione a linha:

/home/arquivos 192.168.0.*(ro)

Para compartilhar a pasta "/home/trabalhos" com permisso de leitura e escrita, adicione a linha:

/home/trabalhos 192.168.0.*(rw)

Para compartilhar a pasta "/arquivos", com *apenas* o micro 192.168.0.3:

/arquivos 192.168.0.3(rw)

Outra opo, til em redes locais a "async", que permite que o NFS transfira arquivos de forma assncrona, sem precisar esperar pela resposta do cliente a cada pacote enviado. Sem a opo async a taxa de transmisso numa rede de 100 megabits fica em geral em torno de 6 a 7 MB/s, enquanto que ao ativ-la, sobre para at 11 MB/s, ficando limitada apenas velocidade da rede e dos HDs no servidor e cliente. Ao adicion-la, a linha de compartilhamento ficaria:

/home/trabalhos 192.168.0.*(rw,async)

Voc pode usar ainda o parmetro "noacess", que permite que voc compartilhe apenas os arquivos dentro do diretrio, mas no subdiretrios que eventualmente estejam presentes. Depois de incluir todos os diretrios que deseja compartilhar, com suas respectivas permisses de acesso, salve o arquivo e reinicie o servio nfs para que as alteraes surtam efeito. Para isso, use o comando:

# /etc/rc.d/init.d/nfs restart

Sempre que desejar parar o servio voc pode usar os comandos abaixo, que respectivamente param e inicializam o servio: # /etc/rc.d/init.d/nfs stop # /etc/rc.d/init.d/nfs start Lembre-se que no Debian o servio no se chama "nfs" mas sim "nfs-kernel-server". Embora seja fcil editar diretamente o arquivo "/etc/exports", muitas distribuies incluem ferramentas grficas para gerenciar os compartilhamentos NFS. O Fedora por exemplo, inclui o "system-config-nfs" (que se chama "redhat-config-nfs" no Red Hat). O Mandriva inclui um utilitrio similar dentro do Mandriva Control Center, enquanto no Kurumin voc encontra um painel de configurao no Iniciar > Redes e Acesso Remoto > NFS.

Ao compartilhar os diretrios, resolvemos apenas metade do problema. Ainda falta acess-los

a partir dos clientes. Assim como no caso das parties, voc pode montar os compartilhamentos NFS em qualquer pasta do sistema. Em muitas empresas utilizam compartilhamentos montados no diretrio /home para que os arquivos sejam armazenados no servidor, facilitando os backups, por exemplo. Caso voc monte o compartilhamento numa pasta que contenha arquivos, estes ficaro momentneamente inacessveis, dando lugar aos do compartilhamento. Mas, depois que o compartilhamento desativado, eles reaparecem. Nada perdido. Para montar o compartilhamento manualmente, use (como root) o comando: # mkdir /mnt/arquivos # mount -t nfs 192.168.0.1:/arquivos /mnt/arquivos Aqui eu comecei criando a pasta "/mnt/arquivos", onde vou montar o compartilhamento. A linha de montagem propriamente dita inclui o sistema de arquivos usado, neste caso o nfs (-t nfs), o endereo IP do servidor, seguido da pasta que ele est compartilhando e, finalmente, a pasta local onde os arquivos ficaro acessveis. Ao terminar de acessar o compartilhamento, ou caso precise desligar o servidor, use o comando "umount /mnt/arquivos" para desmont-lo. importante desmontar o compartilhamento antes de desligar o servidor, caso o contrrio o cliente continua tentando acessar o compartilhamento sempre que voc acessa a pasta onde ele est montado, o que faz com que os gerenciadores de arquivos e outros programas "parem" ao passar pela pasta, aguardando a resposta do servidor que no est mais l. Se voc acessa o compartilhamento freqentemente, pode ganhar tempo inserindo uma entrada referente a ele no arquivo "/etc/fstab". Assim voc pode montar o compartilhamento usando o comando simplificado, ou configurar o sistema para mont-lo automaticamente durante o boot. Basta incluir a linha no final do arquivo, deixando sempre uma linha em branco aps ela. A linha para o compartilhamento que acabamos de montar seria: 192.168.0.1:/arquivos /mnt/arquivos nfs noauto,users,exec 0 0 Neste exemplo o "192.168.0.1:/arquivos" o IP do servidor, seguido pela pasta compartilhada e o "/mnt/arquivos" a pasta local onde este compartilhamento ficar acessvel e o "nfs" o sistema de arquivos, os mesmos parmetros que usamos no comando manual. O "noauto" faz com que o compartilhamento no seja montado automaticamente durante o boot. Voc pode monta-lo e desmonta-lo conforme for utiliz-lo usando os comandos "mount /mnt/arquivos" e "umount /mnt/arquivos". Note que graas entrada no fstab, voc agora

precisa especificar apenas a pasta, pois o sistema l os outros parmetros a partir da entrada no arquivo. O parmetro "users" permite que voc monte e desmonte o compartilhamento usando seu login normal, sem precisar usar o root e o "exec" permite executar programas dentro do compartilhamento. Caso voc esteja preocupado com a segurana, pode remover as duas opes. Voc pode facilitar o acesso ao compartilhamento adicionando um cone para ele no desktop do KDE. Para isso, clique com o boto direito sobre uma rea vazia e acesse a opo: "Criar novo > Dispositivo > NFS". Na janela que se abre, acesse a aba "Dispositivo" e aponte a entrada que foi adicionada ao fstab. A partir da voc monta o compartilhamento clicando sobre o cone e pode desmont-lo clicando com o boto direito e usando a opo "desmontar".

Voc pode incluir vrias linhas, caso deseje montar vrios compartilhamentos. Caso o servidor fique sempre ligado e voc queira que o compartilhamento seja montado automaticamente durante o boot, retire o "noauto". Neste caso a linha ficaria: 192.168.0.1:/arquivos /mnt/arquivos nfs users,exec 0 0 Novamente, este o procedimento manual, muitas distribuies incluem utilitrios grficos para facilitar isso. No Mandriva por exemplo, voc encontra um utilitrio de montagem no Centro de Controle (mcc), em "Pontos de Montagem > Pontos de montagem NFS".

Nele voc clica no "Servidores de busca" para ver uma lista dos compartilhamentos disponveis na rede. Ao escolher um compartilhamento, clica no "Ponto de montagem" para definir a pasta local onde ele ser acessado e configura as opes adicionais (como o "noauto" e "user") em "Opes". Depois de terminar, clique no "Pronto" e ele pergunta se voc quer salvar a configurao no "/etc/fstab":

Mais um comando til ao utilizar o NFS o "showmount -a" (s funciona se dado pelo root) que mostra uma lista com os diretrios NFS compartilhados na sua mquina que foram acessados e quais mquinas os acessaram desde o ltimo reboot. No muito especfico, pois no mostra datas nem horrios, mas pelo menos permite descobrir se algum no autorizado est acessando os compartilhamentos.

Mais opes

Por padro, os compartilhamentos do NFS so montados com a opo "hard". Isso causa um certo transtorno quando o servidor desligado ou desconectado da rede, pois os clientes ficam tentando se reconectar ao servidor indefinidamente, fazendo que programas travem ao tentar acessar ou salvar arquivos no compartilhamento e voc no consiga desmont-lo por vias normais at que o servidor volte. Para prevenir este problema, voc pode montar os compartilhamentos (nos clientes) usando a opo "soft". Neste caso o compartilhamento escondido caso o servidor seja desconectado e programas tentando acessa-lo passam a exibir mensagens de "no possvel ler o arquivo" ao

invs de travarem. Para usar esta opo, adicione a opo "-o soft" no comando de montagem: # mount -t nfs -o soft 192.168.0.1:/home/morimoto/arquivos /mnt/arquivos A linha no "/etc/fstab" com a opo fica: 192.168.0.1:/home/morimoto/arquivos /mnt/arquivos nfs users,exec,soft 0 0 192.168.0.1:/home/morimoto/arquivos /mnt/arquivos nfs users,exec,soft 0 0 Outra questo importante ao usar o NFS a questo das permisses de acesso. O servidor NFS "confia" na estao e permite que o usurio logado nela acesse os arquivos no compartilhamento com as mesmas permisses que teria um usurio local de mesmo nome. Por exemplo, imagine que compartilhei a parta "/home/morimoto/arquivos". Por estar dentro da pasta "/home/morimoto" os arquivos da pasta podem ser lidos e alterados pelo usurio "morimoto" e apenas lidos pelos demais usurios do sistema. O compartilhamento ento montado no host 192.168.0.4, usado pela usuria "maria". No existe na minha mquina nenhuma conta de usurio chamada "maria", apenas o "morimoto" e o "root", por isso a "maria" acessa o compartilhamento na minha mquina restrita s permisses de acesso da pasta para outros usurios (que podem apenas ler, mas no alterar os arquivos) Neste caso, mesmo que a pasta seja compartilhada com a opo "rw", a usuria "maria" no consegue fazer alteraes, pois ainda est restrita s permisses do sistema. Existem duas solues neste caso. A primeira seria criar uma conta "morimoto" tambm no host 192.168.0.4 e us-la para alterar os arquivos. A segunda (mais insegura) seria abrir as permisses de acesso da pasta (e arquivos dentro dela), de forma que todos os usurios possam fazer alteraes. Neste caso voc usaria o comando "chmod -R 777 /home/morimoto/arquivos".

A exceo para esta regra o usurio root. Por padro, o NFS no permite que o usurio root

de outra mquina acesse arquivos nos compartilhamentos (root_squash). Assim como a maria, o root do 192.168.0.4 acessa o compartilhamento restrito s permisses de acesso para outros usurios, j que vira um usurio invlido. Para que o root remoto possa alterar arquivos no compartilhamento, com as mesmas permisses do root local, use a opo "no_root_squash" ao criar o compartilhamento. Note que isso bipassa apenas as permisses de acesso do sistema e no as permisses de acesso do compartilhamento (ro ou rw). Neste caso, a linha que ativa o compartilhamento dentro do arquivo "/etc/exports" (no servidor) ficaria: /home/morimoto/arquivos 192.168.0.*(rw,async,no_root_squash) Ao adicionar novos compartilhamentos no arquivo "/etc/exports" voc pode ativ-los usando o comando "exportfs -a -v". Isso ativa os novos compartilhamentos sem precisar reiniciar o servidor NFS e sem causar interrupes nos acessos dos clientes.

O SMB/CIFS? O SMB/CIFS (Server Message Block/Common Internet File System) um protocolo de redes cujo o uso mais comum como foi dito anteriormente o compartilhamento de arquivos em uma LAN. Este protocolo permite que o cliente manipule arquivos como se estes estivessem em sua mquina local. Operaes como leitura, escrita, criao, apagamento e renomeao so suportadas, sendo a nica diferena de que os arquivos manipulados no esto no computador local e sim em um servidor remoto. O protocolo SMB/CIFS funciona enviando pacotes do cliente para o servidor. Cada pacote tipicamente baseado em uma requisio de algum tipo, como a abertura ou leitura de um arquivo. O servidor ento recebe este pacote checa-o para ver se a requisio vlida, ou seja, verifica se o cliente possui as permisses apropriadas para efetuar a requisio e finalmente executa a requisio e retorna um pacote de resposta ao cliente. O cliente ento analisa o pacote de resposta para determinar se a requisio inicial foi completada com sucessp

O SMB/CIFS razoavelmente um protocolo de rede de alto nvel. No modelo OSI ele provavelmente melhor descrito como uma camada de Aplicao/Apresentao. Isto significa que o SMB/CIFS depende de outros protocolos para o transporte. O protocolo mais utilizado para transporte confivel o NetBIOS sobre TCP (NBT), que ser melhor descrito mais a frente em Uma rede SMB/CIFS. Outros protocolos foram utilizados na camada de transporte porm com a enorme popularidade da Internet o NBT se tornou um "padro". Apesar do compartilhamento de arquivos ser a principal proposta do SMB/CIFS existem outras funes associadas a ele.A maioria das implementaes de SMB/CIFS so capazes de determinar outros servidores SMB/CIFS na rede (browsing), compartilhar impressoras e at mesmo fornecer complicadas tcnicas de autenticao. Veremos aqui somente os conceitos bsico de operaes com arquivos do SMB/CIFS. Onde encontrado O protocolo SMB/CIFS extremamente utilizado pelos sistemas operacionais Microsoft Windows. O Windows para Workgroups foi o primeiro sistema operacional da Microsoft a utilizar o SMB/CIFS e cada sistema operacional da Microsoft desde ento passaram a possuir a capacidade de funcionar como um servidor ou cliente de SMB/CIFS. Os sistemas operacionais da Microsoft utilizam o SMB/CIFS para operaes com arquivos remotas (tipicamente o mapeamento de drives de rede), navegao (via o Ambiente de Rede, autenticao (NT e Windows 2000) e servios de impresso remotos. razovel ento dizer que o ncleo de rede nativo da Microsoft seja baseado nos servios do SMB/CIFS. Devido a grande entrada de produtos Microsoft tanto nas grandes corporaes como nos usurios particulares o protocolo SMB/CIFS encontrado praticamente em todos os lugares. A maioria dos sistemas Unix-Like possuem uma implementao de cliente/servidor do SMB/CIFS via Samba. Computadores Apple tambm possuem seus clientes/servidores SMB/CIFS, o que faz com que o protocolo SMB/CIFS seja o protocolo mais comum para o compartilhamento de arquivos disponvel.

CIFS e NFS CIFS e NFS so protocolos para compartilhamento de arquivos, no qual geralmente o CIFS utilizado em sistemas Windows e o NFS em sistemas Linux.

O protocolo NFS foi desenvolvido pela empresa fabricante de computadores Sun Microsystems, que em 1985 o distribuiu pela primeira vez, em conjunto com o sistema operacional SunOS 2, o protocolo NFS prov acesso remoto transparente a arquivos compartilhados via rede, e foi desenvolvido para funcionar independentemente de equipamento, sistema operacional, arquitetura de rede e protocolo de transporte. Tal independncia obtida por meio do uso da RPC (Remote Procedure Call - chamada de procedimento remoto), cujos protocolos so descritos usando a XDR (eXternal Data Representation - representao externa de dados).

A RPC uma biblioteca de procedimentos por meio da qual um processo (processo cliente) pode fazer com que um outro processo (processo servidor) execute uma chamada a um procedimento como se o fizesse em seu prprio espao de endereamento. Desta maneira, o processo cliente e o processo servidor no precisam residir na mesma mquina.

A XDR especifica um padro para formato de dados portvel, e utilizada pelas chamadas RPC para assegurar que os dados sejam representados da mesma maneira em computadores, sistemas operacionais e linguagens de programao distintos.

O protocolo CIFS (SNIA, 2002) tem por objetivo prover um mecanismo aberto, e independente de plataforma, para sistemas clientes requisitarem servios de arquivo de sistemas servidores da rede. O CIFS baseado no padro do protocolo SMB, originalmente desenvolvido pela Intel e pela Microsoft no incio dos anos 80 para ser executado em redes locais do tipo PC-Network (substitudas posteriormente pelo padro Ethernet), que faziam uso do protocolo NetBIOS (Network Basic Input/Output System).

Os servios de segurana oferecidos de forma ineficiente ou mesmo no oferecidos pelos protocolos NFS e CIFS podem ser implementados em verses modificadas dos mesmos, como por exemplo o CNFS, cujo prottipo habilita o controle de acesso criptogrfico em um servidor de arquivos NFS. Desta maneira possvel aumentar o nvel de segurana de um servio de compartilhamento de arquivos, mantendo a compatibilidade entre os sistemas que fazem uso do mesmo protocolo.