107.1 Lição 2
Certificação: |
LPIC-1 |
---|---|
Versão: |
5.0 |
Tópico: |
107 Tarefas administrativas |
Objetivo: |
107.1 Gerenciar contas de usuários e grupos e arquivos de sistema relacionados |
Lição: |
2 de 2 |
Introdução
As ferramentas de linha de comando discutidas na lição anterior e os aplicativos gráficos (fornecidos pelas distribuições) que executam as mesmas tarefas atualizam uma série de arquivos nos quais são armazenadas informações sobre os usuários e grupos.
Esses arquivos ficam no diretório /etc/
e são:
/etc/passwd
-
Um arquivo de sete campos delimitados por dois pontos contendo informações básicas sobre os usuários.
/etc/group
-
Um arquivo de quatro campos delimitados por dois pontos contendo informações básicas sobre os grupos.
/etc/shadow
-
Um arquivo de nove campos delimitados por dois pontos contendo senhas de usuário criptografadas.
/etc/gshadow
-
Um arquivo de quatro campos delimitados por dois pontos contendo senhas de grupo criptografadas.
Embora esses quatro arquivos estejam em texto simples, eles não devem jamais ser editados diretamente, mas sim por meio das ferramentas fornecidas pela distribuição que se está usando.
/etc/passwd
Este é um arquivo legível por todos contendo uma lista de usuários em linhas separadas. Cada linha consiste em sete campos delimitados por dois pontos:
- Nome de usuário
-
O nome usado quando o usuário se loga no sistema.
- Senha
-
A senha criptografada (ou um
x
no caso de senhas shadow). - ID de usuário (UID)
-
O número de identificação atribuído ao usuário no sistema.
- ID de grupo (GID)
-
O número do grupo principal do usuário no sistema.
- GECOS
-
Um campo de comentário opcional, usado para adicionar informações extras sobre o usuário (como o nome completo). O campo pode conter várias entradas separadas por vírgulas.
- Diretório inicial
-
O caminho absoluto do diretório inicial do usuário.
- Shell
-
O caminho absoluto do programa que é iniciado automaticamente quando o usuário efetua login no sistema (geralmente um shell interativo como
/bin/bash
).
/etc/group
Este é um arquivo legível por todos contendo uma lista de grupos em linhas separadas. Cada linha consiste em quatro campos delimitados por dois pontos:
- Nome do grupo
-
O nome do grupo.
- Senha do grupo
-
A senha criptografada do grupo (ou um
x
se forem usadas senhas shadow). - ID do grupo (GID)
-
O número de identificação atribuído ao grupo no sistema.
- Lista de membros
-
Uma lista delimitada por vírgulas de usuários pertencentes ao grupo, exceto aqueles para os quais este é o grupo principal.
/etc/shadow
Este é um arquivo que pode ser lido apenas pelo root e por usuários com privilégios de root contendo senhas de usuário criptografadas em linhas separadas. Cada linha consiste em nove campos delimitados por dois pontos:
- Nome de usuário
-
O nome usado quando o usuário se loga no sistema.
- Senha criptografada
-
A senha criptografada do usuário (se o valor começar com
!
, a conta está bloqueada). - Data da última mudança de senha
-
A data da última alteração de senha, em número de dias desde 01/01/1970 (o valor 0 significa que o usuário deve alterar a senha no próximo login).
- Idade mínima da senha
-
O número mínimo de dias que devem decorrer após uma alteração de senha para que o usuário tenha permissão de alterar a senha novamente.
- Idade máxima da senha
-
O número máximo de dias que devem se passar antes que uma alteração de senha seja necessária.
- Período de aviso de senha
-
O número de dias até a expiração da senha, durante os quais o usuário é avisado de que a senha deve ser alterada.
- Período de inatividade da senha
-
O número de dias após a expiração de uma senha, durante os quais o usuário deve atualizá-la. Após esse período, se o usuário não alterar a senha, a conta é desativada.
- Data de expiração da conta
-
A data, em número de dias desde 01/01/1970, na qual a conta do usuário será desativada. Um campo vazio indica que a conta do usuário nunca expirará.
- Um campo reservado
-
Um campo reservado para uso futuro.
/etc/gshadow
Este é um arquivo legível apenas pelo root e por usuários com privilégios de root que contém senhas criptografadas para grupos em linhas separadas. Cada linha consiste em quatro campos delimitados por dois pontos:
- Nome do grupo
-
O nome do grupo.
- Senha criptografada
-
A senha criptografada do grupo (é usada quando um usuário que não é membro do grupo deseja ingressar no grupo usando o comando
newgrp
-- se a senha começar com!
, ninguém tem permissão de acessar o grupo comnewgrp
). - Administradores do grupo
-
Uma lista dos administradores do grupo delimitada por vírgulas (eles podem alterar a senha do grupo, bem como adicionar ou remover membros do grupo com o comando
gpasswd
). - Membros do grupo
-
Uma lista dos membros do grupo delimitada por vírgulas.
Como filtrar os bancos de dados de senha e grupo
É frequentemente necessário rever as informações sobre usuários e grupos armazenadas nesses quatro arquivos e pesquisar por registros específicos. Para realizar esta tarefa, usamos o comando grep
ou, alternativamente, concatenamos cat
e grep
.
# grep emma /etc/passwd emma:x:1020:1020:User Emma:/home/emma:/bin/bash # cat /etc/group | grep db-admin db-admin:x:1050:grace,frank
Outra maneira de acessar esses bancos de dados é usar o comando getent
. Em geral, esse comando exibe entradas de bancos de dados suportados pelas bibliotecas Name Service Switch (NSS) e requer o nome do banco de dados e uma chave de pesquisa. Se nenhum argumento-chave for fornecido, todas as entradas do banco de dados especificado serão exibidas (a menos que o banco de dados não suporte enumeração). Caso contrário, se um ou mais argumentos-chave forem fornecidos, o banco de dados será filtrado de acordo.
# getent passwd emma emma:x:1020:1020:User Emma:/home/emma:/bin/bash # getent group db-admin db-admin:x:1050:grace,frank
O comando getent
não requer autoridade de root; você só precisa ter a permissão para ler o banco de dados do qual deseja recuperar os registros.
Note
|
Lembre-se de que o |
Exercícios Guiados
-
Analise esta saída e responda às questões a seguir:
# cat /etc/passwd | grep '\(root\|mail\|catherine\|kevin\)' root:x:0:0:root:/root:/bin/bash mail:x:8:8:mail:/var/spool/mail:/sbin/nologin catherine:x:1030:1025:User Chaterine:/home/catherine:/bin/bash kevin:x:1040:1015:User Kevin:/home/kevin:/bin/bash # cat /etc/group | grep '\(root\|mail\|db-admin\|app-developer\)' root:x:0: mail:x:8: db-admin:x:1015:emma,grace app-developer:x:1016:catherine,dave,christian # cat /etc/shadow | grep '\(root\|mail\|catherine\|kevin\)' root:$6$1u36Ipok$ljt8ooPMLewAhkQPf.lYgGopAB.jClTO6ljsdczxvkLPkpi/amgp.zyfAN680zrLLp2avvpdKA0llpssdfcPppOp:18015:0:99999:7::: mail:*:18015:0:99999:7::: catherine:$6$ABCD25jlld14hpPthEFGnnssEWw1234yioMpliABCdef1f3478kAfhhAfgbAMjY1/BAeeAsl/FeEdddKd12345g6kPACcik:18015:20:90:5::: kevin:$6$DEFGabc123WrLp223fsvp0ddx3dbA7pPPc4LMaa123u6Lp02Lpvm123456pyphhh5ps012vbArL245.PR1345kkA3Gas12P:18015:0:60:7:2:: # cat /etc/gshadow | grep '\(root\|mail\|db-admin\|app-developer\)' root:*:: mail:*:: db-admin:!:emma:emma,grace app-developer:!::catherine,dave,christian
-
Qual o identificador de usuário (UID) e identificador de grupo (GID) de
root
ecatherine
? -
Qual o nome do grupo principal de
kevin
? Existem outros membros neste grupo? -
Qual shell está configurado para
mail
? O que isso significa? -
Quem são os membros do grupo
app-developer
? Quais deles são administradores e quais são membros comuns do grupo? -
Qual o tempo de vida mínimo da senha de
catherine
? E qual o tempo de vida máximo da senha? -
Qual o período de inatividade da senha para
kevin
?
-
-
Por convenção, quais IDs são atribuídos às contas do sistema e quais aos usuários comuns?
-
Como você descobre se uma conta de usuário, anteriormente capaz de acessar o sistema, agora está bloqueada? Suponha que seu sistema use senhas shadow.
Exercícios Exploratórios
-
Crie uma conta de usuário chamada
christian
usando o comandouseradd -m
e identifique sua ID de usuário (UID), ID de grupo (GID) e shell. -
Identifique o nome do grupo principal de
christian
. O que podemos deduzir? -
Usando o comando
getent
, reveja as informações de validade da senha para a conta de usuáriochristian
. -
Adicione o grupo
editor
aos grupos secundários dechristian
. Suponha que este grupo já contenhaemma
,dave
efrank
como membros comuns. Como você pode conferir se não há administradores para este grupo? -
Execute o comando
ls -l /etc/passwd /etc/group /etc/shadow /etc/gshadow
e descreva a saída em termos de permissões de arquivos. Quais desses quatro arquivos estão em shadow por razões de segurança? Pressuponha que seu sistema usa senhas shadow.
Resumo
Nesta lição, você aprendeu:
-
A localização dos arquivos que armazenam informações sobre usuários e grupos.
-
Gerenciar informações de usuários e grupos armazenadas em bancos de dados de senhas e grupos.
-
Recuperar informações de bancos de dados de senha e grupo.
Os seguintes arquivos e comandos foram discutidos nesta lição:
/etc/passwd
-
O arquivo que contém informações básicas sobre os usuários.
/etc/group
-
O arquivo que contém informações básicas sobre grupos.
/etc/shadow
-
O arquivo que contém senhas de usuário criptografadas.
/etc/gshadow
-
O arquivo que contém as senhas de grupo criptografadas.
getent
-
Filtra os bancos de dados de senha e grupo.
Respostas aos Exercícios Guiados
-
Analise esta saída e responda às questões a seguir:
# cat /etc/passwd | grep '\(root\|mail\|catherine\|kevin\)' root:x:0:0:root:/root:/bin/bash mail:x:8:8:mail:/var/spool/mail:/sbin/nologin catherine:x:1030:1025:User Chaterine:/home/catherine:/bin/bash kevin:x:1040:1015:User Kevin:/home/kevin:/bin/bash # cat /etc/group | grep '\(root\|mail\|db-admin\|app-developer\)' root:x:0: mail:x:8: db-admin:x:1015:emma,grace app-developer:x:1016:catherine,dave,christian # cat /etc/shadow | grep '\(root\|mail\|catherine\|kevin\)' root:$6$1u36Ipok$ljt8ooPMLewAhkQPf.lYgGopAB.jClTO6ljsdczxvkLPkpi/amgp.zyfAN680zrLLp2avvpdKA0llpssdfcPppOp:18015:0:99999:7::: mail:*:18015:0:99999:7::: catherine:$6$ABCD25jlld14hpPthEFGnnssEWw1234yioMpliABCdef1f3478kAfhhAfgbAMjY1/BAeeAsl/FeEdddKd12345g6kPACcik:18015:20:90:5::: kevin:$6$DEFGabc123WrLp223fsvp0ddx3dbA7pPPc4LMaa123u6Lp02Lpvm123456pyphhh5ps012vbArL245.PR1345kkA3Gas12P:18015:0:60:7:2:: # cat /etc/gshadow | grep '\(root\|mail\|db-admin\|app-developer\)' root:*:: mail:*:: db-admin:!:emma:emma,grace app-developer:!::catherine,dave,christian
-
Qual o identificador de usuário (UID) e identificador de grupo (GID) de
root
ecatherine
?O UID e GID de
root
são 0 e 0, ao passo que o UID e GID decatherine
são 1030 e 1025. -
Qual o nome do grupo principal de
kevin
? Existem outros membros neste grupo?O nome do grupo é
db-admin
.emma
egrace
também estão nesse grupo. -
Qual shell está configurado para
mail
? O que isso significa?mail
é uma conta de usuário do sistema e seu shell é/sbin/nologin
. Na verdade, as contas de usuário do sistema comomail
,ftp
,news
edaemon
são usadas para realizar tarefas administrativas e, portanto, é necessário evitar que essas contas façam login normalmente. É por essa razão que o shell costuma ser configurado para/sbin/nologin
ou/bin/false
. -
Quem são os membros do grupo
app-developer
? Quais deles são administradores e quais são membros comuns do grupo?Os membros são
catherine
,dave
echristian
, e eles são todos membros comuns. -
Qual o tempo de vida mínimo da senha de
catherine
? E qual o tempo de vida máximo da senha?A vida útil mínima da senha é de 20 dias e a vida útil máxima da senha é 90 dias.
-
Qual o período de inatividade da senha para
kevin
?O período de inatividade da senha é de 2 dias. Durante este período,
kevin
deve atualizar a senha, caso contrário a conta será desativada.
-
-
Por convenção, quais IDs são atribuídos às contas do sistema e quais aos usuários comuns?
As contas do sistema geralmente têm UIDs menores que 100 ou entre 500 e 1000, enquanto os usuários comuns têm UIDs começando em 1000 (embora alguns sistemas legados comecem a numerar em 500). O usuário
root
tem UID 0. Os valoresUID_MIN
eUID_MAX
em/etc/login.defs
definem a faixa de UIDs usados para a criação de usuários comuns. Do ponto de vista do LPI Linux Essentials e do LPIC-1, as contas do sistema têm UIDs menores que 1000 e os usuários comuns têm UIDs maiores que 1000. -
Como você descobre se uma conta de usuário, anteriormente capaz de acessar o sistema, agora está bloqueada? Suponha que seu sistema use senhas shadow.
Quando se usam senhas shadow, o segundo campo em
/etc/passwd
contém o caracterex
de cada conta de usuário, pois as senhas de usuário criptografadas são armazenadas em/etc/shadow
. Em particular, a senha criptografada de uma conta de usuário é armazenada no segundo campo deste arquivo e, se ela iniciar com um ponto de exclamação, a conta está bloqueada.
Respostas aos Exercícios Exploratórios
-
Crie uma conta de usuário chamada
christian
usando o comandouseradd -m
e identifique sua ID de usuário (UID), ID de grupo (GID) e shell.# useradd -m christian # cat /etc/passwd | grep christian christian:x:1050:1060::/home/christian:/bin/bash
O UID e GID de
christian
são 1050 e 1060 respectivamente (o terceiro e o quarto campos em/etc/passwd
)./bin/bash
é o shell definido para esta conta de usuário (o sétimo campo em/etc/passwd
). -
Identifique o nome do grupo principal de
christian
. O que podemos deduzir?# cat /etc/group | grep 1060 christian:x:1060:
O nome do grupo principal de
christian
échristian
(o primeiro campo em/etc/group
). Portanto,USERGROUPS_ENAB
em/etc/login.defs
é definido como sim, de modo queuseradd
cria, por padrão, um grupo com o mesmo nome da conta de usuário. -
Usando o comando
getent
, reveja as informações de validade da senha para a conta de usuáriochristian
.# getent shadow christian christian:!:18015:0:99999:7:::
A conta de usuário
christian
não tem a senha definida e agora está bloqueada (o segundo campo em/etc/shadow
contém um ponto de exclamação). Não há idade mínima e máxima de senha para esta conta de usuário (o quarto e o quinto campos em/etc/shadow
estão definidos como 0 e 99999 dias), ao passo que o período de aviso de senha está configurado para 7 dias (o sexto campo em/etc/shadow
). Finalmente, não há período de inatividade (o sétimo campo em/etc/shadow
) e a conta jamais expira (o oitavo campo em/etc/shadow
). -
Adicione o grupo
editor
aos grupos secundários dechristian
. Suponha que este grupo já contenhaemma
,dave
efrank
como membros comuns. Como você pode conferir se não há administradores para este grupo?# cat /etc/group | grep editor editor:x:1100:emma,dave,frank # usermod -a -G editor christian # cat /etc/group | grep editor editor:x:1100:emma,dave,frank,christian # cat /etc/gshadow | grep editor editor:!::emma,dave,frank,christian
O terceiro e quarto campos em
/etc/ghadow
contêm administradores e membros comuns do grupo especificado. Portanto, como o terceiro campo deeditor
está vazio, este grupo não tem administradores (emma
,dave
,frank
echristian
são todos membros comuns). -
Execute o comando
ls -l /etc/passwd /etc/group /etc/shadow /etc/gshadow
e descreva a saída em termos de permissões de arquivos. Quais desses quatro arquivos estão em shadow por razões de segurança? Pressuponha que seu sistema usa senhas shadow.# ls -l /etc/passwd /etc/group /etc/shadow /etc/gshadow -rw-r--r-- 1 root root 853 mag 1 08:00 /etc/group -rw-r----- 1 root shadow 1203 mag 1 08:00 /etc/gshadow -rw-r--r-- 1 root root 1354 mag 1 08:00 /etc/passwd -rw-r----- 1 root shadow 1563 mag 1 08:00 /etc/shadow
Os arquivos
/etc/passwd
e/etc/group
são legíveis por todos e estão na sombra por motivos de segurança. Quando senhas shadow são usadas, vemos umx
no segundo campo desses arquivos, pois as senhas criptografadas de usuários e grupos são armazenadas em/etc/shadow
e/etc/gshadow
, que são legíveis somente por root e, em meu sistema, até mesmo pelos membros do gruposhadow
.