Você está na página 1de 7

TREINAMENTO 2010 - TAREFA 2

Exercíco 1 - Gerenciamento de usuários e grupos


a) Cite um comando para criar usuários no Linux.
R: O comando adduser adiciona um usuário ou grupo no sistema. Por padrão,
quando um novo usuário é adicionado, é criado um grupo com o mesmo nome
do usuário. Opcionalmente o adduser também pode ser usado para adicionar um
usuário
a um grupo. Será criado um diretório home com o nome do usuário (a não ser
que o novo usuário criado seja um usuário do sistema) e este receberá uma
identificação. A identificação do usuário (UID) escolhida será a primeira
disponível no sistema especificada de acordo com a faixa de UIDS de
usuários permitidas no arquivo de configuração /etc/adduser/cong. Este é
o arquivo que contém os padröes para a criação de novos usuários no
sistema.
b)Existe algum comando para criar grupos de usuários no Linux? Qual é?
R: Sim, addgroup.
d)Faça um script em Perl que recebe, pela linha de comando, um nome de usuário
com este login e um grupo de mesmo nome. Faça com que esse script gere uma
senha aleatória para este usuário e, ao final da execução, imprima na tela
o login e a senha.
R: cat /dev/urandom|tr -dc "a-zA-Z0-9-_\$\?"|fold -w 12|head -n 1
makepasswd --chars 8 para gerar a senha aleatória.
e)É possível forçar os usuários a digitarem uma senha 'segura' seguindo alguma
restricao (caracteres alfa-numéricos, alfabéticos e outros - ou tamanho da
senha...)?
R: Sim. Modificando-se as configurações do PAM. Utilizando o módulo
pam_cracklib.
f) Como verificar de uma forma esperta em quais grupos está um usuário?
R: groups user.
Exercício 2 - Inicialização do sistema
a) O que é o processo "init"? Como ele funciona?
R: O processo init é o primeiro executado pelo kernel de qualaquer sistema
operacional Linux/Unix na sua inicialição. Ele é o primeiro processo a ser
executado e é o pai de todos os outros processo. É o único processo que
não pode ser abortado. Na inicialização o bootloader carrega o kernel, e
é iniciada a detecção do hardware, após o kernel monta o root filesystem, o
dirétorio raiz do sistema, e executa o processo init. O init é o processo
responsável por continuar o carregamento do sistema chamando todos os
deamons necessários e executando os shell scripts necessários para isto.
b) Como se faz para executar programas/scripts na inicialização do sistema?
R: Adiciona-se a chamada do programas/script no arquivo /etc/rc.local ou
no /etc/rc.d/rc.local (no Slackware).
c) O que é um daemon? Onde ficam localizados os arquivos que iniciam os daemons
numa distribuição Debian?
R: Daemons são processos que rodam em background e controlam determinados
serviços no sistema (servidor ssh, servidor http, etc.). Processos normalmente
se tornam daemons com o fork do processo filho, o processo pai
mata-se e então o init adota o processo filho. Os daemons que são carregados
na inicialização do sistema normalmente ficam localizados em /etc/init.d/.
/usr/sbin/???
Exercício 3 - Gerenciamento de dispositivos
a) O que é uma partição num dispositivo de armazenamento?
R: Uma partição é uma divisão de um dispositivo de armazenameto. Cada
partição pode conter um sistema de arquivos diferente. Consequentemente
vários sistemas operacionais podem ser instalados na mesma unidade de
disco.
b) Onde ficam localizadas as partições e os outros dispositivos no Linux?
/dev
c) Que comando você utilizaria para criar/editar/excluir partições no Linux?
R: # cfdisk
d) Quais são os formatos de partições utilizados no Linux? Qual a diferença
entre eles?
R: -> partição primária
Este tipo de partição contém um sistema de arquivos. Em um disco
deve haver no mínimo uma e no máximo quatro partições primárias.
Se existirem quatro partições primárias, nenhuma outra poderá
existir neste disco. Uma dessas partições deve ser marcada como
bootável para que a BIOS possa iniciar a máquina por ela.
-> partição estendida
Só pode haver uma partição estendida em cada disco. Uma partição
estendida é um tipo especial de partição primária que não pode
conter um sistema de arquivos. Ao invés disso, ela contém partições
lógicas. Se existir uma partição estendida, ela toma o lugar de uma
das partições primárias, podendo haver apenas três.
-> partição lógica
Também chamadas de unidades lógicas, as partições lógicas residem
dentro da partição estendida. Podem haver de uma a 12 partições
lógicas em um disco.
e) O que é "Mont Point"?
R: O GNU/Linux acessa as partições em seus dispositivos de armazenameto
através de diretórios. Os diretórios que são usados para acessar(montar)
partições são chamados de Mont Points ou Pontos de Montagem. No DOS/Windows
cada letra de unidade (C:, D:, E:) identifica uma partição de disco, no
GNU/Linux os pontos de montagem fazem parte da grande estrutura do sistema
de arquivos raiz.
f) Qual comando é utilizado para montar partições? E para desmontar?
R: mount [dispositivo] [ponto de montagem] [opções]
umount [ponto de montagem ou dispositivo]
g) Para que serve o comando "fsck"? É possível executá-lo durante a
inicialização?
R: O fsck é usado para checar e opcionalmente reparar um ou mais sistemas
de arquivos do Linux. Para forçar sua execução na inicialização basta criar
um arquivo em branco como /forcefsck ou então reinicializar o sistema com
o comando # shutdown -rF now.
Exercício 4 - Gerenciamento de processos
a) Num sistema operacional, qual a definição de "processo"?
R: Nos sistemas operacionas, um processo é a forma de representar um
programa em execução. É o processo que utiliza os recurso do computador
para a realização das tarefas para as quais a máquina é destinada.
b) Quais são os atributos de um processo, isto é, quais são os dados que o
identificam no sistema?
R: -> Process ID (PID) ou identificação do processo: Cada processo possui
um número de identificação única. O primeiro processo init sempre terá o
PID 1 e para o restante dos processos este número é incrementado à medida
que novos processos são executados.
-> User ID e Group ID (ID do usuário e ID do grupo): Os processo
precisam ser executados com privilégios de uma conta de usuário e grupo
associado a eles. Isto é importante porque assim o sitema pode determinar
o acesso aos recursos.
-> Processo Pai: No Linux nenhum processo é executado de forma
independente dos outros. Todos os processo no sistema, com exceção do init
possuem um processo pai que é responsável pela sua execução.
-> Parent ID (ID do processo pai): Este atributo grava o PID do processo
pai. Caso o processo pai termine sua execução antes do processo filho, o
processo filho é adotado pelo init, ganhando o Parent ID igual a 1.
-> Variáveis de ambiente: Cada processo herda do processo pai algumas
variáveis de ambiente que simplesmente guardam alguns valores que podem ou
não ser importantes para o processo em execução. É possível que durante a
execução um processo altere, incremente ou apague uma variável de ambiente.
-> Diretório de trabalho: Os processo também são associados a um
diretório de trabalho, onde podem fazer leitura e escrita de disco.
-> Temporizadores: O Kernel mantém registros da hora em que os
processos são criados bem como o tempo de CPU que eles consomem durante a
sua execução.
c) Como funciona a sequência de execução de um processo, isto é, quais são os
estados de execução que ele pode apresentar?
R: -> Executável: o processo pode ser executado imediatamente;
-> Dormente: o processo precisa aguardar alguma coisa para ser
executado. Só depois dessa "coisa" acontecer é que ele passa para o estado
executável;
-> Zumbi: o processo é considerado "morto", mas, por algum motivo,
ainda existe;
-> Parado: o processo está "congelado", ou seja, não pode ser
executado.
d) Qual a diferença em chamar o comando "vim" e o comando "vim &"?
R: "vim" chamará o editor de testo VIM em "foreground", ou seja, em
primeiro plano. "vim &" chamará o editor em "background", ou seja, em
segundo plano.
e) Como você faz para rodar comandos em modo "background"?
R: Para iniciar um programa em background, basta chamá-lo no terminal com
"&" ao final. Ex: "vim &".
f) Como você faz para colocar um comando que está em foreground em background?
E o contrário?
R: Primeiro deve-se paralizar a execução do processo, pode-se fazer isto
pressionando Ctrl + Z no teclado. Depois utiliza-se o comando "bg" do
seguinte modo: bg +[número do pocesso].
Para se passar em foreground utiliza-se o cumando "fg":
fg +[número do processo].
g) Qual o comando para mostra os processos que estão rodando?
R: Pode-se utilizar o comando ps: ps aux; ps lax; etc.
h) Qual o procedimento para finalizar um processo?
R: Pode-se utilizar o comando kill:
kill [opções] [PID]
i) Suponha que o usuário "malvadeza" esteja consumindo quase todos os recursos
do seu computador, como você faria para finalizar todos os processos deste
usuário?
R: Pode-se utilizar o comando pkill da seguinte maneira:
pkill -u [Nome de Usuário]
j) O que faz: :(){ :|:& };: ?
R: Cria um processo que consome todos os recursos do computador.
k) É possível controlar os recursoso que um determinado usuário pode utilizar?
Exercício 5 -
a) O que são soft links (links simbólicos)? (Definição, para que servem, como
criar um link simbólico para um determinado arquivo).
R: Soft links (ou links simbólicos) são apontadores para um arquivo
ou diretório. Quando acessado o link, é acessado o arquivo ou
diretório para o qual ele aponta. Os links tem função de atalho
tanto para arquivos como para pastas. É importante ressaltar que se o
arquivo apontado pelo soft link for mudado de nome ou endereço, o soft
link ficará quebrado. O soft link pode ser criado com o seguite comando:
ln -s [endereço apontado] [nome do link]
b) Quais as difereças entre hard links e soft links?
R: A principal diferença é que soft links apenas apontam para outro local,
enquanto um hard link compartilha o mesmo inode, ou seja compartilha o
mesmo endereço físico. Quando modifica-se um hard link, a mudança ocorre
propriamente no arquivo/diretório.
c) Como se comportam os comandos rm, cp e tar para soft links?: - se um soft
link for removido com rm, o arquivo para o qual ele aponta será removido
também? - o comano cp, por default, ao ser rodado sobre um diretório que
contém um soft link, armazenará o soft link, armazenará o arquivo para o
qual o soft link aponto ou ignora o soft link?
R: Ao remover-se um soft link com o comando rm, o arquivo ou diretório
para o qual ele aponta permanece inalterado sendo, portanto, apenas
removido o soft link. De forma análoga para o comando cp e tar. O comando
cp apenas copiará o soft link e não o arquivo para o qual ele aponta e o
comando tar armazenará apenas o soft link.
Exercício 6 - SSH
a) Existe uma forma de logar por SSH sem o uso de senhas? Se existir, diga como
fazer.
R: Sim. No computador cliente execute o seguinte comando:
ssh-keygen -t rsa
Quando perguntado para entrar com uma "passphrase", apenas tecle "Enter"
duas vezes para que fique em branco, caso contrário esta frase precisará
ser digitada posteriormente. Agora uma chave pública e uma chave privada
foram geradas. A chave privada está em "~/.ssh/id_rsa" e a pública em
"~/.ssh/id_rsa.pub".
Para que seja prossível uma conexão SSh sem senha entre cliente e servidor,
é preciso divulgar para o servidor a chave pública gerada pelo cliente.
É possível fazer esta cópia remotamente executando os seguintes comandos:
scp ~/.ssh/id_rsa.pub usuario@servidor:~
ssh usuario@servidor
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
No exemplo acima foi realizada a cópia do arquivo "id_rsa.pub" do cliente
para o servidor o conteúdo do arquivo "id_rsa.pub" foi inserido dentro do
arquivo "authorized_keys".
b) Qual a porta utilizada pelo SSH? É possível trocá-la? Como faz?
R: A porta padrão do SSH é a 22. É possível trocá-la. No servidor SSH,
deve ser modificado no arquivo /etc/ssh/sshd_config a porta 22 para a
desejada. No cliente, pode ser especificada a porta no arquivo
/etc/ssh/ssh_config, ou como opção pela linha de comando com o parâmetro
-p.
c) É possível bloquear por login por SSH como root? É possível permitir que o
root faça logon por SSH apenas em determinadas circunstâncias?
R: Sim. Para bloquear o login por SSH como root, basta adicionar a seguinte
linha ao arquivo /etc/ssh/sshd_config:
PermitRootLogin no
Pode-se adicionar restrições ao logon root, como horário e IP. Exemplo:
Altere o arquivo /etc/security/access.conf e coloque o parâmetro:
-:root:ALL EXCEPT LOCAL 192.168.0.1
Agora altere o arquivo /etc/pam.d/sshd e insira o seguinte parâmetro:
account required /lib/security/pam_access.so
Neste exemplo o acesso do root só será possível localmente ou pelo IP
192.168.0.1.
d) Existe uma forma para fazer o SSH rodar programas a partir do modo gráfico?
R: Sim. Deve se modificar o arquivo /etc/ssh/sshd_config no servidor ssh,
e inserir as seguintes linhas, se não houverem:
X11Forwarding yes
X11DisplayOffset 10
Na máquina cliente, deve-se modificar o arquivo /etc/ssh/ssh_config e
inserir a seguinte linha, se não houver:
ForwardX11 yes
No momento de se logar, deve se usar o parâmetro -X.
e) Para que servem os arquivos localizados em ~/.ssh e em suas subpastas?
R: Ficam localizados os arquivos de configuração do ssh que dizem respeito
somente ao usuário ao qual o diretório ~ pertence, inclusive as chaves SSH
pública e privada.
d) O que é uma 'chave SSH'? Como gerá-las?
R: Uma chave SSH pode ser tanto pública ou privada. A chave SSH é um
recurso de criptografia assimétrica que permite que dados sejam trafegados de
forma segura. De maneira simples: a chave pública possibilita os dados em
questão de serem codificados de determinada forma que, virtualmete, somente
a chave privada tenha capacidade de decodificá-los, assim, não há problemas
em ter a chave pública interceptada, pois ela apenas codifica e não
decodifica, enquanto que a chave privada deve ser mantida restrita e
oculta do conhecimento de outros. Assim, mesmo que dados sejam
interceptados e o interceptor possua a chave pública, os dados continuarão
seguros, pois ele não possuirá a chave privada.
Para gerá-las, utiliza-se o programa ssh-keygen e seus respectivos
parâmetros. Ex: ssh-keygen -t rsa.
As chaves SSH podem ser utilizadas como artifício para autenticação sem
senha. A chave pricada é usada para cifrar mensagens, com isso garante-se
que apenas o dono da chave privada poderia ter cifrado a mensagem que foi
decifrada com a chave pública. Assim, garante-se uma autenticidade segura.
Exercício 7 - Geral
a) Como verificar quais portas estão escancaradas numa rede de computadores?
R: Pode ser utilizado o programa Nmap.
b) Para que serve o comando telnet?
R: O comando telnet serve de interface com usuário para o protocolo TELNET.
O protocolo TELNET oferece login remoto a um computador, que permite
trabalhar conectado a distância como se estivesse em frente ao próprio
computador. O TELNET tem aplicações próximas do SSH, porém o SSH é
considerado muito mais seguro.
c) Existe uma forma de eu enviar e-mail a partir de um destinatário falso? Como
fazer isso?
d) Como fazer para evitar que as pessoas tenham acesso à listagem de arquivos
de uma determinada subpasta de sua www?
R: Basta remover as permissões de leitura do diretório em questão. Exemplo:
chmod go-r ~/www/diretorio
Após removidas as permissões de leitura do diretório, não será mais
possível às pessoas listarem os arquivos contidos nele.
Exercício 8 - HW
Suponha que um(a) namorado(a) muito chato que adora encher o saco durante
conversas pedindo para que você use câmeras e que você use apenas um notebook
- ou seja, a câmera não poderá ser removida trivialmente.
a) Como desinstalar a câmera de seu computador de forma a não ser
incomodado durante uma sessão de IM com suporte a câmeras? Na realidade,
como desinstalar esse tipo de coisa no Linux?
R: Deve-se encontrar inicialmente o módulo referenta à câmera, com o
comando "lsmod", após encontrado, utiliza se o comando "modprobe -r"
para removê-lo. Ex:
modprobe -r modulo_da_camera
b) Como exibir todos os módulos de dispositivos que estão instalados?
R: Pode-se utilizar o comando "lsmod" para listá-los, o comando
"modinfo" exibe mais informações de determinado módulo.
Exercício 9 - Acesso Remoto 2.0
Armando Naldel orienta você e mais dois estudantes em Computação Quântica, com
o final do semestre, ele pediu um relatório técnico acerca do seguinte artigo:
http://www.nature.com/nature/journal/v646/n7285/full/nature08812.html. O
problema é que você está na praia e não na USP, mas precisa ler tal artigo.
Pior! Seu notebook quebrou e o que sobrou foi aquela lan house fuleira que
permite fazer download de coisas, porém reseta as configurações quando o
computador é bootado.
a) Como fazer para acessar o site com o artigo como se você estivesse na
USP? (tente abri-lo de lá e entenderá).
R: Basta baixar o programa PuTTY e o Filezilla e seguir as instruções
da questão abaixo.
b) Com a providência divina, você encontrou o Paulo Brdinha que tinha um
notebook com Linux. Como fazer esse mesmo acesso a partir do Linux E usando
SSH? Note que você não tem tempo, portanto, usar o SSH com X não é a
solução adequada.
R: Conecte-se à Rede Linux por SSH; use o comando
"wget -r -np -k http://www.nature.com/nature/journal/v464/n7285/full/nature
08812.html"
, ele salvará a página em uma pasta. Use o sftp (ou o Filezilla, configurando
a conexão para SSH pela porta 22) para conectar-se novamente à
Rede Linux, e baixe a página salva. Agora a página salva pode ser visualizada no
navegador.

Você também pode gostar