Capítulo 6. Conceitos Básicos

Sumário

6.1. Conceito de Usuário
6.2. O Sistema de Arquivos Linux
6.3. Permissões de Acesso a Arquivos

Resumo

Se este é seu primeiro encontro com um sistema Linux, você provavelmente quer aprender algo sobre os conceitos básicos do Linux antes de iniciar. As interfaces gráficas do Linux, Mac OS* e Windows* exibem componentes da área de trabalho similares, o que facilita a mudança de um ambiente gráfico para outro. No entanto, se você olhar para o sistema por baixo, você irá notar algumas diferenças.

As seguintes seções pretendem guiá-lo pelos primeiros passos com o seu sistema Linux e ajudar os novatos em Linux a se familiarizarem no seu novo sistema operacional. Você aprenderá sobre os conceitos de usuário do Linux, a estrutura do sistema de arquivos Linux (onde encontrar o que na árvore de diretórios) e como lidar com as permissões de acesso de arquivos e diretórios, que são um recurso essencial no Linux.

Os usuários que já trabalharam com o Mac OS irão, provavelmente, reconhecer que os conceitos explicados nas seguintes seções são similares aos que eles já conhecem do Mac OS. Os usuários do Windows podem perceber algumas diferenças cruciais das quais vale a pena tomar nota.

6.1. Conceito de Usuário

Desde o começo, o Linux foi projetado como um sistema multiusuário: qualquer número de usuários pode trabalhar simultaneamente em uma máquina. Esses usuários podem se conectar ao sistema através de diferentes terminais ou conexões de rede. Geralmente, os usuários se precisam logar antes de iniciar uma sessão. Informações pessoais e configurações individuais da área de trabalho são armazenadas separadamente para cada usuário.

6.1.1. Funções de Usuário Distintas

Entre os usuários trabalhando em uma máquina, o Linux distingue entre diferentes tipos de funções de usuários: você pode iniciar a sessão em uma máquina Linux como um usuário normal ou como superusuário (administrador), tradicionalmente chamado de root no Linux. O superusuário tem privilégios que o autorizam a acessar todas as partes do sistema e executar tarefas administrativas: Ele ou ela tem a capacidade, sem restrições, de fazer alterações no sistema e tem acesso ilimitado a todos os arquivos. Se você iniciou a sessão como um usuário normal, você não tem esses privilégios. O usuário e o root podem, é claro, ser a mesma pessoa física atuando em diferentes funções.

A conta de usuário root é sempre criada no seu sistema Linux por padrão — durante a instalação é requisitado a você especificar uma senha para o root. Quais outros usuários podem logar no seu sistema depende do método de autenticação que você escolheu durante a instalação (veja Seção 1.11, “Criar Novo Usuário”).

Para o seu trabalho diário, você geralmente inicia a sessão no seu sistema como um usuário normal. Executar algumas tarefas administrativas ou executar certos programas como o YaST requerem permissões de root. Você pode facilmente alterar de sua conta normal para a de root e voltar para a sua conta normal após efetuar as tarefas administrativas. Como fazê-lo num shell está descrito em Seção 7.4, “Tornando-se root”. Se você está trabalhando na interface gráfica, geralmente será solicitado a digitar a senha de root quando necessário. Fechar o aplicativo que requer permissões de root resulta na retirada dos privilégios de root: você automaticamente retorna para sua conta de usuário normal.

Enquanto este conceito pode não parecer atraente a princípio, ele adiciona segurança. Um usuário sem os privilégios de root não pode danificar o sistema completamente. Qualquer dano causado é estritamente limitado à conta e aos dados do próprio usuário. Qualquer operação executada com os privilégios de root pode potencialmente danificar um sistema completamente. Qualquer um que tentar danificar um sistema Linux em execução deve obter privilégios de root primeiro. É por isto que é muito mais difícil criar vírus para sistemas Linux. Eles devem superar a barreira do root primeiro.

6.1.2. Grupos

Qualquer usuário num sistema Linux pertence a pelo menos um grupo. Um grupo, neste caso, pode ser definido como um conjunto de usuários conectados a certos privilégios coletivos. Os grupos são geralmente definidos de acordo com as funções ou dados e recursos que os membros do grupo precisam acessar. Quando um novo usuário é criado no sistema, o usuário é geralmente atribuído a um grupo primário e padrão. O administrador do sistema pode alterar este grupo primário ou atribuir o usuário a um grupo adicional, se necessário.

