Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
unix:o_ambiente_de_trabalho [2019/02/19 17:36] – [Usuários e grupos] mazierounix:o_ambiente_de_trabalho [2019/02/19 17:38] (atual) – [O shell básico] maziero
Linha 1: Linha 1:
 +====== 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.
 +
 +{{xwindows.png}}
 +
 +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 [[http://www.kde.org|KDE]] e o [[http://www.gnome.org|Gnome]], que executam sobre um processo servidor X-Window padrão ([[http://www.x.org|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).