Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede Um sistema de arquivos é um modo particular de armazenar e organizar arquivos em um dispositivo de armazenamento como um disco rı́gido, e é uma parte importante do sistema operacional. Como qualquer outro sistema operacional, as distribuições GNU/Linux realizam a manipulação de diversos dados e informações. Para isto é necessária uma estrutura de arquivos e diretórios bem definida e padronizada. Existem diferentes tipos de sistemas de arquivos. Os mais comuns são: A barra de localização acima da lista de arquivos e pastas mostra qual a pasta você está vendo, incluindo as pastas pais até o seu diretório pessoal, a raiz de um dispositivo removı́vel ou do seu sistema de arquivos. Clique em uma pasta pai na barra de localização para ir até essa pasta. Clique com o direito em qualquer pasta na barra de localização para abri-la em uma nova aba ou janela, para copiar ou movêla, ou para acessar suas propriedades. Ext2, Ext3, e Ext4: estes são usualmente encontrados em sistemas operacionais GNU/Linux. Ubuntu utiliza Ext4 como seu sistema de arquivo padrão. FAT16 e FAT32: são sistemas de arquivos do Microsoft Windows encontrados em computadores antigos. NTFS: é o tipo de sistema de arquivos utilizado pelas versões mais modernas do Microsoft Windows. HFS+: é o sistema de arquivos padrão Mac OS X. Na aula de hoje, iremos conhecer como navegar na estruturação dos dados e diretórios do sistema de arquivos do Linux, como também as suas particularidades e algumas recomendações necessárias para a sua boa manutenção. I. Navegar nos Arquivos e Pastas Utilize o gerenciador de Arquivos para navegar por arquivos em sua pasta pessoal, em dispositivos externos (pendrives), em servidores de arquivo ou através do sistema de arquivos de seu computador. Para abrir o gerenciador de arquivos selecione o atalho Pasta pessoal no lançador do Ubuntu. No gerenciador de arquivos clique duas vezes em uma pasta para ver seu conteúdo ou clique duas vezes em um arquivo para abri-lo com o aplicativo padrão para o arquivo. Você também pode clicar com o direito em uma pasta para abri-la em uma nova aba ou nova janela. Na visão em lista você também pode clicar no expansor ao lado da pasta para mostrar o conteúdo dela em uma árvore. Figura 1: Gerenciador de Arquivos do Ubuntu II. Estrutura das Pastas No Linux para cada tipo de arquivo, e de acordo com suas funcionalidades e importância, existe um local especı́fico (chamado diretório) para seu armazenamento. O sistema de arquivo é organizado em uma estrutura hierárquica, similar a uma árvore. O nı́vel mais alto do sistema de arquivo é o / ou diretório raiz. Na filosofia arquitetural do Unix e do Linux, tudo é considerado um arquivo - incluindo discos rı́gidos, partições e mı́dias removı́veis. Por exemplo, /home/macedo/aula.pdf mostra o caminho completo e correto para o arquivo aula.pdf que existe no diretório macedo, o qual está sob o diretório home, que por sua vez está sob o diretório raiz (/). Diretórios são utilizados para manter arquivos relacionados juntos. Podem ser arquivos executáveis (programas), arquivos de dados, arquivos de um projeto ou tema, etc. Distribuindo os arquivos em diretórios facilita a manipulação (cópia, acesso, compartilhamento) dos mesmos. Segue uma lista dos principais diretórios da maioria das distribuições Linux: / - (raiz) inı́cio do sistema de arquivos; /bin - aplicativos binárias importantes, como os comandos essenciais dos usuários, por exemplo, cat, cp, ls, mkdir, rm, su, ping, mount, gzip, chmod. /boot - arquivos necessários para realizar o boot do computador, por exemplo, o kernel do sistema. Em distribuições que utilizam o gerenciador de inicialização GRUB (por exemplo o Ubuntu), este encontra-se armazenado em um subdiretório, chamado /boot/grub. /dev - os diversos dispositivos que o sistema suporta (impressoras, teclado, mouse, saı́da de som, entre outros) tem sua interface aqui. Para ter acesso as funcionalidades de qualquer dispositivo, deveremos recorrer aos seus respectivos arquivos de dispositivos, por exemplo, sda (1ª unidade na controladora primária mestre, geralmente o disco rı́gido), sdb (2ª unidade na controladora primária escravo, geralmente um pendrive), audio (sintetizador de áudio), ttyX (um terminal propriamente dito), usbmon (interface USB), etc. /etc - contém arquivos de configuração (por exemplo, a tabela para montagem de partições e as definições do servidor X.org) e scripts para iniciar programas. No Windows, todas as suas definições em termos de configuração ficam armazenadas em seu sistema de registro, que por sua vez é inicializado através do aplicativo regedit.exe. Embora funcional e centralizalizador, infelizmente ele é pouco intuitivo e sem uma documentação eficiente. Já nos sistemas GNU/Linux, suas definições ficam registradas em arquivos-textos de configuração, bem mais fácil de ser editado manualmente; /home - destinado ao armazenamento dos arquivos pessoais das contas de usuário do sistema, incluindo personalizações especı́ficas de sua conta. Por exemplo, para conta do usuário macedo, teremos um diretório /home/macedo/ para o armazenamento de todos os arquivos e configurações pessoais desta conta. /lib - contém bibliotecas compartilhadas necessárias para a execução dos arquivos contidos nos diretórios /bin e /sbin. Ainda neste diretório são encontrados os módulos do kernel. /media e /mnt - são definidos para serem utilizados exclusivamente para a montagem de unidades. A diferença entre os dois está justamente no tipo de unidade a ser desmontada. O /media deverá ser utilizado exclusivamente para a montagem de mı́dias removı́veis, como DVDs, disquetes e pendrive em geral. Já no /mnt se concentrará a montagem de volumes de uso provisório, como uma partição de um HD, por exemplo; /opt - provê um local para instalação de aplicativos opcionais, por exemplo, um programa do IRPF (Imposto de Renda); /proc - diretório dinâmico especial que mantém informações sobre o estado do sistema, incluindo processos em execução. Ele é apenas um sistema de arquivo virtual para que os administradores do sistema tenham acesso as informações do processamento do kernel em forma de arquivos para consulta; /root - é definido para ser utilizado exclusivamente no armazenamento de dados e arquivos pessoais do superusuário (root). Não é recomendado o uso deste diretório para qualquer finalidades que não seja para a administração e/ou manutenção do sistema, em especial atividades comuns para os usuários tais como leitura do correio eletrônico, armazenamento de dados diversos, etc. Para estas atividades, o administrador deverá ter ou criar para si uma conta de usuário comum; /sbin - armazena arquivos binários essenciais para a administração do sistema, onde os mesmos são utilizado somente pelo superusuário ou durante a inicialização do sistema, por exemplo, como criação de novos usuários, configurações de rede e formatação de discos; /sys - tal como o /proc, é um sistema virtual de arquivos. Neste caso, tem-se o objetivo de mostrar as informações relacionadas aos hardware, enquanto que /proc traz referências ao sistema; /tmp - armazena arquivos temporários gerados pelo sistema. Geralmente este diretório é limpo a cada inicialização ou a intervalos relativamente freqüentes. Por este motivo, deveremos evitar a guarda de arquivos por um determinado tempo neste diretório, mesmo aqueles inúteis; /usr - maioria dos aplicativos e utilitários do sistema encontram-se armazenados aqui: ele é como uma espécie de “Arquivos de Programas do Windows”. Dentro dele existem diversos subdiretórios, por exemplo: – /usr/bin - aplicativos mais utilitários; – /usr/lib - bibliotecas usadas pelos utilitários em /usr/bin; – /usr/local - arquivos instalados pelo administrador; – /usr/share - arquivos compartilhados (apenas leitura); – /usr/src - fonte do sistema e seus utilitários. /var - nele são colocados os arquivos e diretórios temporários que devem ser preservados quando a máquina é reiniciada. As mensagens de e-mail e os arquivos de log (registro de acontecimentos) ficam neste diretório. Dentre os arquivos deste diretório, poderemos destacar o Xorg.0. log, debug, dmesg, messages e syslog. Pois, eles permitem analisar todas as interações do sistema com o hardware, registrando além das informações gerais, inconsistências, falhas, erros e anomalias das mais variadas espécies. III. Permissões dos Arquivos e Diretórios O sistema Linux trabalha com um modo de permissão que protege o sistema de arquivos de: Acesso indevido de pessoas ou programas não autorizados. Um programa mal intencionado, por exemplo, enviar arquivos para outra pessoa ou fornecer acesso da rede para que outros usuários invadam o sistema. Usuários iniciantes apagarem arquivos que não deve, ou mesmo visualizarem. Além de instalar programas em locais inadequados. A segurança de acesso a arquivos e diretórios é provida através de um esquema de posse de arquivo e de permissão de acesso a estes. Com relação a posse de arquivo (e diretório) o Linux dividide os usuários em três conjuntos: Dono: o proprietário do arquivo ou criador do arquivo. Grupo: usuários que fazem parte do grupo do proprietário, para permitir que vários usuários diferentes tenham acesso a um mesmo arquivo. Cada usuário pode fazer parte de um ou mais grupos e então acessar arquivos que pertençam ao mesmo grupo que o seu (mesmo que estes arquivos tenham outro dono). Outros: não são os proprietários e nem fazem parte do grupo. No entanto, o super usuário “root ” possui a habilidade de acessar qualquer arquivo do sistema. Os comandos para visualizar os atributos, modificar dono e modificar grupo dos arquivos, são: ls -l: utilizado para ver as permissões de um arquivo ou diretório, a opção l (long listing) mostra todos os detalhes dos arquivos. A primeira informação corresponde ao chamado modo do arquivo, composto de 10 caracteres. Dono Arqivo regular Grupo $ ls -l -rw-r--r-- 1 macedo macedo 10 2011-03-29 14:25 test.txt Permissões do dono Permissões dos outros Permissões do grupo Figura 2: Comando ls -l O primeiro caracter apenas indica seu tipo (por exemplo, se é um arquivo regular ou um diretório). Os nove caracteres constituem três grupos de três caracteres. Em cada grupo, o primeiro caracter representa a permissão de leitura (r), o segundo a de escrita (w) e o terceiro a de execução (x). Se não tiver permissão aparece um hı́fen (-). Na sequencia é mostrado o tamanho do arquivo em bytes, data da última modificação e o nome do arquivo. chown: utilizado para trocar o dono de um arquivo. Na Figura abaixo é mostrado um arquivo chamado “test.txt”. Ele pertence ao usuário macedo e ao grupo macedo. Foi feito uma modificação de dono para janaide. Figura 3: Comando chown chgrp: troca o grupo do arquivo. Um usuário pode mudar o grupo de um arquivo, desde que ele seja o usuário dono do arquivo e pertença ao novo grupo do arquivo. Na Figura abaixo é mostrado inicialmente um arquivo chamado “test.txt” que pertence ao usuário macedo e ao grupo macedo. Foi realizada uma modificação no grupo do arquivo onde o mesmo passou a pertencer ao grupo janaide. Figura 4: Comando chgrp Uma vez que as posses de arquivo estão definidas, o próximo passo é proteger os arquivos de acesso não desejado. Para isso, é definido três tipos de permissão para controlar os acessos a um arquivo/diretório ao dono, grupo e outros usuários. São eles: Neste exemplo, os dois comandos chmod 754 e chmod u+rwx,g+rx,o+r são equivalentes: r (read ): permissão de leitura para um arquivo e, permitir listar o conteúdo de um diretório (através do comando ls, por exemplo). w (write): permissão de gravação e exclusão para um arquivo/diretório. x (execute): permissão para executar um arquivo, se for um arquivo binário ou um script e, se for um diretório permitir acesso a ele através do comando cd. O comando que possibilita modificar as permissões de um arquivo é: chmod: é utilizado para modificar as permissões de arquivos e diretórios. Figura 6: Comando chmod Questões 1. Cite exemplos de sistema de arquivo suportado pelo Linux. 2. Como é organizado a estrutura do sistema de arquivo do Linux? E o que o usuário vai encontrar em cada diretório? 3. Como é definido as permissões aos arquivos e pastas no Linux? 4. Qual é o comando para alterar o usuário de um arquivo? 5. Qual é o comando utilizado para listar as permissões de um arquivo ou pasta? Figura 5: Comando chmod No exemplo acima, tinhamos um arquivo (chamado “test.txt”) onde o dono, grupo e os outros usuários não podiam ler, escrever e nem executar o arquivo de texto. Na sequencia foi atribuido ao dono (u - user ) as permissões de escrever (w) e ler (r). Posteriormente, foi atribuido a permissão de leitura aos usuários pertencentes ao grupo (g - group) macedo e aos demais usuários (o - other ) a permissão de leitura. Neste comando o sinal de mais (+) e de menos (-) são usados para acrescentar ou remover permissões. As permissões de acesso também podem ser especificadas numericamente no comando chmod. Para calcular o modo numérico basta substituir os 9 caracteres correspondentes às permissões, por 9 bits. Estes nove bits são agrupados três a três e convertidos em decimal. Por exemplo, String Binário Decimal Dono rwx 111 7 Grupo r-x 101 5 Outros r-100 4 6. Para um arquivo que inicialmente está com as permissões -rwxrwxrwx, após executar o comando chmod 755 nome do arquivo qual será a sua nova permissão? 7. Como deve proceder um usuário que deseja que seu arquivo (prova.odt) seja visualizado e modificado somente por ele?