Figura 6.1. Associação a Grupos para um Usuário no YaST

Associação a Grupos para um Usuário no YaST

6.2. O Sistema de Arquivos Linux

Todos os usuários, incluindo o superusuário, possuem seus próprios diretórios pessoais (home), onde todos os dados privados, como documentos, favoritos ou e-mails, são armazenados. Os diretórios do sistema que armazenam arquivos de configuração centrais ou arquivos executáveis podem ser modificados somente pelo superusuário. Leia mais sobre permissões de acesso e como modificá-las de acordo com suas necessidades em Seção 7.5, “Modificando Permissões de Arquivo”.

No Linux, você pode escolher se deseja gerenciar arquivos e diretórios com um gerenciador de arquivos ou com a linha de comandos, que é o modo tradicional. O último método é geralmente mais rápido, mas requer um conhecimento mais profundo de vários comandos para listar, criar, remover ou editar arquivos e suas propriedades. Para mais informações sobre comandos para manipular arquivos, consulte Seção 7.3, “Trabalhando com Arquivos e Diretórios”. Um gerenciador de arquivos fornece um modo gráfico e mais intuitivo de executar essas tarefas. Aprenda mais sobre os gerenciadores de arquivo do GNOME e do KDE em Seção “Gerenciando pastas e arquivos com o nautilus” (Capítulo 2, Trabalhando com sua área de trabalho, ↑Guia do Usuário GNOME) e Seção “Using Dolphin File Manager” (Capítulo 2, Working with Your Desktop, ↑Guia do Usuário KDE). As seguintes seções fornecem a você um conhecimento básico do sistema de arquivos e uma visão geral da estrutura de diretórios padrão no Linux.

6.2.1. Recursos Chave

No Linux, todos os arquivos e diretórios estão localizados numa estrutura em forma de árvore. O diretório mais acima é conhecido como a raiz do sistema de arquivos ou apenas / (não confundir com o usuário root). O equivalente de / num sistema Windows provavelmente seria C:\. Todos os outros diretórios no Linux podem ser acessados a partir do diretório raiz e estão dispostos numa estrutura hierárquica.

Encontre os recursos chave do sistema de arquivos Linux na seguinte lista, que também destaca algumas das maiores diferenças entre os sistemas de arquivos Linux e Windows/DOS:

Especificando caminhos

Ao contrário do Windows, o Linux não usa barra invertida para separar os componentes do nome do caminho, mas uma barra normal. Por exemplo, os dados privados dos usuários podem ser armazenados em C:\Meus Documentos\Cartas, mas no Linux eles seriam armazenados em /home/nome_de_usuário/Cartas.

Partições, unidades/dispositivos e diretórios

O Linux não usa letras de unidades como o Windows faz. Apenas pela aparência do nome do caminho no Linux você não pode afirmar se você está acessando uma partição, uma unidade/dispositivo, um dispositivo de rede ou um diretório normal.

Montando e desmontando

Outra diferença crucial entre o Windows/DOS e o Linux é o conceito de montagem e desmontagem de partições, unidades e diretórios. O Windows detecta partições e unidades durante o processo de inicialização e atribui uma letra de unidade para elas. No Linux, no entanto, normalmente as partições ou dispositivos não são visíveis na árvore de diretórios, a menos que eles sejam montados, o que significa serem integrados ao sistema de arquivos numa localização específica na área de diretórios. Como um usuário normal você não pode acessar dados em uma partição ou dispositivo a menos que ele esteja montado. Mas não se preocupe — na maioria das vezes você não precisa montar as partições ou dispositivos manualmente. Durante a instalação do seu sistema, você pode definir partições a serem montadas automaticamente quando o sistema for iniciado. Geralmente, dispositivos removíveis são detectados e montados automaticamente pelo seu sistema —as áreas de trabalho como o KDE ou o GNOME irão informá-lo sobre a detecção de um novo dispositivo.

Figura 6.2. Detecção Automática de um Pendrive USB no KDE

Detecção Automática de um Pendrive USB no KDE

