Mudanças entre as edições de "PJI11103-2015-2"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 159: Linha 159:
 
ESC w outroNome.txt </syntaxhighlight>
 
ESC w outroNome.txt </syntaxhighlight>
 
{{collapse bottom}}
 
{{collapse bottom}}
 +
 +
{{Collapse top |Aula 2 - 08/10/15: Formatação, instalação e início da configuração do servidor principal}}
 +
O objetivo inicial é instalar e configurar basicamente o sistema operacional na máquina que atuará como principal servidor da rede.
 +
 +
==Instalando o sistema operacional==
 +
As etapas básicas consistem em:
 +
 +
#Conectar todos os periféricos mínimos na torre recebida e ligá-la à tomada.
 +
#Instalar o sistema operacional lendo com atenção todas as mensagens recebidas e escolhendo adequadamente as opções, com as seguintes características:
 +
##Na etapa de formação escolha formatação manual ou avançada e crie a seguinte tabela de partição: i) / 30 GB ext4; i) /home 30 GB ext4; i) swap 4 GB swap; /var "espaço restante" ext4.
 +
##Se necessário configure manualmente os IPs, conforme passado pelo prof.
 +
##Opte por atualizar automaticamente e baixar aplicativos de terceiros.
 +
##Crie uma conta (que será definitiva) para um dos usuários da equipe, com o respectivo login e senha.
 +
##Aguarde a finalização da instalação e reinicie a máquina.
 +
#Logue na máquina com a conta criada.
 +
 +
==Conferindo e aprendendo sobre instalação de pacotes==
 +
