O objetivo inicial é instalar e configurar basicamente o sistema operacional na máquina que atuará como principal servidor da rede.
É necessário estar com e rede funcional. Teste com o comando:
- 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 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.
vi /etc/ssh/sshd_config
PermitRootLogin yes
- Reinicie o serviço
- De sua máquina real conecte e faça testes.
- 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:
ssh -X aluno@192.168.2.2X
firefox
- 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:
- 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
- login: logo como outro usuário. Tem de estar como root
- 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.