Skip to main content dev:Coelho

Sistemas Operacionais II - Resumo Para Prova

Sistemas Operacionais II - Guia de Estudo Linux

Adaptado do resumo realizado por DryCaleffi.

1. Introdução ao Linux

1.1 História e Características

  • Criado por: Linus Torvalds em 1991 na Universidade de Helsinki, Finlândia
  • Primeira versão oficial: 1992
  • Licença: Código aberto, distribuído gratuitamente pela Internet

1.2 Principais características

  • Multiusuário: Vários usuários podem utilizar o sistema simultaneamente
  • Multitarefa: Executa múltiplos programas ao mesmo tempo
  • Multiplataforma: Funciona em diferentes arquiteturas de hardware
  • Multiprocessador: Suporta sistemas com mais de um processador
  • Case sensitive: Diferencia letras maiúsculas e minúsculas
  • Segurança: Sistema de permissões para arquivos, diretórios e programas

1.3 Estrutura do Sistema

  • Kernel: Núcleo do sistema, responsável pelo funcionamento da máquina e interação com periféricos
  • Shell: Interface pela qual o usuário interage com o sistema operacional
  • Aplicativos: Programas e utilitários fornecidos com o sistema ou instalados posteriormente

1.4 Distribuições Linux

Algumas das principais distribuições mencionadas no material:

  • Red Hat: Pioneira, voltada para servidores, criadora do formato RPM
  • Debian: Base para muitas outras distribuições, inclui Ubuntu
  • SuSE: Distribuição alemã, grande influência no mercado empresarial
  • Slackware: Uma das mais antigas, focada em estabilidade e simplicidade
  • Fedora: Desenvolvida pela Red Hat, para desktops
  • Ubuntu: Baseada em Debian, popular para desktops e iniciantes

2. Estrutura de Diretórios

2.1 Hierarquia de Arquivos

O Linux segue uma estrutura hierárquica padrão em formato de árvore, onde todos os diretórios partem de um diretório raiz. Esta organização facilita a administração do sistema e a localização de arquivos.

DiretórioDescrição
/Diretório raiz, todos os outros estão abaixo dele
/binComandos essenciais do sistema utilizados com frequência
/bootArquivos estáticos e gerenciador de inicialização
/devArquivos de dispositivos (periféricos)
/etcArquivos de configuração do sistema, específicos da máquina
/homeDiretórios dos usuários
/libBibliotecas essenciais compartilhadas e módulos do kernel
/mntPonto de montagem para sistemas de arquivos temporários
/procDiretório virtual de informações do sistema
/rootDiretório home do usuário root
/sbinProgramas usados pelo root para administração do sistema
/tmpArquivos temporários
/usrMaior parte dos programas instalados
/varDados variáveis, logs e arquivos de spool
/optAplicativos adicionais e pacotes de software

2.2 Sistemas de Arquivos

  • Partições: Divisões no HD que marcam onde começa e termina um sistema de arquivos
  • Sistemas de arquivos comuns: EXT2, EXT3, EXT4, FAT, FAT32
  • Swap: Partição utilizada como memória virtual pelo sistema

3. Navegação e Comandos Básicos

3.1 Navegação Básica

ComandoDescriçãoExemplo
pwdMostra o diretório atualpwd
cdMuda de diretóriocd /home/usuario
cd ..Volta para o diretório paicd ..
cd /Vai direto para o diretório raizcd /
cd ~Vai para o diretório home do usuáriocd ~
lsLista arquivos e diretóriosls -la
treeMostra estrutura de diretórios em formato de árvoretree /home
Opções importantes do comando ls
  • ls -l: Lista com detalhes (permissões, tamanho, data)
  • ls -a: Lista incluindo arquivos ocultos (que começam com ponto)
  • ls -la: Combina as opções acima
  • ls -R: Lista recursivamente (incluindo subdiretórios)
  • ls -h: Exibe os tamanhos em formato legível para humanos