[http://wiki.sj.ifsc.edu.br/images/4/47/InstalacaoPacotes.pdf Slide]). [http://wiki.ubuntu-br.org/AptGet Página oficial do apt-get]
 +
 +
É necessário estar com e rede funcional. Teste com o comando:
 +
ping www.ifsc.edu.br
 +
 +
# Com o '''apt-get --help''' veja quais as opções possíveis que o instalador de pacotes do Ubuntu fornece.
 +
# Sincronize o sistema.
 +
# Atualize as versões de todos os pacotes instalados no sistema.
 +
# Com o '''apt-cache search''' procure por '''sudoku''', escolha o '''sudoku''' (nenhum outro) e instale-o. Após a instalação execute o programa instalado (digite o nome do pacote instalado) e veja se foi instalado corretamente (se rodou).
 +
# Remova o programa instalado no item anterior. Confira se ele realmente foi removido.
 +
 +
==Configuração básica da interface de rede==
 +
#apt-get remove isc-dhcp-client
 +
#vi /etc/network/interfaces <code>
 +
# This file describes the network interfaces available on your system
 +
# and how to activate them. For more information, see interfaces(5).
 +
 +
# The loopback network interface
 +
auto lo eth0
 +
iface lo inet loopback
 +
        address 127.0.0.1
 +
        netmask 255.0.0.0
 +
 +
# a interface ethernet eth0
 +
iface eth0 inet static
 +
address 192.168.2. X
 +
netmask 255.255.255.0
 +
gateway 192.168.2.1
 +
        dns-nameservers 200.135.37.65
 +
</syntaxhighlight>
 +
#ifdown -a && ifup -a
 +
 +
==Habilitando acesso remoto com SSH==
 +
Ver capítulo 33 da [[Media:Gerencia_de_redes.pdf|apostila]].
 +
 +
Atividade individual, cada aluno em sua máquina virtual (PRJ3)
 +
 +
#Instale o SSH em sua máquina.
 +
#Habilite e desabilite o login do root.<syntaxhighlight lang=text>
 +
vi /etc/ssh/sshd_config
 +
  PermitRootLogin yes </syntaxhighlight>
 +
#Reinicie o serviço <syntaxhighlight lang=text>
 +
service ssh restart </syntaxhighlight>
 +
#De sua máquina real conecte e faça testes. <syntaxhighlight lang=text>
 +
ssh aluno@192.168.2.1X </syntaxhighlight>
 +
#Habilite o acesso somente para um conjunto de usuários (desafio).
 +
#Teste.
 +
#Desfaça o anterior. Bloqueie o acesso para um conjunto de usuários (desafio).
 +
#Teste.
 +
#Instale o SSH em sua máquina virtual com ambiente gráfico, Ip 192.168.2.2X.
 +
#Habilite e desabilite o '''X11Forwarding'''.
 +
#Da máquina real teste esta funcionalidade: <syntaxhighlight lang=text>
 +
ssh -X aluno@192.168.2.2X
 +
  firefox </syntaxhighlight>
 +
#Teste a funcionalidade do '''scp''', copiando arquivos locais para o servidor e vice-versa.
 +
#Configure seu par de máquinas, cliente e servidor, para conexão direta, sem pedido de senha (desafio).
 +
#Teste a conexão direta.
 +
#Teste a execução de comandos no seu servidor, sem "sair" do cliente.
 +
#Faça testes fornecendo usuário e/ou senha errados e verifique o ''log'': <syntaxhighlight lang=text>
 +
tail /var/log/auth.log </syntaxhighlight>
 +
#Permitindo acesso ao serviço somente para algumas redes: <syntaxhighlight lang=text>
 +
vi /etc/hosts.allow
 +
      sshd: 1.2.3.0/255.255.255.0
 +
      sshd: 192.168.0.0/255.255.255.0
 +
vi /etc/hosts.deny
 +
      sshd: ALL </syntaxhighlight>
 +
 +
==Usuários e grupos==
 +
Criação de contas de usuários e de grupos, e seu uso para conferir permissões de acesso a arquivos, diretórios e recursos do sistema operacional.
 +
[[Media:Gerencia_de_redes.pdf|Apostila]], páginas 61 a 65.
 +
 +
Slides Aula Tulio: [[Media:SlidesAulaUserGroupPerms.pdf|Slides Aula Usuários, Grupos e Permissões ]]
 +
 +
Um usuário no Linux (e no Unix em geral) é definido pelo seguinte conjunto de informações:
 +
 +
* '''Nome de usuário (ou ''login''):''' um apelido que identifica o usuário no sistema
 +
* '''UID (User Identifier):''' um número único que identifica o usuário
 +
* '''GID (Group Identifier):''' o número do grupo primário do usuário
 +
* '''Senha (password):''' senha para verificação de acesso
 +
* '''Nome completo (''full name''):''' nome completo do usuário
 +
* '''Diretório inicial (''homedir''):''' o subddiretório pessoal do usuário, onde ele é colocado ao entrar no sistema
 +
* '''Shell:''' o programa a ser executado quando o usuário entrar no sistema
 +
 +
As contas de usuários, que contêm as informações acima, podem ficar armazenadas em diferentes bases de dados (chamadas de ''bases de dados de usuários''). Dentre elas, a mais simples é composta pelo arquivo [http://www.kernel.org/doc/man-pages/online/pages/man5/passwd.5.html ''/etc/passwd'']:
 +
 +
root:x:0:0:root:/root:/bin/bash
 +
sshd:x:71:65:SSH daemon:/var/lib/sshd:/bin/false
 +
suse-ncc:x:105:107:Novell Customer Center User:/var/lib/YaST2/suse-ncc-fakehome:/bin/bash
 +
wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false
 +
man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash
 +
news:x:9:13:News system:/etc/news:/bin/bash
 +
uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
 +
roberto:x:1001:100:Roberto de Matos:/data1/roberto:/bin/bash
 +
 +
Acima um exemplo de arquivo ''/etc/passwd''
 +
 +
Cada linha desse arquivo define uma conta de usuário no seguinte formato:
 +
 +
''nome de usuário:senha:UID:GID:Nome completo:Diretório inicial:Shell''
 +
 +
O campo ''senha'' em ''/etc/passwd'' pode assumir os valores:
 +
* ''x'': significa que a senha se encontra em ''/etc/shadow''
 +
* ''*'': significa que a conta está bloqueada
 +
* ''senha encriptada'': a senha de fato, porém encriptada usando algoritmo hash [http://pt.wikipedia.org/wiki/Md5 MD5] ou [http://www.kernel.org/doc/man-pages/online/pages/man3/crypt.3.html crypt]. Porém usualmente a senha fica armazenada no arquivo ''/etc/shadow''.
 +
 +
O arquivo ''/etc/shadow'' armazena exclusivamente as informações relativas a senha e validade da conta. Nele cada conta possui as seguintes informações:
 +
* Nome de usuário
 +
* Senha encriptada (sobrepõe a senha que porventura exista em ''/etc/passwd'')
 +
* Data da última modificação da senha
 +
* Dias até que a senha possa ser modificada (validade mínima da senha)
 +
* Dias após que a senha deve ser modificada
 +
* Dias antes da expiração da senha em que o usuário deve ser alertado
 +
* Dias após a expiração da senha em que a conta é desabilitada
 +
* Data em que a conta foi desabilitada
 +
 +
Um exemplo do arquivo ''/etc/shadow'' segue abaixo:
 +
 +
root:$2a$05$8IZNUuFTMoA3xv5grggWa.oBUBfvrE4MfgRDTlUI1zWDXGOHi9dzG:13922::::::
 +
suse-ncc:!:13922:0:99999:7:::
 +
uucp:*:13922::::::
 +
wwwrun:*:13922::::::
 +
roberto:$1$meoaWjv3$NUhmMHVdnxjmyyRNlli5M1:14222:0:99999:7:::
 +
 +
''Exercício: quando a senha do usuário ''roberto'' irá expirar ?''
 +
 +
Um grupo é um conjunto de usuários definido da seguinte forma:
 +
* '''Nome de group (group name):''' o nome que identifica o grupo no sistema
 +
* '''GID (Group Identifier):''' um número único que identifica o grupo
 +
* '''Lista de usuários:''' um conjunto de usuários que são membros do grupo
 +
 +
Assim como as contas de usuários, os grupos ficam armazenados em bases de dados de usuários, sendo o arquivo ''/etc/group'' a mais simples delas:
 +
 +
root:x:0:
 +
trusted:x:42:
 +
tty:x:5:
 +
utmp:x:22:
 +
uucp:x:14:
 +
video:x:33:roberto
 +
www:x:8:roberto
 +
users:x:100:
 +
radiusd:!:108:
 +
vboxusers:!:1000:
 +
 +
Os membros de um grupo são os usuários que o têm como grupo primário (especificado na conta do usuário em ''/etc/passwd''), ou que aparecem listados em ''/etc/group''.
 +
 +
=== Gerenciamento de usuários e grupos ===
 +
 +
Para gerenciar usuários e grupos podem-se editar diretamente os arquivos ''/etc/passwd'', ''/etc/shadow'' e ''/etc/group'', porém existem utilitários que facilitam essa tarefa:
 +
 +
* '''useradd''' ou '''adduser''': adiciona um usuário
 +
** Ex: ''useradd -m roberto'' : cria o usuário ''roberto'' juntamente com o diretório (-m --makedir).
 +
** Ex: ''useradd -c "Roberto de Matos" -m roberto'' : cria o usuário ''roberto'' com nome completo "Roberto de Matos"
 +
** Ex: ''useradd -c "Roberto de Matos" -g users -m -d /usuarios/roberto -s /bin/tcsh roberto'' : cria o usuário ''roberto'' com nome completo "Roberto de Matos", grupo ''users'', diretório inicial /usuarios/roberto e shell /bin/tcsh
 +
* '''userdel:''' remove um usuário
 +
** Ex: ''userdel roberto'' : remove o usuário ''roberto'', porém preservando seu diretório home
 +
** Ex: ''userdel -r roberto'' : remove o usuário ''roberto'', incluindo seu diretório home
 +
* '''usermod:''' modifica as informações da conta de um usuário
 +
** Ex: ''usermod -g wheel roberto'' : modifica o GID do usuário ''roberto''
 +
** Ex: ''usermod -G users,wheel roberto'' : modifica os grupos secundários do usuário ''roberto''
 +
** Ex: ''usermod -d /contas/roberto roberto'' : modifica o diretório inicial do usuário ''roberto'' (mas não copia os arquivos ...)
 +
** Ex: ''usermod -l robertomatos roberto'' : modifica o login do usuário ''roberto''
 +
** Ex: ''usermod -m ...'' : cria o diretório home do usuário ''roberto''
 +
** Ex: ''usermod -c "Roberto Matos, R. dos Navegantes, 33333333"'' : atribui comentários ao usuário ''roberto''
 +
* '''passwd:''' modifica a senha de usuário
 +
** Ex: ''passwd roberto''
 +
* '''login:''' logo como outro usuário. Tem de estar como root
 +
** Ex: ''login roberto''
 +
* '''groupadd:''' adiciona um grupo
 +
** Ex: ''groupadd ger'': cria o grupo ''ger''
 +
* '''groupdel:''' remove um grupo
 +
** Ex: ''groupdel ger'': remove o grupo ''ger''
 +
 +
Esses utilitários usam os arquivos ''/etc/login.defs'' e ''/etc/default/useradd'' para obter seus parâmetros padrão. O ''/etc/adduser.conf'' tem o mesmo intuito mas é seta exclusivamente os parâmetros do comando ''adduser''. O arquivo /etc/login.defs contém uma série de diretivas e padrões que serão utilizados na criação das próximas contas de usuários. Seu principal conteúdo é:
 +
 +
MAIL_DIR dir # Diretório de e-mail
 +
PASS_MAX_DAYS 99999 #Número de dias até que a senha expire
 +
PASS_MIN_DAYS 0 #Número mínimo de dias entre duas trocas senha
 +
PASS_MIN_LEN 5 #Número mínimo de caracteres para composição da senha
 +
PASS_WARN_AGE 7 #Número de dias para notificação da expiração da senha
 +
UID_MIN 500 #Número mínimo para UID
 +
UID_MAX 60000 #Número máximo para UID
 +
GID_MIN 500 #Número mínimo para GID
 +
GID_MAX 60000 #Número máximo para GID
 +
CREATE_HOME yes #Criar ou não o diretório home
 +
 +
Como o login.defs o arquivo /etc/default/useradd contém padrões para criação de contas. Seu principal conteúdo é:
 +
 +
GROUP=100 #GID primário para os usuários criados
 +
HOME=/home #Diretório a partir do qual serão criados os “homes”
 +
INACTIVE=-1 #Quantos dias após a expiração da senha a conta é desativada
 +
EXPIRE=AAAA/MM/DD #Dia da expiração da conta
 +
SHEL=/bin/bash #Shell atribuído ao usuário.
 +
SKEL=/etc/skel #Arquivos e diretórios padrão para os novos usuários.
 +
GROUPS=video,dialout
 +
CREATE_MAIL_SPOOL=no
 +
 +
O /etc/adduser.conf também possui uma série de padrões que funcionam especificamente para o comando adduser:
 +
DSHELL=/bin/bash #Shell atribuído ao usuário.
 +
DHOME=/home #Diretório a partir do qual serão criados os “homes”
 +
SKEL=/etc/skel #Arquivos e diretórios padrão para os novos usuários.
 +
FIRST_UID=1000 #Número mínimo para UID
 +
LAST_UID=29999 #Número máximo para UID
 +
FIRST_GID=1000 #Número mínimo para GID
 +
LAST_GID=29999 #Número máximo para GID
 +
QUOTAUSER="" #Se o sistema de cotas estiver funcional, pode atribuir quota ao usuário criado.
 +
 +
=== Atividade ===
 +
 +
Esta parte da atividade cada aluno executa individualmente em sua máquina, fazendo uso da devida máquina virtual (PRJ3).
 +
 +
Obs.: Na máquina virtual (PRJ3-servidor) é possível ter vários usuários logados simultaneamente, para isto basta logar o primeiro usuário (aluno) normalmente e, para os demais usuários, abrir novos terminais com as teclas: <Alt> + <F2>, <Alt> + <F3>, <Alt> + <F4> .... Para retornar a um dos usuários logados basta digitar o conjunto de teclas (<Alt> + <F?>) do respectivo usuário.
 +
 +
# Crie o grupo turma.
 +
# Crie o diretório /home/contas.
 +
# Copie dos arquivos /etc/login.defs, /etc/default/useradd e /etc/adduser.conf para o /home/aluno.
 +
# Modificando os arquivos /etc/login.defs, /etc/default/useradd e/ou /etc/adduser.conf, faça com que os usuários sejam criados com o seguinte perfil, por padrão:
 +
## O diretório home dos  usuários seja /home/contas;
 +
## Iniciar a numeração de usuários (ID) a partir de 1500.
 +
# Crie um usuário com o nome de manoel, pertencente ao grupo turma.
 +
# Dê ao usuário manoel a senha mane123.
 +
# Acrescente, por comandos, ao perfil do usuário seu nome completo e endereço: Manoel da Silva, R. dos Pinheiros, 2476666.
 +
# Verifique o arquivo /etc/passwd.
 +
# Mude, por comandos, o diretório home do manoel de /home/contas/manoel para /home/manoel.
 +
# Mude o login do manoel para manoelsilva.
 +
# Logue como manoelsilva.
 +
# Recomponha os arquivos originais do item 3.
 +
 +
Atividade a ser realizada no servidor da equipe
 +
 +
#Criem uma conta para cada membro da equipe com poder de comando sudo (desafio).
 +
#Baseado no diagrama geral, discutam a necessidade de criação de outros grupos e/ou usuários para atender as futuras demandas. Criem estes grupos e usuários.
 +
#Configurem o servidor SSH de tal modo que somente os membros da equipe possam fazer acesso remoto. Falando de outro modo, coíbam o acesso pelo '''root''' e qualquer outro usuário.
 +
{{Collapse bottom}}

Edição das 16h16min de 8 de outubro de 2015

PJI11103-2015-2

Diário de aula de PJI - 2015-2 - Prof. Simara Sonaglio

Dados Importantes

Professor: Simara Sonaglio
Email: simara.sonaglio@ifsc.edu.br
Atendimento paralelo: a definir. Local: a definir.

  • Avaliação
    • Avaliações individuais em cada etapa do projeto com conceito numérico: A, B, C e D. Conceito mínimo necessário em cada avaliação: C.
    • Avaliação baseada no projeto. Avaliação individual com acesso ao servidor da equipe e com questões relativas aos serviços e configurações do mesmo.
    • Um ou mais conceitos D implica na realização da reavaliação: uma única avaliação a ser realizada no último dia de aula.

IMPORTANTE: o direito de recuperar uma avaliação em que se faltou somente existe mediante justificativa reconhecida pela coordenação. Assim, deve-se protocolar a justificativa no prazo de 48 horas, contando da data e horário da avaliação e aguardar o parecer da coordenação.


Plano de Ensino

Diário de aulas

Projeto-PJI11103-2015-2.png


IPs e sub-domínios DNSs destinados às respectivas equipes:

  1. 200.135.37.121 - prji1.sj.ifsc.edu.br
  2. 200.135.37.122 - prji2.sj.ifsc.edu.br
  3. 200.135.37.123 - prji3.sj.ifsc.edu.br
Aula 1 - 06/10/15: Apresentação da disciplina
  • Apresentação da disciplina, plano de aula, trabalhos e métodos de avaliação.
  1. Auto apresentação
  2. Apresentação da Wiki
  3. Ementa
  4. Proposta de Cronograma de atividades
  5. Apresentação do modelo de aulas a ser adotado
    1. Projeto
  6. Avaliações
Aula 1 - 06/10/15: Revisão dos comandos básicos
Objetivo: Revisão dos comandos básicos, familiarização e fixação do conteúdo.

Material Auxiliar (Comandos básicos 01) (Comandos básicos 02 ) ( Slides Aula Introdução ao Linux Tulio.)

  1. Abra um terminal, no qual todos os passos a seguir serão executados.
  2. Execute o comando pwd. Escreva a saída resultante deste comando. Este será o seu diretório raiz.
  3. Crie um diretório de trabalho, por exemplo execute mkdir revisao. OBS: todos os diretórios e arquivos que você for trabalhar daqui para frente, faça dentro da sua pasta REVISAO.
  4. A partir do seu diretório REVISAO, crie a seguinte árvore de diretórios, utilizando o comando mkdir e o conceito de caminho relativo.
    1. Brasil
      1. regiaoNorte
        1. amazonas
        2. acre
      2. regiaoSul
        1. parana
        2. santaCatarina
  5. Entre no diretório regiaoNorte.
  6. Liste os diretórios existentes dentro do diretório atual, e anote a saída.
  7. Copie o diretório amazonas com o nome para.
  8. Execute o comando ls, e escreva abaixo a saída resultante deste comando.
  9. Entre no diretório regiaoSul, e renomeie o diretório parana para o nome rioGrandeSul.
  10. Liste os diretórios e escreva abaixo a saída resultante deste comando.
  11. Volte para o diretório raiz.
  12. Liste o conteúdo do diretório raiz e redirecione a saída para um arquivo com o nome saidaDirRaiz.arq e que este arquivo fique dentro do diretório amazonas.
  13. Liste o conteúdo do seu diretório REVISAO, e redirecione a saída para um arquivo com o nome saidaRevisao.arq e que este arquivo fique dentro do diretório amazonas.
  14. Liste o conteúdo do diretório regiaoSul e redirecione sua saída para um arquivo com o nome estados.sul e que este arquivo fique dentro do diretório amazonas.
  15. Vá até o diretório amazonas, execute o comando cat /etc/services e more /etc/services (um de cada vez). Qual a diferença entre os dois comandos?
  16. Apague os arquivos terminados em .arq e .sul.
  17. Verifique qual é o diretório corrente e, caso não seja o diretório home (/home/aluno) do seu usuário, vá para o mesmo.
  18. Liste o conteúdo do diretório home do seu usuário.
  19. Verifique se há a ocorrência da palavra “Protocol” no arquivo /etc/protocols.
  20. Liste as doze primeiras linhas do arquivo /etc/protocols.
  21. Liste as quinze últimas linhas do arquivo /etc/protocols.
  22. Mostre quantas linhas, palavras e caracteres possui o arquivo /etc/protocols.
  23. Quantos caracteres têm as cinco primeiras linhas do arquivo /etc/passwd.
  24. Quantas palavras têm as 8 ultimas linhas do arquivo /etc/protocols.
  25. Mostre as linhas de 6 a 10 do arquivo /etc/protocols.
  26. Mostre as 50 primeiras linhas do arquivo /etc/protocols na ordem alfabética inversa.
  27. Mostre as 10 últimas linhas do arquivo /etc/passwd na ordenado alfabeticamente.
  28. Entre os processos que estão rodando, mostre os que possuem a string “usr”.
  29. Dentre as 30 primeiras linhas do arquivo /etc/protocols, mostre as linhas que possuem a string “protocol”.
  30. Dentre as 20 ultimas linhas do arquivo /etc/protocols, mostre as linhas que possuem a string “Protocol”.
  31. Mostre apenas as 5 ultimas linhas que possuem a string “Protocol” do arquivo /etc/protocols.
  32. Conte quantas linhas possuem a palavra “root” dentre os processos que estão rodando.
Editor VI

(Material de Apoio)

Objetivo: Familiarização com o editor e ser capaz de executar comandos simples, porém úteis para manipulação de arquivos.

  1. Crie um arquivo com o editor VI com o nome de poema.txt, e que dentro dele esteja o texto abaixo:

Desejo que você Não tenha medo da vida, tenha medo de não vivê-la. Não há céu sem tempestades, nem caminhos sem acidentes. Só é digno do pódio quem usa as derrotas para alcançá-lo. Só é digno da sabedoria quem usa as lágrimas para irrigá-la. Os frágeis usam a força; os fortes, a inteligência. Seja um sonhador, mas una seus sonhos com disciplina, Pois sonhos sem disciplina produzem pessoas frustradas. Seja um debatedor de ideias. Lute pelo que você ama.</syntaxhighlight>

  1. Salve o arquivo e saia do editor.
  2. Copie o arquivo do item anterior com o nome editadoPoema.txt.
  3. Entre no arquivo editadoPoema.txt, e saia sem salvar.
  4. Entre novamente no arquivo editadoPoema.txt, e no modo insert, faça uma alteração qualquer (Ex: deixe duas linhas em branco no início do arquivo). Saia do editor sem salvar a alteração feita.
  5. Entre no arquivo editadoPoema.txt, copie todo o poema e cole logo abaixo, sem deixar espaço entre os textos, utilizando os comandos nyy e p. Salve e saia do editor.
  6. Entre no arquivo editadoPoema.txt e exclua as 2 primeiras linhas. Desfaça a alteração, salve e saia do editor.
  7. Entre no arquivo editadoPoema.txt e exclua as 9 primeiras linhas. Salve as alterações e saia do editor.
  8. Entre no arquivo poema.txt e procure pela palavra sonhos, utilizando o comando /palavra_procurada. Navegando pela pesquisa com o comando n, responda quantas ocorrências dessa palavra existem no texto?
  9. No modo last line, substitua a palavra produzem por geram do arquivo poema.txt.
  10. No arquivo poema.txt, substitua todas as ocorrências da palavra digno por DIGNO.
  11. No arquivo editatoPoema.txt, copie todo o texto e cole 3 vezes, um embaixo do outro. Salve e saia do editor.
  12. Com o comando grep, procure pela palavra sonhos no arquivo do item acima. Em quantas linhas esta palavra aparece?
  13. Utilize o comando head para visualizar o começo do texto do arquivo editadoPoema.txt.
  14. Com o comando tail visualize o final do texto do arquivo editadoPoema.txt.
  15. No arquivo editadoPoema.txt, utilizando o comando sed substitua a palavra disciplina por DISCIPLINA. Em seguida, visualize o conteúdo do arquivo e responda: as alterações feitas pelo comando foram salvas no arquivo?
  16. Com o comando sort, ordene alfabeticamente o texto do arquivo editadoPoema.txt e redirecione a saída deste comando para um novo arquivo, chamado de poemaOrdenado.txt.
  17. Quantas linhas possui o arquivo poemaOrdenado.txt?
  18. Entre no arquivo editadoPoema.txt e insira o conteúdo do arquivo poemaOrdenado.txt logo abaixo do texto que ele já contém.
  19. Entre no arquivo poema.txt e salve-o com outro nome.

Gabarito 1 vi poema.txt editar texto ESC :wq ==> salva e sai 2 cp poema.txt editadoPoema.txt 3 ESC :q 4 ESC :q! 5 ESC 20yy ==> copia 20 linhas ESC G ==> vai ao final do arquivo ESC p ==> cola o texto 6 ESC 2dd ==> apaga 2 linhas ESC u ==> desfaz (undo) o último comando ESC wq! 7 ESC 9dd ESC wq! 8 ESC /sonhos 9 ESC :s/produzem/geram 10 ESC :%s/digno/DIGNO/g 11 ESC 30yy ESC p ESC p ESC p ESC wq 12 grep sonhos editadoPoema.txt | wc -l 13 head editadoPoema.txt 14 tail editadoPoema.txt 15 sed 's/disciplina/DISCIPLINA/g' Não sed -i 's/disciplina/DISCIPLINA/g' Sim 16 sort editadoPoema.txt > poemaOrdenado.txt 17 wc -l poemaOrdenado.txt 18 vi editadoPoema.txt ESC :r poemaOrdenado.txt 19 vi poema.txt ESC w outroNome.txt </syntaxhighlight>

Aula 2 - 08/10/15: Formatação, instalação e início da configuração do servidor principal

O objetivo inicial é instalar e configurar basicamente o sistema operacional na máquina que atuará como principal servidor da rede.

Instalando o sistema operacional

As etapas básicas consistem em:

  1. Conectar todos os periféricos mínimos na torre recebida e ligá-la à tomada.
  2. Instalar o sistema operacional lendo com atenção todas as mensagens recebidas e escolhendo adequadamente as opções, com as seguintes características:
    1. Na etapa de formação escolha formatação manual ou avançada e crie a seguinte tabela de partição: i) / 30 GB ext4; i) /home 30 GB ext4; i) swap 4 GB swap; /var "espaço restante" ext4.
    2. Se necessário configure manualmente os IPs, conforme passado pelo prof.
    3. Opte por atualizar automaticamente e baixar aplicativos de terceiros.
    4. Crie uma conta (que será definitiva) para um dos usuários da equipe, com o respectivo login e senha.
    5. Aguarde a finalização da instalação e reinicie a máquina.
  3. Logue na máquina com a conta criada.

