107.1 Lição 1
Certificação: |
LPIC-1 |
---|---|
Versão: |
5.0 |
Tópico: |
107 Tarefas administrativas |
Objetivo: |
107.1 Administrar contas de usuários, grupos e arquivos de sistema relacionados |
Lição: |
1 de 2 |
Introdução
A administração de usuários e grupos é uma parte fundamental do trabalho de qualquer administrador de sistema. As distribuições Linux modernas incluem interfaces gráficas que permitem gerenciar todas as atividades relacionadas a este aspecto com rapidez e facilidade. Essas interfaces são visualmente diferentes entre si, mas os recursos são os mesmos. Com essas ferramentas, torna-se possível visualizar, editar, adicionar e excluir usuários e grupos locais. No entanto, para tarefas de gerenciamento mais avançadas, é necessário usar a linha de comando.
Adicionando contas de usuário
No Linux, podemos adicionar uma nova conta de usuário com o comando useradd
. Por exemplo, com privilégios de root, criamos uma nova conta de usuário chamada michael
com uma configuração padrão, usando o seguinte:
# useradd michael
Quando você executa o comando useradd
, as informações do usuário e do grupo armazenadas nos bancos de dados de senha e grupo são atualizadas para a conta de usuário recém-criada e, caso especificado, o diretório inicial do novo usuário também é criado, bem como um grupo com o mesmo nome da nova conta de usuário.
Depois de criar o novo usuário, você pode definir a senha dele usando o comando passwd
. Para rever o ID de usuário (UID), ID de grupo (GID) e os grupos aos quais esse usuário pertence, usamos os comandos id
e groups
.
# passwd michael Changing password for user michael. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully. # id michael uid=1000(michael) gid=100(michael) groups=100(michael) # groups michael michael : michael
Note
|
Lembre-se de que qualquer usuário pode consultar seu UID, GID e os grupos aos quais pertence simplesmente usando os comandos |
As opções mais importantes que se aplicam ao comando useradd
são:
-c
-
Cria uma nova conta de usuário com comentários personalizados (por exemplo, o nome completo do usuário).
-d
-
Cria uma nova conta de usuário com um diretório pessoal personalizado.
-e
-
Cria uma nova conta de usuário definindo uma data específica na qual ela será desabilitada.
-f
-
Cria uma nova conta de usuário definindo o número de dias após a expiração de uma senha durante os quais o usuário deve atualizar a senha (caso contrário, a conta será desabilitada).
-g
-
Cria uma nova conta de usuário com um GID específico.
-G
-
Cria uma nova conta de usuário adicionando-a a diversos grupos secundários.
-k
-
Cria uma nova conta de usuário copiando os arquivos de esqueleto de um diretório personalizado específico (esta opção só é válida se a opção
-m
ou--create-home
for especificada). -m
-
Cria uma nova conta de usuário com seu diretório inicial (se ele não existir).
-M
-
Cria uma nova conta de usuário sem seu diretório inicial.
-s
-
Cria uma nova conta de usuário com um shell de login específico.
-u
-
Cria uma nova conta de usuário com um UID específico.
Veja a lista completa de opções nas páginas de manual do comando useradd
.
Modificando contas de usuário
Às vezes, precisamos alterar um atributo de uma conta de usuário existente, como o nome de login, o shell de login, a data de expiração da senha e assim por diante. Nesses casos, empregamos o comando usermod
.
# usermod -s /bin/tcsh michael # usermod -c "Michael User Account" michael
Assim como no caso de useradd
, o comando usermod
requer privilégios de root.
Nos exemplos acima, o shell de login de michael
é alterado primeiro e, em seguida, uma breve descrição é adicionada a esta conta de usuário. Lembre-se de que podemos modificar diversos atributos de uma vez, especificando-os em um único comando.
As opções mais importantes que se aplicam ao comando usermod
são:
-c
-
Adiciona um breve comentário à conta de usuário especificada.
-d
-
Altera o diretório inicial da conta de usuário especificada. Quando usado com a opção
-m
, o conteúdo do diretório inicial atual é movido para o novo diretório inicial, que é criado se ainda não existir. -e
-
Define a data de expiração da conta de usuário especificada.
-f
-
Define o número de dias após a expiração da senha durante os quais o usuário deve atualizá-la (caso contrário, a conta é desabilitada).
-g
-
Muda o grupo primário da conta de usuário especificada (o grupo deve existir).
-G
-
Adiciona grupos secundários à conta de usuário especificada. Cada grupo deve existir e ser separado do seguinte por uma vírgula, sem espaços em branco intermediários. Quando usada sozinha, esta opção remove todos os grupos existentes aos quais o usuário pertence; quando usada com a opção
-a
, ela simplesmente anexa novos grupos secundários aos existentes. -l
-
Altera o nome de login da conta de usuário especificada.
-L
-
Bloqueia a conta de usuário especificada. Um ponto de exclamação é posto na frente da senha criptografada dentro do arquivo
/etc/shadow
, desabilitando assim o acesso com senha para esse usuário. -s
-
Altera o shell de login da conta de usuário especificada.
-u
-
Altera o UID da conta de usuário especificada.
-U
-
Desbloqueia a conta de usuário especificada. Remove o ponto de exclamação na frente da senha criptografada no arquivo
/etc/shadow
.
Veja as páginas de manual do comando usermod
para a lista completa de opções.
Tip
|
Lembre que, ao alterar o nome de login de uma conta de usuário, você provavelmente deve renomear o diretório pessoal desse usuário e outros itens relacionados a ele, como arquivos de spool de email. Lembre também que, ao alterar o UID de uma conta de usuário, provavelmente será preciso corrigir a propriedade dos arquivos e diretórios que estejam fora do diretório inicial do usuário (o ID do usuário é alterado automaticamente na caixa de email do usuário e em todos os arquivos pertencentes ao usuário e localizados no diretório inicial do usuário). |
Excluindo contas de usuário
Se quiser excluir uma conta de usuário, você pode usar o comando userdel
. Em particular, este comando atualiza as informações armazenadas nos bancos de dados de contas, removendo todas as entradas referentes ao usuário especificado. A opção -r
também remove o diretório pessoal do usuário e todo o seu conteúdo, junto com o spool de email do usuário. Outros arquivos, localizados em outros locais, devem ser buscados e excluídos manualmente.
# userdel -r michael
Quanto a useradd
e usermod
, é necessário ter autoridade de root para excluir contas de usuário.
Adicionando, modificando e excluindo grupos
Como no caso do gerenciamento de usuários, podemos adicionar, modificar e excluir grupos usando os comandos groupadd
, groupmod
e groupdel
com privilégios de root. Se quiser criar um novo grupo chamado developer
, execute o seguinte comando:
# groupadd -g 1090 developer
A opção -g
deste comando cria um grupo com um GID específico.
Warning
|
Lembre-se de que quando você adiciona uma nova conta de usuário, o grupo primário e os grupos secundários aos quais ela pertence precisam existir antes de iniciar o comando |
Mais tarde, se você quiser renomear o grupo developer
para web-developer
e alterar seu GID, pode executar o seguinte:
# groupmod -n web-developer -g 1050 developer
Tip
|
Se você alterar o GID usando a opção |
Finalmente, para excluir o grupo web-developer
, execute o seguinte:
# groupdel web-developer
Não é possível excluir um grupo caso se trate do grupo principal de uma conta de usuário. Portanto, é preciso remover o usuário antes de remover o grupo. Quanto aos usuários, se você excluir um grupo, os arquivos pertencentes a esse grupo permanecerão em seu sistema de arquivos e não serão excluídos ou atribuídos a outro grupo.
O diretório de esqueleto
Quando você adiciona uma nova conta de usuário e cria seu diretório inicial, o diretório inicial recém-criado é preenchido com arquivos e pastas copiados do diretório de esqueleto (por padrão /etc/skel
). A ideia é simples: um administrador de sistema deseja adicionar novos usuários que tenham os mesmos arquivos e diretórios em sua pasta pessoal. Portanto, caso queira personalizar os arquivos e pastas criados automaticamente no diretório inicial das novas contas de usuário, você deve adicionar esses novos arquivos e pastas ao diretório de esqueleto.
Tip
|
Se quiser listar todos os arquivos e diretórios no diretório de esqueleto, use o comando |
IO arquivo /etc/login.defs
No Linux, o arquivo /etc/login.defs
especifica os parâmetros de configuração que controlam a criação de usuários e grupos. Além disso, os comandos mostrados nas seções anteriores utilizam os valores padrão deste arquivo.
As diretivas mais importantes são:
UID_MIN
eUID_MAX
-
O intervalo de IDs de usuário que podem ser atribuídos a novos usuários comuns.
GID_MIN
eGID_MAX
-
O intervalo de IDs de grupo que podem ser atribuídos a novos grupos comuns.
CREATE_HOME
-
Especifica se um diretório pessoal deve ser criado por padrão para novos usuários.
USERGROUPS_ENAB
-
Especifica se o sistema deve, por padrão, criar um novo grupo para cada nova conta de usuário com o mesmo nome do usuário, e se, ao deletar a conta do usuário, o grupo primário do usuário também deve ser removido, caso não contenha mais membros.
MAIL_DIR
-
O diretório de spool de email.
PASS_MAX_DAYS
-
O número máximo de dias que uma senha pode ser usada.
PASS_MIN_DAYS
-
O número mínimo de dias permitido entre mudanças de senha.
PASS_MIN_LEN
-
O comprimento mínimo aceitável da senha.
PASS_WARN_AGE
-
O número de dias de aviso antes que uma senha expire.
Tip
|
Ao gerenciar usuários e grupos, sempre verifique este arquivo para visualizar e, eventualmente, alterar o comportamento padrão do sistema, se necessário. |
O comando passwd
Este comando é usado principalmente para alterar a senha de um usuário. Conforme descrito anteriormente, qualquer usuário pode alterar sua própria senha, mas apenas o root pode alterar a senha de qualquer usuário. Isso acontece porque o comando passwd
tem o bit SUID definido (um s
no lugar do sinalizador executável para o proprietário), o que significa que ele é executado com os privilégios do proprietário do arquivo (portanto, root).
# ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 42096 mag 17 2015 /usr/bin/passwd
Dependendo das opções utilizadas com passwd
, é possível controlar aspectos específicos do envelhecimento da senha:
-d
-
Apaga a senha de uma conta de usuário (desabilitando o usuário).
-e
-
Força a conta de usuário a alterar a senha.
-i
-
Define o número de dias de inatividade após a expiração de uma senha, durante os quais o usuário deve atualizar a senha (caso contrário, a conta será desabilitada).
-l
-
Bloqueia a conta de usuário (a senha criptografada é prefixada com um ponto de exclamação no arquivo
/etc/shadow
). -n
-
Define o tempo de vida mínimo da senha.
-S
-
Exibe informações sobre o status da senha de uma conta de usuário específica.
-u
-
Desbloqueia a conta do usuário (o ponto de exclamação é removido do campo de senha no arquivo
/etc/shadow
). -x
-
Define o tempo de vida máximo da senha.
-w
-
Define o número de dias de aviso antes que a senha expire, durante os quais o usuário é advertido de que a senha deve ser alterada.
Note
|
Os grupos também podem ter uma senha, que pode ser definida usando o comando |
O comando chage
Este comando, que significa “alterar idade” (change age), é usado para alterar as informações de validade da senha de um usuário. O comando chage
é restrito ao root, exceto com a opção -l
, que pode ser executada por usuários comuns para listar informações sobre a expiração de senha de suas próprias contas.
As outras opções que se aplicam ao comando chage
são:
-d
-
Define a última alteração de senha para uma conta de usuário.
-E
-
Define a data de expiração para uma conta de usuário.
-I
-
Define o número de dias de inatividade após a expiração de uma senha, durante os quais o usuário deve atualizar a senha (caso contrário, a conta será desabilitada).
-m
-
Define o tempo de vida mínimo da senha para uma conta de usuário.
-M
-
Define o tempo de vida máximo da senha para uma conta de usuário.
-W
-
Define o número de dias de aviso antes que a senha expire, durante os quais o usuário é advertido de que a senha deve ser alterada.
Exercícios Guiados
-
Identifique a finalidade correspondente a cada um dos comandos a seguir:
usermod -L
passwd -u
chage -E
groupdel
useradd -s
groupadd -g
userdel -r
usermod -l
groupmod -n
useradd -m
-
Identifique o comando
chage
correspondente a cada um dos seguintes comandospasswd
:passwd -n
passwd -x
passwd -w
passwd -i
passwd -S
-
Explique em detalhes a finalidade dos comandos da questão anterior:
-
Que comandos podemos usar para bloquear uma conta de usuário? E quais comandos para desbloqueá-la?
Exercícios Exploratórios
-
Usando o comando
groupadd
, crie os gruposadministrators
edevelopers
. Suponha que você esteja logado como root. -
Depois de criar os grupos, execute o seguinte comando:
useradd -G administrators,developers kevin
. Quais operações esse comando realiza? Suponha queCREATE_HOME
eUSERGROUPS_ENAB
em/etc/login.defs
estão definidos comoyes
. -
Crie um novo grupo chamado
designers
, renomeie-o comoweb-designers
e adicione esse novo grupo aos grupos secundários da conta de usuáriokevin
. Identifique todos os grupos a quekevin
pertence e seus IDs. -
Remova apenas o grupo
developers
dos grupos secundários dekevin
. -
Defina a senha para a conta de usuário
kevin
. -
Usando o comando
chage
, primeiro verifique a data de expiração da conta de usuáriokevin
e depois altere-a para 31 de dezembro de 2022. Que outro comando pode ser usado para alterar a data de expiração de uma conta de usuário? -
Adicione uma nova conta de usuário chamada
emma
com UID 1050 e definaadministrators
como seu grupo principal edevelopers
eweb-designers
como seus grupos secundários. -
Mude o shell de login de
emma
para/bin/sh
. -
Remova as contas de usuário
emma
ekevin
e os gruposadministrators
,developers
eweb-designers
.
Resumo
Nesta lição, você aprendeu:
-
Os fundamentos do gerenciamento de usuários e grupos no Linux.
-
Como adicionar, modificar e remover contas de usuário.
-
Como adicionar, modificar e remover contas de grupo.
-
Manter o diretório de esqueleto.
-
Editar o arquivo que controla a criação de usuários e grupos.
-
Alterar as senhas das contas de usuário.
-
Alterar as informações de validade da senha das contas de usuário.
Os seguintes arquivos e comandos foram discutidos nesta lição:
useradd
-
Cria uma nova conta de usuário.
usermod
-
Modifica uma conta de usuário.
userdel
-
Exclui uma conta de usuário.
groupadd
-
Cria uma nova conta de grupo.
groupmod
-
Modifica uma conta de grupo.
groupdel
-
Exclui uma conta de grupo.
passwd
-
Altera a senha das contas de usuário e controla todos os aspectos do envelhecimento da senha.
chage
-
Altera as informações de expiração da senha do usuário.
/etc/skel
-
A localização padrão do diretório de esqueleto.
/etc/login.defs
-
O arquivo que controla a criação de usuários e grupos e fornece valores padrão para diversos parâmetros de contas de usuário.
Respostas aos Exercícios Guiados
-
Identifique a finalidade correspondente a cada um dos comandos a seguir:
usermod -L
Bloquear a conta de usuário
passwd -u
Desbloquear a conta de usuário
chage -E
Definir a data de expiração da conta de usuário
groupdel
Excluir o grupo
useradd -s
Criar uma nova conta de usuário com um shell de login específico
groupadd -g
Criar um novo grupo com um GID específico
userdel -r
Remover a conta de usuário e todos os arquivos em seu diretório inicial, o próprio diretório inicial e o spool de email do usuário
usermod -l
Alterar o nome de login da conta de usuário
groupmod -n
Alterar o nome do grupo
useradd -m
Criar uma nova conta de usuário e seu diretório inicial
-
Identifique o comando
chage
correspondente a cada um dos seguintes comandospasswd
:passwd -n
chage -m
passwd -x
chage -M
passwd -w
chage -W
passwd -i
chage -I
passwd -S
chage -l
-
Explique em detalhes a finalidade dos comandos da questão anterior:
No Linux, podemos usar o comando
passwd -n
(ouchage -m
) para definir o número mínimo de dias entre as mudanças de senha, o comandopasswd -x
(ouchage -M
) para definir o número máximo de dias durante os quais uma senha é válida, o comandopasswd -w
(ouchage -W
) para definir o número de dias de aviso antes que a senha expire, o comandopasswd -i
(ouchage -I
) para definir o número de dias de inatividade durante os quais o usuário deve alterar a senha e o comandopasswd -S
(ouchage -l
) para exibir informações breves sobre a senha da conta de usuário. -
Que comandos podemos usar para bloquear uma conta de usuário? E quais comandos para desbloqueá-la?
Se quisermos bloquear uma conta de usuário, podemos usar um destes comandos:
usermod -L
,usermod --lock
epasswd -l
. Já para desbloqueá-la, os comandos seriamusermod -U
,usermod --unlock
epasswd -u
.
Respostas aos Exercícios Exploratórios
-
Usando o comando
groupadd
, crie os gruposadministrators
edevelopers
. Suponha que você esteja logado como root.# groupadd administrators # groupadd developers
-
Depois de criar os grupos, execute o seguinte comando:
useradd -G administrators,developers kevin
. Quais operações esse comando realiza? Suponha queCREATE_HOME
eUSERGROUPS_ENAB
em/etc/login.defs
estão definidos comoyes
.O comando adiciona um novo usuário, chamado
kevin
, à lista de usuários do sistema, cria seu diretório inicial (CREATE_HOME
é definido como sim e, portanto, a opção -m pode ser omitida) e cria um grupo, chamadokevin
, como grupo principal dessa conta de usuário (USERGROUPS_ENAB
é definido como sim). Finalmente, os arquivos e pastas contidos em um diretório de esqueleto são copiados para o diretório inicial dekevin
. -
Crie um novo grupo chamado
designers
, renomeie-o comoweb-designers
e adicione esse novo grupo aos grupos secundários da conta de usuáriokevin
. Identifique todos os grupos a quekevin
pertence e seus IDs.# groupadd designers # groupmod -n web-designers designers # usermod -a -G web-designers kevin # id kevin uid=1010(kevin) gid=1030(kevin) groups=1030(kevin),1028(administrators),1029(developers),1031(web-designers)
-
Remova apenas o grupo
developers
dos grupos secundários dekevin
.# usermod -G administrators,web-designers kevin # id kevin uid=1010(kevin) gid=1030(kevin) groups=1030(kevin),1028(administrators),1031(web-designers)
O comando
usermod
não inclui a opção de remover apenas um grupo; portanto, você precisa especificar todos os grupos secundários aos quais o usuário pertence. -
Defina a senha para a conta de usuário
kevin
.# passwd kevin Changing password for user kevin. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.
-
Usando o comando
chage
, primeiro verifique a data de expiração da conta de usuáriokevin
e depois altere-a para 31 de dezembro de 2022. Que outro comando pode ser usado para alterar a data de expiração de uma conta de usuário?# chage -l kevin | grep "Account expires" Account expires : never # chage -E 2022-12-31 kevin # chage -l kevin | grep "Account expires" Account expires : dec 31, 2022
O comando
usermod
com a opção-e
equivale achage -E
. -
Adicione uma nova conta de usuário chamada
emma
com UID 1050 e definaadministrators
como seu grupo principal edevelopers
eweb-designers
como seus grupos secundários.# useradd -u 1050 -g administrators -G developers,web-designers emma # id emma uid=1050(emma) gid=1028(administrators) groups=1028(administrators),1029(developers),1031(web-designers)
-
Mude o shell de login de
emma
para/bin/sh
.# usermod -s /bin/sh emma
-
Remova as contas de usuário
emma
ekevin
e os gruposadministrators
,developers
eweb-designers
.# userdel -r emma # userdel -r kevin # groupdel administrators # groupdel developers # groupdel web-designers