3.2 Manipulação de Arquivos e Diretórios

ComandoDescriçãoExemplo
mkdirCria um diretóriomkdir /home/empresa
rmdirRemove diretórios vaziosrmdir diretorio
touchCria arquivo vazio ou atualiza timestamptouch arquivo.txt
catMostra conteúdo de arquivoscat /etc/hosts
headMostra primeiras linhas de um arquivohead -10 arquivo.txt
tailMostra últimas linhas de um arquivotail -f /var/log/messages
moreMostra conteúdo com pausa por páginacat arquivo.txt | more
lessSimilar ao more, com navegação mais flexívelless arquivo.txt
cpCopia arquivos e diretórioscp -r /home/arq /backup
mvMove/renomeia arquivos e diretóriosmv arquivo.txt novo.txt
rmRemove arquivosrm -rf diretorio
lnCria linksln -s /etc/hosts hosts
wcConta linhas, palavras e caractereswc -l arquivo.txt
Operações avançadas
  • Redirecionamento de entrada/saída:

    • comando > arquivo: Redireciona saída para um arquivo (sobrescreve)
    • comando >> arquivo: Adiciona saída ao final de um arquivo
    • comando < arquivo: Usa arquivo como entrada para comando
  • Filtragem com pipes:

    • comando1 | comando2: A saída do comando1 é entrada para comando2
    • Exemplo: cat arquivo.txt | grep "texto" | wc -l

4. Usuários e Grupos

4.1 Conceitos

  • Usuário: Entidade que identifica quem utiliza o sistema

    • Cada usuário tem um ID único (UID)
    • Tem um diretório home próprio (normalmente em /home/nome_do_usuario)
    • Possui permissões específicas para acesso a arquivos e diretórios
  • Grupo: Conjunto de usuários que compartilham permissões

    • Cada grupo tem um ID único (GID)
    • Permite gerenciar permissões para vários usuários simultaneamente
  • Superusuário (root):

    • Tem poderes totais no sistema
    • Único que pode realizar determinadas tarefas administrativas
    • Identificado pelo nome “root”

4.2 Comandos para Gerenciamento de Usuários e Grupos

ComandoDescriçãoExemplo
useraddAdiciona um novo usuáriouseradd joao
userdelRemove um usuáriouserdel joao
passwdDefine ou altera a senha de um usuáriopasswd joao
groupaddCria um novo grupogroupadd rh
groupdelRemove um grupogroupdel rh
usermodModifica configurações de um usuário existenteusermod -a -G rh joao
chownAltera o dono de arquivos/diretórioschown joao:rh arquivo
chgrpAltera o grupo de arquivos/diretórioschgrp rh arquivo
Opções importantes do comando usermod
  • usermod -a -G grupo usuario: Adiciona usuário a um grupo secundário
  • usermod -g grupo usuario: Define o grupo primário do usuário
  • usermod -d diretorio usuario: Altera o diretório home do usuário

5. Permissões de Arquivos

5.1 Sistema de Permissões

No Linux, cada arquivo e diretório possui três tipos de permissões para três categorias de usuários:

Tipos de permissões:
  • r (read): Permissão de leitura (valor 4)
  • w (write): Permissão de escrita (valor 2)
  • x (execute): Permissão de execução (valor 1)
Categorias de usuários:
  • Dono (owner): O usuário proprietário do arquivo
  • Grupo (group): O grupo ao qual o arquivo pertence
  • Outros (others): Todos os demais usuários

5.2 Representação das Permissões

As permissões são representadas de duas formas:

Representação simbólica:

code snippet start

-rwxrw-r--

code snippet end

Onde:

  • Primeiro caractere: Tipo de arquivo (- para arquivo regular, d para diretório)
  • Próximos 3 caracteres: Permissões do dono (rwx)
  • Próximos 3 caracteres: Permissões do grupo (rw-)
  • Últimos 3 caracteres: Permissões para outros (r–)