Conferindo e aprendendo sobre instalação de pacotes

Slide). Página oficial do apt-get

É necessário estar com e rede funcional. Teste com o comando:

ping www.ifsc.edu.br
  1. Com o apt-get --help veja quais as opções possíveis que o instalador de pacotes do Ubuntu fornece.
  2. Sincronize o sistema.
  3. Atualize as versões de todos os pacotes instalados no sistema.
  4. Com o apt-cache search procure por sudoku, escolha o sudoku (nenhum outro) e instale-o. Após a instalação execute o programa instalado (digite o nome do pacote instalado) e veja se foi instalado corretamente (se rodou).
  5. Remova o programa instalado no item anterior. Confira se ele realmente foi removido.

Configuração básica da interface de rede

  1. apt-get remove isc-dhcp-client
  2. vi /etc/network/interfaces
  3. This file describes the network interfaces available on your system
  4. and how to activate them. For more information, see interfaces(5).
  1. The loopback network interface

auto lo eth0 iface lo inet loopback

       address 127.0.0.1
       netmask 255.0.0.0

  1. a interface ethernet eth0

iface eth0 inet static address 192.168.2. X netmask 255.255.255.0 gateway 192.168.2.1

       dns-nameservers 200.135.37.65

</syntaxhighlight>

  1. ifdown -a && ifup -a

