PJI11103-2015-2: mudanças entre as edições
Sem resumo de edição |
|||
Linha 381: | Linha 381: | ||
LAST_GID=29999 #Número máximo 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. | QUOTAUSER="" #Se o sistema de cotas estiver funcional, pode atribuir quota ao usuário criado. | ||
=== Atividade === | === Atividade === | ||
Linha 407: | Linha 408: | ||
#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. | #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. | #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}} | |||
{{Collapse top |Aula 3 - 13/10/15: Criação de usuários e grupos, permissionamento de arquivos e SSH}} | |||
==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). | |||
# 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, faça com que os usuários sejam criados com o seguinte perfil, por padrão: | |||
## Iniciar a numeração de usuários (ID) a partir de 1500. | |||
# Modificando os arquivos /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. | |||
# Crie um usuário com o nome de jose usando o comando adduser, pertencente ao grupo turma. | |||
# Dê ao usuário manoel a senha jose123. | |||
# Crie o diretório manoel em /home/contas. | |||
# Crie um usuário com o nome de manoel usando o comando useradd, pertencente ao grupo turma e com o diretório home sendo /home/contas/manoel. Qual a diferença entre os dois comandos? | |||
# 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. | |||
==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. | |||
#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 | |||
#Permitindo acesso ao serviço somente para algumas redes: | |||
vi /etc/hosts.allow | |||
sshd: 192.168.X.X | |||
vi /etc/hosts.deny | |||
sshd: ALL | |||
{{Collapse bottom}} | {{Collapse bottom}} |
Edição das 10h14min de 13 de outubro de 2015
PJI11103-2015-2
1 Diário de aula de PJI - 2015-2 - Prof. Simara Sonaglio
1.1 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.
1.2 Plano de Ensino
2 Diário de aulas

IPs e sub-domínios DNSs destinados às respectivas equipes:
- 200.135.37.121 - prji1.sj.ifsc.edu.br
- 200.135.37.122 - prji2.sj.ifsc.edu.br
- 200.135.37.123 - prji3.sj.ifsc.edu.br
Aula 1 - 06/10/15: Apresentação da disciplina |
---|
|
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.)
Editor VI Objetivo: Familiarização com o editor e ser capaz de executar comandos simples, porém úteis para manipulação de arquivos.
|
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. 2.1 Instalando o sistema operacionalAs etapas básicas consistem em:
2.2 Conferindo e aprendendo sobre instalação de pacotesSlide). Página oficial do apt-get É necessário estar com e rede funcional. Teste com o comando: ping www.ifsc.edu.br
2.3 Configuração básica da interface de rede
|
Aula 3 - 13/10/15: Criação de usuários e grupos, permissionamento de arquivos e SSH |
---|
2.6 Usuários e gruposCriaçã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:
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:
O arquivo /etc/shadow armazena exclusivamente as informações relativas a senha e validade da conta. Nele cada conta possui as seguintes informações:
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:
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. 2.6.1 Gerenciamento de usuários e gruposPara 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:
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. 2.6.2 AtividadeEsta parte da atividade cada aluno executa individualmente em sua máquina, fazendo uso da devida máquina virtual (PRJ3).
Atividade a ser realizada no servidor da equipe
2.7 Habilitando acesso remoto com SSHVer capítulo 33 da apostila. Atividade individual, cada aluno em sua máquina virtual (PRJ3)
tail /var/log/auth.log
vi /etc/hosts.allow sshd: 192.168.X.X vi /etc/hosts.deny sshd: ALL |