UNIX: O ambiente de trabalho
Sessão de trabalho
O uso de UNIX se baseia na noção de sessão de trabalho. Cada usuário é designado por um nome de login, ou simplesmente login, com uma senha secreta associada. Uma sessão de trabalho típica consiste das seguintes etapas:
- O usuário identifica-se, fornecendo seu nome de login e sua senha ao sistema.
- A sessão de trabalho inicia, com o lançamento do shell (modo texto) ou do ambiente (modo gráfico).
- Uso do sistema (lançamento de comandos e aplicações).
- Fim da sessão (operação de logout ou logoff).
O UNIX pode gerenciar diversas sessões simultâneas de usuários distintos na mesma máquina. Cada um terá uma visão independente e transparente dos recursos disponíveis, sem conflitos ou interferências.
Interfaces gráficas
No UNIX a interface gráfica é completamente separada do núcleo do sistema operacional. Isso permite uma grande versatilidade em relação aos ambientes gráficos disponíveis. A interface gráfica é construída em dois níveis:
- O servidor gráfico X-Window, que oferece as funcionalidades gráficas básicas, gerencia entidades básicas como regiões de tela e trata eventos relacionados à interface (como operações de mouse e teclado).
- O ambiente de trabalho, composto por vários processos, que implementam a decoração das janelas, menus, ícones, desktops virtuais, etc.
Algumas características importantes diferenciam a arquitetura gráfica do UNIX daquela implantada em outros sistemas:
- O ambiente gráfico é implementado fora do núcleo. Com isso eventuais falhas na interface gráfica não comprometem a estabilidade do sistema.
- A comunicação entre o servidor gráfico, o ambiente e as aplicações é feita através de sockets TCP/IP, usando um protocolo especial chamado X-Protocol. Com isso é possível estabelecer conexões gráficas entre aplicações e servidores gráficos em máquinas separadas.
- Os processos que implementam o ambiente de trabalham são executados com o identificador do usuário (UID), com isso várias sessões gráficas distintas podem ser suportadas na mesma máquina, em displays distintos.
- Existem dezenas de possibilidades de ambientes gráficos distintos, à escolha do usuário. As aplicações gráficas irão executar sobre todos eles, sem necessidade de versões específicas para um ou outro ambiente.
Os ambientes gráficos usados em nosso curso são o KDE e o Gnome, que executam sobre um processo servidor X-Window padrão (X.Org).
Documentação on-line
O sistema UNIX implementa um sistema de documentação on-line simples, mas bastante útil e eficiente, chamado páginas de manual (man pages). As páginas de manual estão estruturadas em sessões:
- Sessão 1: Comandos do usuário.
- Sessão 2: Chamadas ao sistema operacional (em linguagem C)
- Sessão 3: Bibliotecas e funções standard (idem)
- Sessão 4: Descrição de dispositivos e formatos de arquivos de dados
- Sessão 5: Formato de arquivos de configuração
- Sessão 6: Jogos
- Sessão 7: Diversos
- Sessão 8: Comandos de administração do sistema
O acesso às páginas de manual é normalmente efetuado através do comando man. Assim, man ls apresenta a página de manual do comando ls, enquanto man man apresenta a página de manual do próprio comando man.
Os ambientes gráficos oferecem ferramentas gráficas para a consulta às páginas de manual, geralmente acessíveis através de um ícone na barra de ferramentas.
Usuários e grupos
A noção de usuário está muito presente em UNIX:
- Cada usuário registrado possui um nome de login, uma senha e um identificador numérico associado (UID).
- Os usuários são organizados em grupos.
- Um usuário sempre pertence a um grupo primário e pode pertencer a outros grupos secundários.
- Cada grupo é identificado por um nome e um identificador de grupo (GID).
- O comando
id
user permite visualizar as informações de usuários e grupos. - O comando
finger
user oferece informações adicionais sobre um usuário.
A informação de usuário e grupo é usada pelo sistema para gerenciar o acesso aos recursos (arquivos e diretórios) e para a gerência dos processos de usuários distintos.
O usuário root e outros usuários especiais
O usuário com UID = 0 é chamado “root” e possui poderes especiais no sistema:
- Acesso a todos os arquivos e diretórios
- Reboot/shutdown do sistema
- Lançamento e cancelamento de qualquer processo
- Montagem de diretórios de rede e de dispositivos externos
Assim, torna-se óbvio que a senha de root é de grande importância para a segurança do sistema.
Além do root, outros usuários são definidos para a implantação de serviços específicos. Esse é o caso dos usuários “bin”, “daemon”,“lp”, “mail”, “news”, “ftp” e “nobody”, que não correspondem a seres humanos. Normalmente esses usuários não são acessíveis via login, existindo apenas internamente no sistema.
O shell básico
O shell é um programa que permite o uso do sistema através de uma interface em linha de comandos. Existem diversos estilos de shell, sendo os mais comuns o Bourne Shell (sh) e o C-Shell (csh). Neste curso usaremos o BASH (Bourne Again SHell), escolhido por ser o shell padrão na maior parte dos sistemas UNIX.
Apesar da interface em linha de comandos ser um conceito considerado antiquado, o shell oferece mecanismos para tornar a vida do usuário mais simples e produtiva. Além disso, é uma ferramenta de valor inestimável para operações em máquinas remotas.
O sistema de arquivos
O sistema de arquivos do UNIX possui as seguintes características fundamentais:
- É estruturado na forma de uma árvore única, iniciando pelo diretório “/”, que é chamado de “raiz”.
- Há suporte para arquivos, diretórios e links (atalhos).
- Os arquivos podem ter qualquer nome, usando quaisquer caracteres, com distinção entre maiúsculas e minúsculas. Os nomes são normalmente limitados a 255 caracteres.
- O caractere separador de diretórios é o “/” (barra).
- Arquivos e diretórios cujos nomes começam com “.” (ponto) são considerados “ocultos” e normalmente não aparecem nas listagens de diretórios.
- As extensões são normalmente usadas apenas para facilitar a vida do usuário, mas não são importantes para o sistema operacional, que não depende delas para identificar o conteúdo de um arquivo.
- Os arquivos e diretórios possuem permissões de acesso controláveis por seus proprietários.
Principais diretórios
Os diretórios de um sistema de arquivos UNIX têm uma estrutura pré-definida, com poucas variações. A seguir ilustramos os principais:
/home
: raiz dos diretórios home dos usuários./boot
: arquivos de boot (núcleo do sistema, etc)/var
: arquivos variáveis, áreas de spool (impressão, e-mail, news), arquivos de log/etc
: arquivos de configuração dos serviços/usr
: aplicações voltadas aos usuários/tmp
: arquivos temporários/mnt
: montagem de diretórios compartilhados temporários/bin
: aplicações de base para o sistema/dev
: arquivos de acesso aos dispositivos físicos e conexões de rede/lib
: bibliotecas básicas do sistema
O diretório HOME
Cada usuário possui um diretório especial, chamado “diretório home” (casa), onde são armazenados:
- arquivos e diretórios pessoais de trabalho
- e-mails já lidos (folders pessoais)
- arquivos de configuração individuais
- configuração das aplicações usadas
O diretório home do usuário é o seu local de início de sessão de trabalho (via shell ou gráfica). O usuário possui plenos poderes de acesso ao seu diretório home (e seus sub-diretórios), e normalmente não pode criar arquivos fora dele. O diretório home de cada usuário é normalmente inacessível aos outros usuários, mas isso pode ser controlado pelo administrador do sistema (root).