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).
- 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.