Habilitando acesso remoto com SSH

Ver capítulo 33 da apostila.

Atividade individual, cada aluno em sua máquina virtual (PRJ3)

  1. Instale o SSH em sua máquina.
  2. Habilite e desabilite o login do root.
    vi /etc/ssh/sshd_config
       PermitRootLogin yes
    
  3. Reinicie o serviço
    service ssh restart
    
  4. De sua máquina real conecte e faça testes.
    ssh aluno@192.168.2.1X
    
  5. Habilite o acesso somente para um conjunto de usuários (desafio).
  6. Teste.
  7. Desfaça o anterior. Bloqueie o acesso para um conjunto de usuários (desafio).
  8. Teste.
  9. Instale o SSH em sua máquina virtual com ambiente gráfico, Ip 192.168.2.2X.
  10. Habilite e desabilite o X11Forwarding.
  11. Da máquina real teste esta funcionalidade:
    ssh -X aluno@192.168.2.2X 
       firefox
    
  12. Teste a funcionalidade do scp, copiando arquivos locais para o servidor e vice-versa.
  13. Configure seu par de máquinas, cliente e servidor, para conexão direta, sem pedido de senha (desafio).
  14. Teste a conexão direta.
  15. Teste a execução de comandos no seu servidor, sem "sair" do cliente.
  16. Faça testes fornecendo usuário e/ou senha errados e verifique o log:
    tail /var/log/auth.log
    
  17. Permitindo acesso ao serviço somente para algumas redes:
    vi /etc/hosts.allow
          sshd: 1.2.3.0/255.255.255.0
          sshd: 192.168.0.0/255.255.255.0
    vi /etc/hosts.deny
          sshd: ALL
    

