Fundamentos do sistema Linux - usuários e grupos

O Linux foi desenvolvido desde o começo para trabalhar em rede. Por isso, ele possui suporte a usuários e grupos, que garantem uma organização e segurança ao sistema. Neste artigo veremos os conceitos de usuários e grupos, bem como os métodos para manipulá-los.

[ Hits: 153.357 ]

Por: Davidson Rodrigues Paulo em 04/11/2005 | Blog: http://davidsonpaulo.com/


Manipulando contas de usuários



Criando uma nova conta de usuário


Somente o administrador do sistema pode criar, excluir ou modificar os dados dos usuários do sistema. Os procedimentos para a criação de uma nova conta de usuário são os seguintes:
  1. Criar uma entrada para o usuário no arquivo /etc/passwd;
  2. Especificar uma senha;
  3. Especificar um Shell de login;
  4. Criar um diretório pessoal para o usuário;
  5. Colocar neste diretório pessoal arquivos úteis ao usuário.

Os passos 4 e 5 são opcionais.

Existem dois comandos que podem ser utilizados para adicionar um usuário. Um deles é o useradd. Sua sintaxe é a seguinte:

useradd [opções] [login]

Em [login] deve-se colocar o nome de login do usuário que está sendo criado. As opções disponíveis são:
  • -c: Adiciona um comentário sobre o usuário;
  • -d: Especifica qual o diretório pessoal do usuário. O padrão é /home/[login];
  • -e: Especifica a data a partir da qual a conta do usuário será removida automaticamente. Use-a para criar uma conta de usuário temporária. O formato da data é AAAA-MM-DD (ano-mês-dia);
  • -f: Use esse parâmetro em conjunto com o -e, se quiser que quando a conta do usuário expirar, os dados do usuário não sejam apagados imediatamente. Use o valor 0 para que a conta do usuário seja excluída assim que a sua senha expirar. Use -1 para desativar essa função;
  • -g: Especifica o grupo inicial ao qual o novo usuário irá pertencer. Pode ser o nome do grupo ou então o número (GID). O padrão desse parâmetro é users, ou 100;
  • -G: Especifica outros grupos aos quais o novo usuário irá pertencer, separados por vírgula;
  • -m: Cria o diretório pessoal, especificado no parâmetro -d, se ele não existir;
  • -k: Quando se cria um novo diretório pessoal, os arquivos do diretório /etc/skel/ são copiados para lá. Use o parâmetro -k para especificar outro diretório, diferente de /etc/skel/, de onde copiar arquivos para dentro do diretório pessoal do usuário;
  • -o: Permitir que o novo usuário tenha um UID duplicado, já utilizado por outro usuário;
  • -p: Use esse parâmetro para informar a senha criptografada do usuário. Para conseguir a senha criptografada é necessário utilizar um programa de criptografia;
  • -s: Informa o Shell padrão do usuário. Geralmente não se utiliza esse parâmetro, para deixar o sistema escolher;
  • -u: Use esse parâmetro para informar o UID do usuário manualmente. A menos que você utilize o parâmetro -o, esse número deve ser único, ou seja, você não pode informar uma UID que já esteja sendo utilizada por outro usuário;.

O outro comando que pode ser utilizado para criar um novo usuário é o adduser, um pouco mais interativo. Basta rodar o comando adduser que o sistema vai solicitando as informações a respeito do usuário. Entretanto é possível passar todas as informações necessárias a partir da linha de comando.

A sintaxe do adduser é a mesma do useradd:

adduser [opções] [login]

As opções disponíveis são:
  • --conf: O adduser utiliza as informações gravadas no arquivo /etc/adduser.conf. Utilize esse parâmetro para utilizar outro arquivo de configuração;
  • --disabled-login: Não solicita senha para o usuário. A conta fica indisponível, até que seja executado o comando passwd manualmente para definir uma senha para o usuário;
  • --disabled-password: Não solicita senha ao usuário, mas a conta fica disponível através do uso de chaves SSH RSA;
  • --gid: Informa manualmente o número do grupo (GID) a que o usuário será incluído;
  • --group: Se usado juntamente com o parâmetro --system, é criado um grupo com o mesmo nome e GID do usuário criado. Se usado sem o parâmetro --system, é criado um grupo com o nome fornecido;
  • --home: Especifica o diretório pessoal do usuário. O padrão é /home/[login];
  • --shell: Especifica o Shell a ser utilizado pelo usuário;
  • --ingroup: Adiciona o usuário para o grupo especificado;
  • --no-create-home: Não cria o diretório pessoal, se ele não existir;
  • --quiet: Não mostra mensagens sobre o progresso do processo de criação do usuário;
  • --system: Cria um usuário do sistema;
  • --uid: Força o usuário a usar o UID especificado. Se o UID for inválido, a criação do usuário não será efetuada;

Para definir ou modificar a senha de um determinado usuário, utilize o comando passwd. Sua sintaxe é simples:

passwd [login]

Será necessário digitar a nova senha duas vezes.

Desabilitando uma conta de usuário


Desabilitar uma conta de usuário é impedir o usuário de acessar o sistema. Diferente do que ocorre quando se excluir uma conta, ao desabilitá-la as informações do usuário não são perdidas, caso elas sejam necessárias ou se deseje reabilitar a conta posteriormente.

