5.1.5 – Acesso a arquivos
O Sistema Operacional Linux, bem como os demais SO, trata o acesso a arquivos de forma radômica, ou seja, seus byte ou registros podem ser lidos em qualquer ordem.
5.1.6 – Atributos dos arquivos
Cada arquivo tem necessariamente um nome e um conjunto dados. Além disso, o Sistema Operacional associa a cada arquivo algumas outras informações que chamaremos de atributos de arquivos. A figura 04, nos mostra alguns dos atributos dos arquivos.
total 11
lrwxrwxrwx 1 root root 9 Dec 9 14:01 rmt ->
/sbin/rmt*
-rw-r–r– 1 root root 743 Jul 31 1994 rpc
-rw-r–r– 1 root root 86 Jan 28 1994 securette
-rw-r–r– 1 root root 21394 Dec 9 14:22 sendmail.000
-rw-r–r– 1 root root 23580 Jan 6 12:28 sendmail.cf
drwxr-xr-x 2 root root 1024 Dec 9 13:59 skel/
-rw-r–r– 1 root root 314 Jan 9 1995 slip.hosts
-rw-r–r– 1 root root 342 Jan 9 1995 slip.login
lrwxrwxrwx 1 root root 13 Dec 9 13:59 utmp ->
/var/og/utmp
lrwxrwxrwx 1 root root 13 Dec 9 13:59 wtmp ->
/var/og/wtmp
-rw-r–r– 1 root root 76 Mae 8 1995 e p.conf.example
Como vimos neste exemplo, o Sistema de Arquivo do Linux permite restringir o acesso aos arquivos e diretórios permitindo que somente determinados usuários possam acessá-los.
A cada arquivo e diretório é associado um conjunto de permissões. Essas permissòes determinam quais usuários podem ler, escrever, ou alterar um arquivo, e no caso de arquivos executáveis como programas, quais usuários podem executá-lo.
Se um usuário tem permissão de execução de um diretório, significa que ele pode realizar buscas dentro daquele diretório, e não executá-lo como se fosse programa. Passaremos a explicar a codificação, escolhemos aleatoriamente o sétimo arquivo skel/ da figura 04 :
d r w x r – x r – x nome do arquivo
1 2 3 4 5 6 7 8 9 10 skel/
obs : o que está em negrito,caixa maior, corresponde a posição do arquivo skel/
• 2 – Permissões do Proprietário (r -> leitura, , – não permitida leitura )
• 3 – Permissões do Proprietário (w -> escrita, – não permitida escrita)
• 4 – Permissões do Proprietário (x -> execução, – não permitida execução)
• 5 – Permissões do Grupo (r ->leitura, , – não permitida leitura )
• 6 – Permissões do Grupo (w -> escrita, – não permitida escrita)
• 7 – Permissões do Grupo (x -> execução, – não permitida execução)
• 8 – Permissões do Sistema (r -> leitura, , – não permitida leitura )
• 9 – Permissões do Sistema (w -> escrita, – não permitida escrita)
• 10 -Permissões do sistema (x -> execução, – não permitida execução)
5.2 – Operações sobre arquivos
Os arquivos existem para armazenar informações e permitir a sua recuperação. As Chamadas de Sistemas mais comum relacionadas ao Sistema de Arquivo Linux são chamadas que operam sobre arquivos individuais ou envolvendo diretórios e sistema de arquivos como um todo .
A chamada CREAT não só cria um arquivo, mas também abre esta arquivo para escrita, indepedente do modo de proteção especificado para ele. O descritor de arquivo que a chama retorna, fd, pode ser usado para escrever no arquivo.
Se a chamada CREAT for executada sobre um arquivo existente, esta arquivo será truncado para o comprimento 0, desde que os direitos do arquivos assim o permitam.
Para que um arquivo existente possa ser lido ou escrito, é necessário que ele seja primeiramente aberto e se ele esta aberto para leitura, escrita ou para ambas as operações. Várias opções podem ser especificadas.
O descritor de arquivo que a chamada retorna pode então ser usado para leitura ou escrita. Posteriormente, o arquivo deve ser fechado através da chamada CLOSE, cuja execução torna o descritor de arquivo disponível para ser novamente utilizado numa chamada CREAT ou OPEN subseqüente.
A chamada READ é utilizada para ler o arquivo, os bytes lidos vêm em posição corrente de leitura. O processo que faz a chamada deve indicar a quantidade de informação a ser lida e providenciar um buffer para possibilitar a leitura.
A chamada WRITE, os dados são escritos no arquivo, geralmente a partir da posição corrente. Se tal posição for a de final de arquivo, o tamanho do mesmo cresce.
Se a posição corrente no momento da escrita estiver no meio do arquivo, os dados existente nesta posição estaram perdidos para sempre, pois a operação de write escreve os novos dados em cima dos antigos.
Apesar da maioria dos programas ler e escrever arquivos sequëncialmente, em algumas aplicações os programas devem ser capaz de acessar randomicamente qualquer parte do arquivo. Associado a cada arquivo, existe um ponteiro que indica a posição corrente do arquivo.
Quando a leitura ou escrita for seqüêncial, em geral, ele aponta para o próximo byte a ser lido ou a ser escrito. A chamada LSEEK têm três parâmetros: o primeiro do descritor de área para o arquivo, o segundo é a posição do arquivo, o terceiro informa se a posição é relativa ao inicio do arquivo, à posição corrente ou final do arquivo. O valor que o LSEEK retorna é a posição absoluta no arquivo após a mudança no ponteiro.
Para cada arquivo o Linux mantem o modo do arquivo (regular, diretório ou arquivo especial), seu tamanho, o instante da última modificação, e outra informações pertinentes.
Os programas podem verificar estas informações, usando a chamada STAT. Seu primeiro parâmetro é o nome do arquivo. O segundo é um ponteiro para a estrutura onde a informação solicitada deve ser colocada.
As chamadas do sistema relacionadas com os diretórios ou com o sistema de arquivo como um todo , em vez de um arquivo específicos. Os diretórios são criados utilizando as chamadas MKDIR e RMDIR, respectivamente um diretórios o pode ser removido se estiver vazio.
A ligação de um arquivo cria uma nova entrada no diretório que aponta para um arquivo existente. A chamada LINK cria esta ligação. Os seus parâmetros especificam os nome originais e novo, respectivamente.
As entrada do diretórios são removidas via UNLINK. Quando a última ligação para um arquivo é removida, é automaticamente apagada para um arquivo que nunca foi ligado, o primeiro UNLINK faz com que ele desapareça.
Os diretórios de trabalho é especificado pela chamada CHDIR. Sua execução faz com que haja mudança na interpretação dos nome dos caminhos realtivos.
A chamada CHMODE torne possível a mudança do modo um arquivo, ou seja, de seus bits de proteção.