Usuários e grupos

Criação de contas de usuários e de grupos, e seu uso para conferir permissões de acesso a arquivos, diretórios e recursos do sistema operacional. Apostila, páginas 61 a 65.

Slides Aula Tulio: Slides Aula Usuários, Grupos e Permissões

Um usuário no Linux (e no Unix em geral) é definido pelo seguinte conjunto de informações:

  • Nome de usuário (ou login): um apelido que identifica o usuário no sistema
  • UID (User Identifier): um número único que identifica o usuário
  • GID (Group Identifier): o número do grupo primário do usuário
  • Senha (password): senha para verificação de acesso
  • Nome completo (full name): nome completo do usuário
  • Diretório inicial (homedir): o subddiretório pessoal do usuário, onde ele é colocado ao entrar no sistema
  • Shell: o programa a ser executado quando o usuário entrar no sistema

As contas de usuários, que contêm as informações acima, podem ficar armazenadas em diferentes bases de dados (chamadas de bases de dados de usuários). Dentre elas, a mais simples é composta pelo arquivo /etc/passwd:

root:x:0:0:root:/root:/bin/bash
sshd:x:71:65:SSH daemon:/var/lib/sshd:/bin/false
suse-ncc:x:105:107:Novell Customer Center User:/var/lib/YaST2/suse-ncc-fakehome:/bin/bash
wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false
man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash
news:x:9:13:News system:/etc/news:/bin/bash
uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
roberto:x:1001:100:Roberto de Matos:/data1/roberto:/bin/bash

