Um servidor de Arquivos (ou armazenamento de arquivos virtual) pode ser caracterizado por três propriedades:
- Estrutura de arquivo.
- Atributos de arquivo.
- Operações em arquivo.
Cada servidor de arquivos tem algum modelo conceitual do que é um arquivo. Diferentes servidores de arquivos possuem modelos diferentes. Entretanto, três modelos são amplamente utilizados.
- No primeiro modelo, um arquivo é uma grande massa não-estruturada de dados sem qualquer subestrutura conhecida para o servidor de arquivos. Como o servidor de arquivos não sabe nada sobre a estrutura interna dos seus arquivos, ele não pode realizar quaisquer operações sobre partes de arquivos. Em geral, a únicas operações possíveis nesse modelo são a leitura ou escrita de arquivos inteiros.
- No segundo modelo é o arquivo simples que consiste em uma sequência ordenada de registros. Os registros de um arquivo não precisam ter todos o mesmo tipo e tamanho. Além disso, alguns ou todos os registros podem ter labels (chaves) associados a eles. Esses labels não fazem parte dos dados do arquivo, exatamente como o nome do arquivo também não é parte dele. Com esses arquivos, é possível aos clientes endereçarem registros específicos, seja por seus labels ou por suas posições; assim, o servidor de arquivos pode suportar operações sobre registros individuais, tais como estendê-los , substituí-los ou eliminá-los. Por exemplo, um arquivo UNIX pode ser considerado como uma seqüência de registros de 1 byte que são endereçáveis individualmente por posição.
- O modelo mais geral de arquivo é o arquivo hierárquico, que tem a forma de uma árvore. Cada nó da árvore pode ter um label, um registro de dados, ambos ou nenhum dos dois.
É freqüentemente útil ter-se uma ordenação padronizada para todos os nós, não apenas para permitir que os nós não rotulados sejam endereçados por sua posição para operações de eliminação e substituição, mas também para transferência de arquivos completos..
Todos os arquivos têm atributos que os descrevem. No mímimo, cada arquivo deve ter um nome ou outro identificador, e um tamanho informando a quantidade de memória de armazenamento que ocupa atualmente. Na prática, a maior parte dos servidores de arquivos mantém vários outros atributos além desses. Cada atributo tem um nome, um tipo e um valor (possivelmente um conjunto ou lista).
Alguns atributos são criados no momento da criação do arquivo, e ficam congelados para sempre a partir daí. Outros podem ser alterados explicitamente por operações do usuário. Outros ainda são mantidos automaticamente pelo servidor de arquivos. A relação de atributos modificáveis pelo usuário varia de um servidor de arquivos para outro.
Embora a maioria dos atributos seja fácil de comprender, alguns deles exigem comentários.
- O atributo Operações permitidas ativa o criador de um arquivo a especificar, por exemplo, que algumas operações não são válidas nesse arquivo. A inserção de registros no meio de arquivos UNIX poderia ser proibida dessa maneira.
- O controle de acesso determina quem pode ter acesso ao arquivo, e como.
- O atributo Arquivo disponível pode ser usado para indicar que há um ligero atraso na abetura do arquivo (p.exe., para trazê-lo de um banco localizado no outro lado da cidade).
- O atributo Tipo de Conteúdo poderia informar algo sobre a estrutura do registro.
- O atributo Qualificações válidas é um string que poderia conter imformações relacionadas a diversas leis de privacidades nacionais.
- O atributo Uso privativo é um depósito para quaisquer informações não fornecidas por outros atributos.
As operações em arquivos podem se aplicar ao arquivo como um todo ou ao seu conteúdo, o seja, aos registros individuais.
Todos os servidores de arquivos têm de lidar de alguma forma com o controle de acesso e a proteção do arquivo. A maneira mais simples e menos confiável é considerar todas as máquinas clientes como dignas de confiança e simplesmente executar todos os pedidos que chegarem. Se todas as máquinas clientes forem grandes mainframes como esquemas de proteção elaborados de sua propriedade, que evitam que os usuários façam pedidos não-autorizados ao servidor, essa abordagem pode se justificar. Em alguma rede pública remota X.25, o enderço do chamador, fornecido pela concessionária durante o estabelecimento da conexão, pode ser suficiente para autentificar o chamador como um mainframe de confiança.
Um desses métodos seria verificar o transmisor de cada pedido, seja fazendo com que ele inclua uma senha em cada solicitação, seja pelo uso de um dos métodos de assinatura digital. Se a espionagem eletrônica for um problema potencial, uma assinatura digital criptografada é muito melhor que apenas enviar uma senha em texto simples, a menos, é claro, que toda a sessão seja criptografada. Desde que conheça a identidade do cliente, o servidor pode empregar qualquer um dos esquemas tradicionais para proteção utilizados por sistemas de timesharing.
Um método mais elaborado é ter uma ou mais senhas por arquivo (p.exe., uma larga leitura e outra para escrita). Nesse sistema, qualquer um que apresentar uma senha válida tem a permissão de realizar as operações correspondentes, não importa a identidade real do transmissor. A proteção esparsa baseada em capacidades, com um mapa de bits para indicar operações permitidas (Tanenbaum et al., 1986), é uma variante dessa idéia.