Representação numérica:

Usando os valores:

  • r = 4
  • w = 2
  • x = 1

Somando-se os valores para cada categoria:

  • 7 (rwx) = 4+2+1
  • 6 (rw-) = 4+2
  • 4 (r–) = 4

Exemplo: A permissão rwxrw-r-- corresponde a 764 em formato numérico.

5.3 Alterando Permissões

ComandoDescriçãoExemplo
chmod 755 arquivoDefine permissões rwxr-xr-xchmod 755 arquivo
chmod u+x arquivoAdiciona permissão de execução para o donochmod u+x arquivo
chmod g-w arquivoRemove permissão de escrita para o grupochmod g-w arquivo
chmod o=r arquivoDefine permissão de somente leitura para outroschmod o=r arquivo

6. Editores de Texto

6.1 Vi/Vim

  • Editor de texto poderoso presente em praticamente todas as distribuições Linux
  • Modos de operação:
    • Modo de comando: Permite navegar e executar comandos
    • Modo de inserção: Permite inserir texto
ComandoDescrição
vi arquivoAbre um arquivo no vi
iEntra em modo de inserção
EscVolta ao modo de comando
:wSalva o arquivo
:qSai do editor
:wqSalva e sai
:q!Sai sem salvar
ddApaga linha atual
yyCopia linha atual
pCola texto copiado
/textoBusca por “texto”

6.2 Nano

  • Editor mais simples e amigável
  • Comandos são exibidos na parte inferior da tela
  • Utiliza combinações de teclas Ctrl+letra

7. Ferramentas Adicionais

7.1 Filtros e Buscas

ComandoDescriçãoExemplo
grepBusca padrões em arquivosgrep "termo" arquivo.txt
findBusca arquivos no sistemafind /home -name "*.txt"
duMostra uso do discodu -hs /home
dfMostra espaço livre em discodf -h

7.2 Gerenciamento do Sistema

ComandoDescriçãoExemplo
shutdownDesliga ou reinicia o sistemashutdown -h now
rebootReinicia o sistemareboot
ifconfigConfigura interfaces de redeifconfig eth0 up
psMostra processos em execuçãops aux
topMonitora processos em tempo realtop
killTermina processoskill -9 1234

8. Exemplos Práticos

8.1 Gerenciamento de Usuários e Grupos

  1. Criar um usuário:

    bash code snippet start

    useradd usuario
    passwd usuario

    bash code snippet end

  2. Criar um grupo:

    bash code snippet start

    groupadd grupo

    bash code snippet end

  3. Adicionar usuário a um grupo:

    bash code snippet start

    usermod -a -G grupo usuario

    bash code snippet end

  4. Definir dono e grupo para arquivos:

    bash code snippet start

    chown usuario:grupo arquivo

    bash code snippet end

8.2 Gerenciamento de Permissões

  1. Alterar permissões de arquivos:

    bash code snippet start

    chmod 770 diretorio

    bash code snippet end

  2. Definir permissões específicas:

    bash code snippet start

    chmod u+x arquivo  # Adiciona permissão de execução para o dono
    chmod g-w arquivo  # Remove permissão de escrita para o grupo
    chmod o=r arquivo  # Define permissão de somente leitura para outros

    bash code snippet end

8.3 Manipulação de Arquivos

  1. Criar arquivos vazios:

    bash code snippet start

    touch arquivo

    bash code snippet end

  2. Criar e modificar conteúdo de arquivos:

    bash code snippet start

    echo "Conteúdo do arquivo" > arquivo
    echo "Mais conteúdo" >> arquivo

    bash code snippet end

  3. Visualizar conteúdo:

    bash code snippet start

    cat arquivo
    more arquivo
    less arquivo

    bash code snippet end

  4. Copiar, mover e renomear:

    bash code snippet start

    cp origem destino
    mv origem destino
    mv arquivo novo_nome

    bash code snippet end

