Trivia
• Qual foi o 1º sistema de ficheiros implementado no kernel
Linux?
• O programa swapon cria novas partições de swap.
Sim/Não?
• Como podemos saber quais os sistemas de ficheiros
montados?
• Um exemplo de sistema de ficheiros journaling em Linux.
Gestão de Utilizadores em Linux
• Os utilizadores são identificados pelo “User ID”: UID.
• Cada utilizador pode pertencer a um ou mais grupos.
• Cada grupo possui também o seu identificador: GID.
/etc/passwd
• Os utilizadores do sistema estão definidos no
/etc/passwd
• Cada linha corresponde a um utilizador.
• Campos separados por “:”
• Todos obrigatórios, mas podem estar vazios.
/etc/passwd
• Formato:
nome:palavra-chave:UID:GID:nome-completo:pasta-do-utilizador:shell-por-omissão Nome:
Nome (único) do utilizador (max. 32 caracteres) Palavra-chave:
Palavra chave (cifrada) do utilizador, normalmente um ‘x’ (‘*’ desabilita o utilizador) UID:
Identificador único do utilizador (normalmente, para util. normais >100) GID:
Identificador do grupo a que o utilizador pertence por omissão Nome-completo:
Descrição textual do utilizador Pasta-do-utilizador:
Pasta onde o utilizador guarda os seus ficheiros Shell-por-omissão:
Shell a abrir por omissão (pode ser /dev/null; /sbin/nologin)
/etc/passwd
• Exemplo:
root:BeDyr8qulmhZ2:0:0:root:/root:/bin/bash daemon:*:2:2:daemon:/sbin:/bin/bash bin:*:1:1:bin:/bin:/bin/bash
postgres:*:26:2:Postgres Database Admin:/var/lib/pgsql:/bin/bash wwwrun:*:30:65534:Daemon user for apache:/tmp:/bin/bash
guest:a28HqK3Yamh7t:1001:102:Utilizador nosso convidado:/home/guest:/bin/csh user:uHr5fg6RtEw23:1002:102:Utilizador local:/home/user:/bin/bash
/etc/group
• Os grupos a que os utilizadores podem
pertencer estão no /etc/group
• Estrutura semelhante ao /etc/passwd
• É normal criar um grupo para cada utilizador
• Cada linha contém :
– Group name - define o nome do grupo – Password - Normalmente tem um "*" ou um "x". – Group Identifier(GID) – Identificador único do grupo. – Lista de utilizadores pertencentes ao grupo
/etc/group
• Exemplo:
root:x:0:root bin:x:1:root,bin,daemon daemon:x:2: users:x:102: nogroup:x:65534:rootProblema
• O ficheiro /etc/passwd tem de poder ser
lido por todos os utilizadores!
• Porquê?
– Exemplo: Se fizermos ls -l, o comando ls precisa ler o
/etc/passwd para saber a correspondência entre o UID e o
nome de um utilizador
• As palavras-chave no /etc/passwd estão
cifradas, mas…
/etc/shadow
• A solução é mover as palavras-chave do
/etc/passwd para o /etc/shadow
• O /etc/shadow só pode ser lido pelo root
• No /etc/passwd, o campo da palavra-chave
passa a um ‘x’, para indicar que estamos a
utilizar o /etc/shadow
/etc/shadow
• Além da palavra chave, possui mais alguma
informação
• Estrutura semelhante ao /etc/passwd
Nome:Nome do utilizador Palavra-chave:
Palavra chave (cifrada) do utilizador Data-modificação:
Última vez que a palavra-chave foi alterada Tempo de vida mínimo:
Intervalo de tempo mínimo entre modificações da palavra-chave Tempo de vida máximo:
Intervalo de tempo máximo entre modificações da palavra-chave Tempo de aviso:
Quanto tempo antes o utilizador será avisado que a sua palavra-chave irá expirar
Adicionar utilizadores
• Passos
– Editar /etc/passwd, /etc/shadow para definir o
utilizador
– Editar /etc/group
– Utilizar passwd para alterar a palavra chave
– Criar a pasta do utilizador e possível estrutura
– Copiar ficheiros e scripts
– Alterar permissões e dono dos anteriores
Ferramentas
• Existem algumas ferramentas básicas
para gerir os utilizadores e grupos:
– useradd
– usermod
– userdel
– groupadd
– groupmod
– groupdel
useradd
• useradd <nome-do-utilizador>:
– Adiciona utilizador aos /etc/passwd,
/etc/shadow;
– Cria um grupo no /etc/group;
– Copia os ficheiros sob /etc/skel para a nova
pasta do utilizador sob
/home/<nome-do-utilizador>– Muda as permissões dos anteriores
usermod, userdel
• usermod
– Modifica as configurações do utilizador
• userdel
– Apagar um utilizador
– Ainda temos de:
• Apagar pasta do utilizador e outros ficheiros deste
• …
groupadd, groupmod, groupdel
• Operações semelhantes, mas sobre os
grupos…
Desligar utilizadores
• Através da shell:
– Colocar “/sbin/nologin” no campo shell do /etc/passwd – Se for um utilizador normal, é habitual colocar um programa que
emita as razões porquê este está impedido de entrar no sistema
• Através da palavra-chave:
– Colocar um “!” no campo da palavra-chave do /etc/shadow – Equivalente a: passwd –l (-u para restaurar)
Atributos por omissão
• Atributos por omissão como:
– Pasta onde residem as caixas de correio;
– Intervalos de duração das palavras-chave;
– Gamas de valores para os UIDs e GIDs;
– Se a pasta do utilizador deve ser criada quando
utilizamos o useradd;
– …
São definidos em /etc/login.defs
Mensagens de entrada no sistema
• /etc/motd
– “Message of the Day”, apresentada depois da
entrada com sucesso do utilizador.
• /etc/issue
– Apresentada antes da entrada do utilizador,
no ecrã de apresentação das credenciais.
Exercício
• Todos os utilizadores do sistema devem ter, sob a sua pasta, uma pasta WWW (permissões 755), com um ficheiro de texto chamado robots.txt, com o conteúdo seguinte:
# go away User-agent: * Disallow: /
• Os utilizadores não devem poder alterar a palavra chave com uma frequência maior que dois dias e devem a mudar, pelo menos, todos os anos. • Adicionar 5 utilizadores com os UIDs 600, 601, …, 604, respectivamente. • Os utilizadores com UID 600, 602 e 603 pertencem ao grupo asi1_fd, com o
GID 101. Este possuem a palavra chave “asi1”
• Os utilizadores 601 e 504 pertencem asi1_gd. Não possuem palavra chave. • O utilizador com UID=601 deve ser um utilizador válido, mas sem acesso a
uma shell.
• Crie um utilizador “bigdog”, com permissões para aceder a todos os objectos do sistema.
Pluggable Authentication Modules
• Tradicionalmente um utilizador era autenticado com a
informação no /etc/passwd (e /etc/shadow)
• Outros mecanismos foram aparecendo:
– NIS, LDAP, Smart Cards, …
• Cada vez que é inventado um novo mecanismo de
autenticação, os programas (ftpd, sshd, …) tinham de
ser reescritos para os suportar
• PAM possibilita que os programas utilizem autenticação
independente do mecanismo subjacente
Pluggable Authentication Modules
• Não é mais que uma biblioteca de funções que
implementa um sistema flexível de autenticação
• Os ficheiro(s) de configuração:
– /etc/pam.conf ou
– /etc/pam.d/
– Em RH, a última opção.
• Cada aplicação que utiliza PAM tem um ficheiro
de configuração em /etc/pam.d/
Pluggable Authentication Modules
• Cada ficheiro contém a política de
autenticação para o serviço
• Cada linha deste ficheiro contém uma
directiva com os seguintes parâmetros:
– Tipo
– Acção-resultado
– Módulo
Pluggable Authentication Modules
• Tipo:
– Existem 4 tipos :
– auth : Procedimentos para a autenticação de utilizadores – account: Atributos das contas dos utilizadores – password: Verificam palavras-chave
– session: Configuram e gerem sessões dos utilizadores
• Acção-resultado:
– Sufficient – Requisite – Required – Optional
Pluggable Authentication Modules
• Módulo
– Indica qual o módulo PAM a utilizar
– Pequenos programas que indicam sucesso ou
insucesso
– Alguns exemplos:
• pam_deny: Retorna sempre insucesso • pam_permit: Retorna sempre sucesso
• pam_unix: Sucesso/insucesso de acordo autenticação tradicional • pam_nologin: Retorna insucesso, se o ficheiro /etc/nologin existir • pam_cracklib: Retorna insucesso, se a palavra chave não passar
um teste de qualidade • …
Pluggable Authentication Modules
• Exemplo :
auth required pam_securetty.so
auth required pam_nologin.so
auth required pam_unix.so
• sshd
auth required pam_stack.so service=system.out
auth required pam_nologin.so
account required pam_stack.so service=system.out
password required pam_stack.so service=system.out
session required pam_stack.so service=system.out
session required pam_limits.so
session required pam_console.so
nsswitch.conf
• Existem aplicações que utilizam rotinas do sistema para
obter informação como:
– Identificadores e nomes de utilizadores e grupos, nomes e endereços de máquinas, serviços, etc…
• Estas rotinas do sistema podem ter de ir buscar esta
informação de diversos repositórios:
– NIS, NIS+, LDAP, DNS, etc …
• As fontes de informação e respectiva ordem de
utilização é determinada pelo /etc/nsswitch.conf
nsswitch.conf
• Exemplo:
passwd: files nisplus nis shadow: files nisplus nis group: files nisplus nis hosts: files nisplus dns
bootparams: nisplus [NOTFOUND=return] files netgroup: files
ethers: files netmasks: files networks: files protocols: files nisplus rpc: files
services: files nisplus automount: files nisplus aliases: files nisplus