Apesar deste conceito de montagem e desmontagem parecer complicado ou incômodo à primeira vista, ele também fornece uma grande flexibilidade: por exemplo, você pode facilmente montar um diretório de outra máquina através da rede e atuar neste diretório como se ele estivesse localizado em sua máquina.

Diferenciar maiúsculas de minúsculas

O Linux distingue letras maiúsculas de minúsculas no sistema de arquivos. Por exemplo, os arquivos teste.txt, TeSTe.txt ou Teste.txt são diferentes no Linux. Isto também é válido para diretórios: Você não pode acessar um diretório chamado Cartas pelo nome cartas.

Extensões de arquivos

Ao contrário do Windows, os arquivos no Linux podem ter uma extensão de arquivo, como .txt, mas não precisam ter uma. Quando você começa a trabalhar com o shell, isso, às vezes, torna difícil para iniciantes diferenciar arquivos e diretórios, dependendo do comando que você usar para listar os conteúdos de um diretório. Aprenda mais sobre os comandos básicos do shell em Capítulo 7, Básico do Shell. Se você usa os gerenciadores de arquivos gráficos no GNOME ou KDE (veja Seção “Gerenciando pastas e arquivos com o nautilus” (Capítulo 2, Trabalhando com sua área de trabalho, ↑Guia do Usuário GNOME) e Seção “Using Dolphin File Manager” (Capítulo 2, Working with Your Desktop, ↑Guia do Usuário KDE)), os arquivos e diretórios são simbolizados por vários ícones diferentes, dependendo da visão que você escolher.

Figura 6.3. Arquivo e Diretórios no Gerenciador de Arquivos do KDE

Arquivo e Diretórios no Gerenciador de Arquivos do KDE

Arquivos ocultos

Similar ao Windows, o Linux também distingue entre arquivos normais e arquivos ocultos, que normalmente são arquivos de configuração, os quais você geralmente não quer acessar ou ver como um usuário normal. No Linux, os arquivos ocultos são indicados por um ponto na frente (por exemplo, .arquivo_oculto). Para acessar os arquivos ocultos, você pode alternar a visão nos gerenciadores de arquivo, como descrito em Seção “Using Dolphin File Manager” (Capítulo 2, Working with Your Desktop, ↑Guia do Usuário KDE), ou usar um dado comando no shell, como descrito em Seção 7.2.2, “Usando Comandos com Opções”.

Permissões do sistema de arquivos

Como o Linux é um sistema multiusuário, cada arquivo no sistema de arquivos do Linux pertence a um usuário e a um grupo. Somente o dono do arquivo ou diretório (ou, é claro, o root) pode conceder a outros usuários permissões de acesso a ele. O Linux basicamente distingue entre três diferentes tipos de permissões de acesso: permissão de escrita, permissão de leitura e permissão de de execução. Você só pode acessar um arquivo ou diretório se tiver, pelo menos, a permissão de leitura para ele. Existem várias formas de alterar as permissões de acesso de arquivos e diretórios: ou pela forma tradicional via shell ou com a ajuda do gerenciador de arquivos de sua área de trabalho. Se você possui privilégios de root você também pode alterar o dono e o grupo de um arquivo ou diretório. Aprenda como fazer isto num shell em Seção 7.5, “Modificando Permissões de Arquivo”.

Para mais informações detalhadas sobre as permissões do sistema de arquivos, consulte Seção 6.3, “Permissões de Acesso a Arquivos”. Além do conceito tradicional de permissões para os objetos do sistema de arquivos, também existem extensões disponíveis que podem lidar com as permissões de forma mais flexível. Leia mais em Capítulo Access Control Lists in Linux (↑Guia de Segurança).

6.2.2. A estrutura de diretórios

A seguinte tabela fornece uma breve visão geral dos diretórios mais importantes de alto nível que você encontra em um sistema Linux. Encontre informações mais detalhadas sobre os diretórios e subdiretórios importantes na seguinte lista.

Tabela 6.1. Visão geral de uma árvore de diretórios padrão

Diretório

Conteúdo

/

Diretório raiz—o ponto de início da árvore de diretórios.

/bin

Arquivos executáveis essenciais, como comandos que são necessários tanto para o administrador do sistema como para usuários normais. Geralmente também contém os shells, como o Bash.

/boot

Arquivos estáticos do carregador de inicialização.

/dev