Acima um exemplo de arquivo /etc/passwd

Cada linha desse arquivo define uma conta de usuário no seguinte formato:

nome de usuário:senha:UID:GID:Nome completo:Diretório inicial:Shell

O campo senha em /etc/passwd pode assumir os valores:

  • x: significa que a senha se encontra em /etc/shadow
  • *: significa que a conta está bloqueada
  • senha encriptada: a senha de fato, porém encriptada usando algoritmo hash MD5 ou crypt. Porém usualmente a senha fica armazenada no arquivo /etc/shadow.

O arquivo /etc/shadow armazena exclusivamente as informações relativas a senha e validade da conta. Nele cada conta possui as seguintes informações:

  • Nome de usuário
  • Senha encriptada (sobrepõe a senha que porventura exista em /etc/passwd)
  • Data da última modificação da senha
  • Dias até que a senha possa ser modificada (validade mínima da senha)
  • Dias após que a senha deve ser modificada
  • Dias antes da expiração da senha em que o usuário deve ser alertado
  • Dias após a expiração da senha em que a conta é desabilitada
  • Data em que a conta foi desabilitada

Um exemplo do arquivo /etc/shadow segue abaixo:

root:$2a$05$8IZNUuFTMoA3xv5grggWa.oBUBfvrE4MfgRDTlUI1zWDXGOHi9dzG:13922::::::
suse-ncc:!:13922:0:99999:7:::
uucp:*:13922::::::
wwwrun:*:13922::::::
roberto:$1$meoaWjv3$NUhmMHVdnxjmyyRNlli5M1:14222:0:99999:7:::