A melhor maneira de desabilitar uma conta de usuário é fazendo a sua conta expirar. Para isso, edite o arquivo /etc/shadow, procure pela linha que contém as informações da conta que você deseja desabilitar, vá no terceiro campo (delimitado por dois pontos), correspondente à data em que a senha foi modificada, e copie esse número subtraído de um para o oitavo campo.

Veja nesse exemplo, como expirar a senha do usuário "lanux":

lanux:$1$EtXJLNvq$klIF2UtVj5/LiOH:12118:0:99999:7:::

No terceiro campo encontramos o número 12118. Subtraímos 1 de 12118, obtendo-se 12117 e inserimos esse número no oitavo campo:

lanux:$1$EtXJLNvq$klIF2UtVj5/LiOH:12118:0:99999:7::12117:

Caso o usuário lanux do exemplo acima tente logar no sistema, receberá a seguinte mensagem: "Your account has expired; please contact your system administrator".

Excluindo uma conta de usuário


Para remover uma conta de usuário, apagando as suas informações no sistema, utilizamos o comando userdel.

O userdel remove a entrada do usuário do arquivo /etc/passwd e opcionalmente também seu diretório pessoal com todos os arquivos e subdiretórios ali contidos. Os arquivos pertencentes ao usuário que estejam em outros diretórios permanecerão no sistema e aparecerão como pertencentes ao UID do usuário quando mostrados pelo comando "ls -l".

A sintaxe do userdel é:

userdel [-r] [login]

A opção -r faz com que o diretório pessoal do usuário seja excluído também.

Se você quiser localizar todos os arquivos que pertencem ao usuário espalhados pelo sistema, utilize o comando find com os seguintes parâmetros:

find / -gid [GID do usuário] -uid [UID do usuário]

Os arquivos encontrados podem ser deletados ou você pode mudar a sua propriedade:

chown [novo dono]:[novo grupo] [arquivo]

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Como as informações de usuário são armazenadas no sistema
   3. Manipulando contas de usuários
   4. Manipulando grupos
Outros artigos deste autor

Instalando e atualizando pacotes no Fedora em computadores sem internet

Fundamentos do sistema Linux - arquivos e diretórios

Fundamentos do sistema Linux: discos e partições

Fundamentos do sistema Linux - Permissões

Instalando um sistema Debian GNU/Linux completo em 20 minutos

Leitura recomendada

Um pouco sobre Budgie Desktop

Instalando o Fedora Core 5 via NFS

FreeBSD Release 10.0 - Introdução ao sistema

Software Livre: primeiras impressões

Guia Introdutório do Linux III

  
Comentários
[1] Comentário enviado por fabio em 04/11/2005 - 08:13h

Meus parabéns Davidson, apesar de se tratar de um artigo sobre fundamentos do sistema, por sua riqueza de detalhes, até mesmo pra usuários avançados esse artigo pode trazer algumas novidades.

E sucesso ao Projeto Bozolinux!!!

[]'s,
Fábio

[2] Comentário enviado por linuxer19 em 04/11/2005 - 15:01h



[3] Comentário enviado por m4sk4r4 em 04/11/2005 - 15:57h


Davidson,

Muito bom o artigo, muito claro, e bem elaborado.



Parabéns.
Gabriel Santana

[4] Comentário enviado por removido em 04/11/2005 - 17:38h

este homem é um professor!!!!
;-))

[5] Comentário enviado por ZX350 em 05/11/2005 - 00:12h

Esse arquivo ficou muito bom fácil entendimento ficou otimo.

[6] Comentário enviado por nixnod em 05/11/2005 - 13:15h

Muito bom mesmo, bem explicativo, =)

[7] Comentário enviado por lennon.jesus em 16/11/2005 - 10:26h

Show de bola!
Ainda tem muita gente que não conhece esses fundamentos.
Parabéns!

XD

Lennon Jesus

[8] Comentário enviado por vvvdracula em 09/02/2007 - 06:28h

Valeu pela ajuda, sintetisando o conhecimento prá aprender mais rapido
;)

[9] Comentário enviado por rickjs em 31/01/2008 - 09:26h

EXCELENTE ARTIGO, ESSES FUNDAMENTOS SÃO FUNDAMENTAIS PRA QUEM, COMO EU, TRABALHA COM SUPORTE LINUX. PARABÉNS

[10] Comentário enviado por joseslei em 24/09/2008 - 09:57h

Ola,

Alguem poderia me ajudar a elaborar um script em shell para adicionar usuarios, com senha padrão?
Ex:
usuarios: escola1
escola2
senha: aluno
...

agradeço desde ja.

[11] Comentário enviado por doradu em 04/02/2010 - 15:38h

tem isso tudo em modo gráfico?

[12] Comentário enviado por victormredes em 29/03/2012 - 22:02h

No caso para exclusão de usuário, os diretórios criados por um determinado usuário, que vem depois a ser excluido do sistema, os diretórios ficam com o UID antigo por exemplo 1001, e o próximo a ser cadastrado vai torna-se dono automaticamente, pois vai pegar o UID 1001. Tem como alterar isso? para que quando for excluso, o root fique dono do diretório? utilizei o parâmetro -r mas ele só apaga a pasta do /home.

[13] Comentário enviado por davidsonpaulo em 29/03/2012 - 22:35h

Tem sim, é só executar o seguinte comando após a exclusão do usuário:

# find / -uid <UID antigo> | xargs chown root:root

Isso vai procurar por todos os arquivos e diretórios que pertenciam ao usuário antigo e fazê-los pertencerem ao root.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts