UNIX: O ambiente 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.

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).

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.

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 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 é 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 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.

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

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).

  • unix/o_ambiente_de_trabalho.txt
  • Última modificação: 2019/02/19 17:38
  • por maziero