8.4 Estrutura de Diretórios

  1. Navegar pela estrutura:

    bash code snippet start

    cd /home/usuario
    cd ..
    cd /

    bash code snippet end

  2. Criar árvores de diretórios:

    bash code snippet start

    mkdir -p dir1/dir2/dir3

    bash code snippet end

  3. Listar arquivos:

    bash code snippet start

    ls -la

    bash code snippet end

  4. Mostrar caminho atual:

    bash code snippet start

    pwd

    bash code snippet end

9. Exemplos de Exercícios Práticos

Exercício 1: Navegação e Manipulação de Arquivos

  1. Logar como usuário root
  2. Verificar diretório atual (pwd)
  3. Acessar o diretório raiz (cd /)
  4. Acessar o diretório home (cd home)
  5. Criar um diretório chamado “fatecmm” (mkdir fatecmm)
  6. Acessar o diretório criado (cd fatecmm)
  7. Criar uma estrutura de diretórios:

    bash code snippet start

    mkdir -p bloco1/mp bloco1/pm bloco2/ads bloco3/adm

    bash code snippet end

  8. Criar arquivos vazios em diferentes diretórios:

    bash code snippet start

    touch bloco1/mp/mp1
    touch bloco1/pm/pm1 bloco1/pm/pm2
    touch bloco2/ads/ads1 bloco2/ads/ads2
    echo "Nome: Seu Nome" > bloco3/adm/adm
    echo "RA: Seu RA" >> bloco3/adm/adm

    bash code snippet end

  9. Manipular arquivos e diretórios:

    bash code snippet start

    cat bloco3/adm/adm bloco2/ads/ads2 > adm_ads2
    cp bloco3/adm/adm bloco2/ads/admads
    cp bloco2/ads/ads1 bloco2/ads/ads2 bloco1/

    bash code snippet end

  10. Remover diretórios:

    bash code snippet start

    rm -rf bloco3
    rm -rf bloco2
    rm -rf bloco1

    bash code snippet end

Exercício 2: Gerenciamento de Usuários e Permissões

  1. Preparar ambiente:

    bash code snippet start

    mkdir /home/empresa
    cd /home/empresa
    touch inicioempresa
    echo "Este é o arquivo inicial da empresa" > inicioempresa
    mkdir recursoshumanos financeiro ti logistica

    bash code snippet end

  2. Criar usuários:

    bash code snippet start

    useradd joao
    useradd maria
    useradd marcos
    useradd ze
    useradd pedro
    useradd marina
    
    passwd joao    # Definir senhas
    passwd maria
    passwd marcos
    passwd ze
    passwd pedro
    passwd marina

    bash code snippet end

  3. Criar grupos:

    bash code snippet start

    groupadd rh
    groupadd informatica
    groupadd financeiro
    groupadd logistica

    bash code snippet end

  4. Adicionar usuários aos grupos:

    bash code snippet start

    usermod -a -G rh joao
    usermod -a -G rh maria
    usermod -a -G informatica pedro
    usermod -a -G financeiro marina
    usermod -a -G logistica marcos
    usermod -a -G logistica ze

    bash code snippet end

  5. Alterar donos e grupos:

    bash code snippet start

    chown joao recursoshumanos
    chown pedro ti
    chown marcos logistica
    chown marina financeiro
    
    chown :rh recursoshumanos
    chown :informatica ti
    chown :logistica logistica
    chown :financeiro financeiro

    bash code snippet end

  6. Definir permissões:

    bash code snippet start

    chmod 770 recursoshumanos
    chmod 770 financeiro
    chmod 770 ti
    chmod 770 logistica

    bash code snippet end

  7. Testar permissões (abra terminais para cada usuário e tente acessar diferentes diretórios)

10. Instalação e Configuração de Serviços

O Linux permite a instalação e configuração de diversos serviços para diferentes finalidades. Um exemplo é o Nagios, uma ferramenta de monitoramento de rede.