Arquivos necessários para acessar dispositivos específicos da máquina.

/etc

Arquivos de configuração do sistema específicos da máquina.

/home

Contém os diretórios pessoais (home) de todos os usuários que têm contas no sistema. No entanto, o diretório pessoal do root não está localizado em /home mas em /root.

/lib

Bibliotecas compartilhadas essenciais e módulos do kernel.

/media

Pontos de montagem para mídias removíveis.

/mnt

Ponto de montagem para montagem temporária de um sistema de arquivos.

/opt

Pacotes de softwares de aplicativos complementares.

/root

Diretório pessoal para o superusuário root.

/sbin

Executáveis essenciais do sistema.

/srv

Dados para serviços fornecidos pelo sistema.

/tmp

Arquivos temporários.

/usr

Hierarquia secundária com dados somente leitura.

/var

Dados variáveis como arquivos de log.

/windows

Somente disponível se você tem ambos, Microsoft Windows* e Linux, instalados no seu sistema. Contém os dados do Windows.


A lista a seguir fornece informação mais detalhada e fornece alguns exemplos de quais arquivos e subdiretórios podem ser encontrados nos diretórios:

/bin

Contém os comandos básicos do shell que podem ser usados por ambos, o root e outros usuários. Estes comandos incluem o ls, mkdir, cp, mv, rm e rmdir. O diretório /bin também contém o Bash, o shell padrão no openSUSE.

/boot

Contém os dados necessários para a inicialização, como o carregador de inicialização, o kernel e outros dados que são usados antes que o kernel comece a executar os programas no modo usuário.

/dev

Contém os arquivos de dispositivo que representam os componentes de hardware.

/etc

Contém arquivos de configuração local que controlam a operação de programas como o sistema X Window. O subdiretório /etc/init.d contém scripts que são executados durante o processo de inicialização.

/home/nome_de_usuário

Contém os dados privados de cada usuário que tem uma conta no sistema. Os arquivos localizados aqui podem ser modificados somente pelos seus donos ou pelo administrador do sistema. Por padrão, seu diretório de e-mails e configurações pessoais da área de trabalho estão localizados aqui na forma de arquivos e diretórios ocultos. Os usuários do KDE encontram os dados de configuração pessoais para sua área de trabalho em .kde4. Os usuários do GNOME os encontram em .gconf. Para informações sobre arquivos ocultos, consulte Seção 6.2.1, “Recursos Chave”.

[Note]Diretório pessoal em um ambiente de rede

Se você estiver trabalhando em um ambiente de rede, seu diretório pessoal pode ser mapeado para um diretório no sistema de arquivos diferente de /home.

/lib

Contém as bibliotecas compartilhadas essenciais necessárias para inicializar o sistema e executar comandos no sistema de arquivos raiz. O equivalente no Windows para as bibliotecas compartilhadas são os arquivos DLL.

/media

Contém pontos de montagem para mídias removíveis como CD-ROMs, pendrives USB e câmeras digitais (se elas forem USB). /media geralmente contém qualquer tipo de unidade, exceto a unidade de disco de seu sistema. Tão logo sua mídia removível seja inserida ou conectada no sistema e montada, você pode acessá-la daqui.

/mnt

Este diretório fornece um ponto de montagem para um sistema de arquivos montado temporariamente. O root pode montar sistemas de arquivos aqui.

/opt

Reservado para a instalação de software de terceiros. Softwares opcionais e pacotes de programas complementares podem ser encontrados aqui.

/root

Diretório pessoal para o usuário root. Os dados pessoais do root estão localizados aqui.

/sbin

Como o s indica, este diretório contém os utilitários para o superusuário. O /sbin contém os executáveis essenciais para a inicialização, restauração e recuperação do sistema em adição aos executáveis do diretório /bin.

/srv

Contém dados para serviços fornecidos pelo sistema, como FTP e HTTP.

/tmp

Este diretório é usado por programas que necessitam de armazenamento temporário de arquivos.

[Important]Limpando o /tmp na inicialização

Os dados armazenados em /tmp não estão garantidos que sobrevivam a uma reinicialização do sistema. Isto depende, por exemplo, da configuração em /etc/sysconfig/cron.

/usr

/usr não tem nada a ver com usuários, mas é o acrônimo para UNIX system resources (recursos do sistema UNIX). Os dados em /usr são estáticos e permitem somente leitura, podendo ser compartilhados entre várias máquinas compatíveis com o FHS (Filesystem Hierarchy Standard - Padrão de Hierarquia de Sistema de Arquivos). Este diretório contém todos os programas aplicativos e estabelece uma segunda hierarquia no sistema de arquivos. O KDE4 e o GNOME também estão localizados aqui. O diretório /usr contém vários subdiretórios, como /usr/bin, /usr/sbin, /usr/local e /usr/share/doc.

/usr/bin

Contém programas geralmente acessíveis.

/usr/sbin

Contém daemons do sistema e programas reservados para o administrador do sistema que não são essenciais para a inicialização do sistema.

/usr/local

Neste diretório, o administrador do sistema pode instalar extensões locais, independentes da distribuição.

/usr/share/doc

Contém vários arquivos de documentação e as notas de lançamento para o seu sistema. No subdiretório manual encontre uma versão online deste manual. Se mais de um idioma estiver instalado, o diretório pode conter versões deste manual para diferentes idiomas.

Em packages encontre a documentação incluída nos pacotes de software instalados no seu sistema. Para cada pacote, um subdiretório /usr/share/doc/packages/nomedopacote é criado, e, frequentemente, contém arquivos README para o pacote e, às vezes, exemplos, arquivos de configuração ou scripts adicionais.

Se HOWTOs estiverem instalados no seu sistema, o /usr/share/doc também conterá o subdiretório howto, no qual você irá encontrar documentação adicional para várias tarefas relacionadas à configuração e operação do software Linux.

/var

Enquanto /usr contém dados estáticos, apenas com permissão de leitura, o diretório /var é para dados que são escritos durante a operação do sistema, e, portanto, são dados variáveis, como arquivos de log ou dados de filas (spooling). Para um resumo dos arquivos de logs mais importantes que você pode encontrar em /var/log/, consulte Tabela 9.1, “Arquivos de log”.

/windows

Disponível somente se você tiver ambos, Microsoft Windows e Linux, instalados no seu sistema. Contém os dados do Windows disponíveis na partição Windows do seu sistema. A possibilidade de edição dos dados neste diretório depende do sistema de arquivos que sua partição Windows usa. Se ele for FAT32, você pode abrir e editar arquivos neste diretório. Para NTFS, o openSUSE também inclui suporte de permissão de escrita. No entanto, o driver para o sistema de arquivos NTFS-3g tem funcionalidade limitada;. Aprenda mais em Seção “Accessing Files on Different OS on the Same Computer” (Capítulo 34, Copying and Sharing Files, ↑Guia de Referência).

6.3. Permissões de Acesso a Arquivos

No Linux, objetos como arquivos, pastas ou processos, geralmente pertencem ao usuário que os criou ou os inicializou. Há algumas exceções a essa regra. Para mais informações sobre as exceções, consulte Capítulo Access Control Lists in Linux (↑Guia de Segurança). O grupo associado ao arquivo ou pasta depende do grupo primário ao qual o usuário que criou o objeto pertence.

Quando você cria um novo arquivo ou diretório, a permissão de acesso inicial para esse objeto é definido de acordo com o esquema predefinido. Como o dono do arquivo ou diretório, você pode trocar a permissão de acesso desse objeto. Por exemplo, você pode proteger arquivos que contêm dados sensíveis contra leitura por usuários e você pode autorizar os membros do seu grupo ou outros usuários a escrever, ler ou executar alguns de seus arquivos, onde for apropriado. Como root, você também pode trocar o dono de arquivos ou pastas.

6.3.1. Permissões para Usuários, Grupos e Outros

Três conjuntos de permissões são definidas para cada arquivo no sistema Linux. Esses conjuntos incluem permissões de leitura, escrita e execução para cada um dos três tipos de usuários — o dono, o grupo e outros usuários. Você pode ver e trocar as permissões de acesso de um arquivo ou pasta nos gerenciadores de arquivos de sua área de trabalho ou no shell (veja Seção 7.5, “Modificando Permissões de Arquivo”).

Figura 6.4. Permissões de Acesso a Arquivos no Gerenciador de Arquivos do KDE

Permissões de Acesso a Arquivos no Gerenciador de Arquivos do KDE