Exercício: quando a senha do usuário roberto irá expirar ?

Um grupo é um conjunto de usuários definido da seguinte forma:

  • Nome de group (group name): o nome que identifica o grupo no sistema
  • GID (Group Identifier): um número único que identifica o grupo
  • Lista de usuários: um conjunto de usuários que são membros do grupo

Assim como as contas de usuários, os grupos ficam armazenados em bases de dados de usuários, sendo o arquivo /etc/group a mais simples delas:

root:x:0:
trusted:x:42:
tty:x:5:
utmp:x:22:
uucp:x:14:
video:x:33:roberto
www:x:8:roberto
users:x:100:
radiusd:!:108:
vboxusers:!:1000:

Os membros de um grupo são os usuários que o têm como grupo primário (especificado na conta do usuário em /etc/passwd), ou que aparecem listados em /etc/group.

Gerenciamento de usuários e grupos

Para gerenciar usuários e grupos podem-se editar diretamente os arquivos /etc/passwd, /etc/shadow e /etc/group, porém existem utilitários que facilitam essa tarefa:

  • useradd ou adduser: adiciona um usuário
    • Ex: useradd -m roberto : cria o usuário roberto juntamente com o diretório (-m --makedir).
    • Ex: useradd -c "Roberto de Matos" -m roberto : cria o usuário roberto com nome completo "Roberto de Matos"
    • Ex: useradd -c "Roberto de Matos" -g users -m -d /usuarios/roberto -s /bin/tcsh roberto : cria o usuário roberto com nome completo "Roberto de Matos", grupo users, diretório inicial /usuarios/roberto e shell /bin/tcsh
  • userdel: remove um usuário
    • Ex: userdel roberto : remove o usuário roberto, porém preservando seu diretório home
    • Ex: userdel -r roberto : remove o usuário roberto, incluindo seu diretório home
  • usermod: modifica as informações da conta de um usuário
    • Ex: usermod -g wheel roberto : modifica o GID do usuário roberto
    • Ex: usermod -G users,wheel roberto : modifica os grupos secundários do usuário roberto
    • Ex: usermod -d /contas/roberto roberto : modifica o diretório inicial do usuário roberto (mas não copia os arquivos ...)
    • Ex: usermod -l robertomatos roberto : modifica o login do usuário roberto
    • Ex: usermod -m ... : cria o diretório home do usuário roberto
    • Ex: usermod -c "Roberto Matos, R. dos Navegantes, 33333333" : atribui comentários ao usuário roberto
  • passwd: modifica a senha de usuário
    • Ex: passwd roberto
  • login: logo como outro usuário. Tem de estar como root
    • Ex: login roberto
  • groupadd: adiciona um grupo
    • Ex: groupadd ger: cria o grupo ger
  • groupdel: remove um grupo
    • Ex: groupdel ger: remove o grupo ger