10.1 Instalação do Nagios

Antes de instalar o Nagios, é necessário instalar algumas dependências:

bash code snippet start

apt update
apt install apache2 libapache2-mod-php php
apt install wget unzip zip autoconf gcc libc6 make apache2-utils libgd-dev

bash code snippet end

Em seguida, crie um usuário específico para o Nagios:

bash code snippet start

useradd nagios
usermod -a -G nagios www-data

bash code snippet end

Baixe, descompacte e instale o Nagios:

bash code snippet start

wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.6.tar.gz
tar xzf nagios-4.4.6.tar.gz
cd nagios-4.4.6/
./configure --with-httpd-conf=/etc/apache2/sites-enabled
make all
make install
make install-init
make install-commandmode
systemctl enable nagios.service
make install-config
make install-webconf

bash code snippet end

Configure as credenciais de acesso:

bash code snippet start

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

bash code snippet end

Habilite o módulo CGI do Apache e inicie os serviços:

bash code snippet start

a2enmod cgi
systemctl restart apache2
systemctl start nagios
systemctl enable nagios

bash code snippet end

11. Dicas para a Prova

  1. Pratique os comandos:

    • Tente realizar os exercícios propostos
    • Crie seu próprio ambiente para praticar (máquina virtual Linux)
  2. Entenda os conceitos:

    • Hierarquia do sistema de arquivos
    • Sistema de permissões
    • Funcionamento de usuários e grupos
  3. Memorize os comandos essenciais:

    • Navegação: cd, ls, pwd
    • Manipulação: cp, mv, rm, mkdir
    • Visualização: cat, more, head, tail
    • Permissões: chmod, chown, chgrp
    • Usuários: useradd, passwd, groupadd
  4. Estude as opções dos comandos:

    • -r ou -R para operações recursivas
    • -a para mostrar arquivos ocultos
    • -h para saída “human-readable”
    • -l para listagem detalhada
  5. Atenção às permissões:

    • Formato simbólico (rwx)
    • Formato numérico (755, 644)
    • Diferenças entre permissões para arquivos e diretórios

12. Tabela de Referência Rápida de Comandos

ComandoFunçãoOpções Comuns
lsLista arquivos-l (formato longo), -a (arquivos ocultos), -h (tamanhos legíveis)
cdMuda diretóriocd /caminho, cd .. (diretório pai), cd ~ (home)
pwdMostra diretório atual-
catMostra conteúdocat arquivo, cat > arquivo (criar), cat >> arquivo (adicionar)
touchCria arquivo vaziotouch arquivo
mkdirCria diretório-p (cria diretórios pai se necessário)
rmRemove arquivo-r (recursivo), -f (forçado), -i (interativo)
cpCopia arquivo-r (recursivo), -v (verbose)
mvMove/renomeia-v (verbose)
chmodAltera permissõeschmod 755 arquivo, chmod u+x arquivo
chownAltera donochown usuario:grupo arquivo
grepBusca padrões-i (ignora case), -r (recursivo)
findBusca arquivos-name "padrão", -type f (arquivos), -type d (diretórios)
duUso do disco-h (legível), -s (resumo)
dfEspaço em disco-h (legível)
vi/vimEditor de texto-
useraddAdiciona usuário-m (cria home), -G (adiciona a grupos)
passwdDefine senhapasswd usuario
groupaddCria grupo-
whoUsuários conectados-
psProcessos em execuçãoaux (todos os processos)
topMonitor de processos-
killTermina processo-9 (força término)
shutdownDesliga sistema-h now (desliga agora), -r (reinicia)
headPrimeiras linhas-n (número de linhas)
tailÚltimas linhas-n (número de linhas), -f (acompanha atualizações)
wcConta linhas/palavras-l (linhas), -w (palavras), -c (caracteres)
lnCria links-s (link simbólico)
historyHistórico de comandoshistory