Os exemplos a seguir mostram a saída de um comando ls -l no terminal. Esse comando lista o conteúdo de um diretório e mostra os detalhes de cada arquivo ou pasta no diretório.

Exemplo 6.1. Permissões de Acesso para Arquivos e Pastas

-rw-r----- 1 tux users      0 2006-06-23 16:08 checklist.txt
-rw-r--r-- 1 tux users  53279 2006-06-21 13:16 gnome_quick.xml
-rw-rw---- 1 tux users      0 2006-06-23 16:08 index.htm
-rw-r--r-- 1 tux users  70733 2006-06-21 09:35 kde-start.xml
-rw-r--r-- 1 tux users  47896 2006-06-21 09:46 kde_quick.xml
drwxr-xr-x 2 tux users     48 2006-06-23 16:09 local
-r-xr-xr-x 1 tux users 624398 2006-06-23 15:43 tux.jpg

Como mostrado na terceira coluna, todos objetos pertencem ao usuário tux. Eles são atribuídos ao grupo users, que é o grupo primário ao qual o usuário tux pertence. Para recuperar as permissões de acesso, a primeira coluna da lista precisa ser examinada mais detalhadamente. Vamos olhar o arquivo kde-start.xml:

Tipo

Permissões do usuário

Permissões do grupo

Permissões para outros

-

rw-

r--

r--

A primeira coluna da lista consiste em um caractere inicial seguido por nove caracteres agrupados em três blocos. O caractere inicial indica o tipo de arquivo do objeto: neste caso, o hífen () mostra que o kde-start.xml é um arquivo. Se você encontrar o o caractere d, significa que o objeto é um diretório, como local em Exemplo 6.1, “Permissões de Acesso para Arquivos e Pastas”.

Os próximos três blocos mostram as permissões de acesso para o dono, o grupo e outros usuários (da esquerda para direita). Cada bloco segue o mesmo padrão: a primeira posição mostra a permissão de leitura (r), a posição seguinte mostra a permissão de escrita (w), a último mostra a permissão de execução (x). A falta de qualquer permissão é indicada pelo -. Em nosso exemplo, o dono do kde-start.xml tem acesso para leitura e escrita no arquivo, mas não pode executá-lo. O grupo users pode ler o arquivo, mas não pode escrevê-lo ou executá-lo. O mesmo se mantém para outros usuário que são mostrados no terceiro bloco de caracteres.

6.3.2. Arquivos e Pastas

As permissões de acesso têm um impacto ligeiramente diferente dependendo do tipo de objeto ao qual elas são aplicadas: arquivos ou diretórios. A seguinte tabela mostra os detalhes:

Tabela 6.2. Permissões de Acesso para Arquivos e Diretórios

Permissão de acesso

Arquivo

Pasta

Leitura (r)

Usuários podem abrir e ler o arquivo.

OS usuários podem ver o conteúdo do diretório. Sem essa permissão, os usuários não podem listar o conteúdo desse diretório com o comando ls -l, por exemplo. No entanto, se os usuários possuírem apenas a permissão de execução nesse diretório, eles podem, mesmo assim, acessar determinados arquivos nesse diretório se souberem de sua existência.

Escrever (w)

Os usuários podem alterar o arquivo: eles podem adicionar ou retirar dados e sempre podem remover o conteúdo do arquivo. No entanto, isso não inclui a permissão para remover completamente o arquivo do diretório se eles não tiverem permissão de escrita para o diretório onde o arquivo está localizado.

Os usuários podem criar, renomear ou remover os arquivos no diretório.

Executar (x)

Os usuários podem executar o arquivo. Essa permissão é a única relevante para arquivos como programas ou shell scripts, mas não para arquivos de texto. Se o sistema operacional puder executar o arquivo diretamente, os usuários não precisam de permissão de leitura para executar o arquivo. No entanto, se o arquivo precisar ser interpretado como um shell script ou programa em perl, a permissão de leitura é necessária.

Os usuários podem acessar o diretório e executar arquivos de lá. Se eles não possuírem acesso para leitura no diretório, eles não podem listar os arquivos, mas podem executá-los se souberem de sua existência.


Note que o acesso para um certo arquivo sempre depende da combinação das permissões de acesso para ele e para o diretório no qual ele se localiza.