Esses utilitários usam os arquivos /etc/login.defs e /etc/default/useradd para obter seus parâmetros padrão. O /etc/adduser.conf tem o mesmo intuito mas é seta exclusivamente os parâmetros do comando adduser. O arquivo /etc/login.defs contém uma série de diretivas e padrões que serão utilizados na criação das próximas contas de usuários. Seu principal conteúdo é:

MAIL_DIR dir # Diretório de e-mail
PASS_MAX_DAYS	99999 #Número de dias até que a senha expire
PASS_MIN_DAYS	0 #Número mínimo de dias entre duas trocas senha
PASS_MIN_LEN 5	#Número mínimo de caracteres para composição da senha
PASS_WARN_AGE 7 #Número de dias para notificação da expiração da senha
UID_MIN 500 #Número mínimo para UID
UID_MAX 60000 #Número máximo para UID
GID_MIN 500 #Número mínimo para GID
GID_MAX 60000 #Número máximo para GID
CREATE_HOME yes #Criar ou não o diretório home

Como o login.defs o arquivo /etc/default/useradd contém padrões para criação de contas. Seu principal conteúdo é:

GROUP=100 #GID primário para os usuários criados 
HOME=/home #Diretório a partir do qual serão criados os “homes”
INACTIVE=-1 #Quantos dias após a expiração da senha a conta é desativada
EXPIRE=AAAA/MM/DD #Dia da expiração da conta
SHEL=/bin/bash #Shell atribuído ao usuário.
SKEL=/etc/skel #Arquivos e diretórios padrão para os novos usuários.
GROUPS=video,dialout
CREATE_MAIL_SPOOL=no

O /etc/adduser.conf também possui uma série de padrões que funcionam especificamente para o comando adduser:

DSHELL=/bin/bash #Shell atribuído ao usuário.
DHOME=/home #Diretório a partir do qual serão criados os “homes”
SKEL=/etc/skel #Arquivos e diretórios padrão para os novos usuários.
FIRST_UID=1000 #Número mínimo para UID
LAST_UID=29999 #Número máximo para UID
FIRST_GID=1000 #Número mínimo para GID
LAST_GID=29999 #Número máximo para GID
QUOTAUSER="" #Se o sistema de cotas estiver funcional, pode atribuir quota ao usuário criado.

Atividade

Esta parte da atividade cada aluno executa individualmente em sua máquina, fazendo uso da devida máquina virtual (PRJ3).

Obs.: Na máquina virtual (PRJ3-servidor) é possível ter vários usuários logados simultaneamente, para isto basta logar o primeiro usuário (aluno) normalmente e, para os demais usuários, abrir novos terminais com as teclas: <Alt> + <F2>, <Alt> + <F3>, <Alt> + <F4> .... Para retornar a um dos usuários logados basta digitar o conjunto de teclas (<Alt> + <F?>) do respectivo usuário.

  1. Crie o grupo turma.
  2. Crie o diretório /home/contas.
  3. Copie dos arquivos /etc/login.defs, /etc/default/useradd e /etc/adduser.conf para o /home/aluno.
  4. Modificando os arquivos /etc/login.defs, /etc/default/useradd e/ou /etc/adduser.conf, faça com que os usuários sejam criados com o seguinte perfil, por padrão:
    1. O diretório home dos usuários seja /home/contas;
    2. Iniciar a numeração de usuários (ID) a partir de 1500.
  5. Crie um usuário com o nome de manoel, pertencente ao grupo turma.
  6. Dê ao usuário manoel a senha mane123.
  7. Acrescente, por comandos, ao perfil do usuário seu nome completo e endereço: Manoel da Silva, R. dos Pinheiros, 2476666.
  8. Verifique o arquivo /etc/passwd.
  9. Mude, por comandos, o diretório home do manoel de /home/contas/manoel para /home/manoel.
  10. Mude o login do manoel para manoelsilva.
  11. Logue como manoelsilva.
  12. Recomponha os arquivos originais do item 3.

Atividade a ser realizada no servidor da equipe

  1. Criem uma conta para cada membro da equipe com poder de comando sudo (desafio).
  2. Baseado no diagrama geral, discutam a necessidade de criação de outros grupos e/ou usuários para atender as futuras demandas. Criem estes grupos e usuários.
  3. Configurem o servidor SSH de tal modo que somente os membros da equipe possam fazer acesso remoto. Falando de outro modo, coíbam o acesso pelo root e qualquer outro usuário.