Como gerenciar usuários e grupos
Autor: InterSowa | Publicado: 2012-02-17T03:06:00-08:00


Gerenciamento

Como qualquer sistema operacional multitarefa e multiusuário, o administrador do sistema tem como grande desafio o gerenciamento de usuários e grupos. Por este motivo é importante estarmos preparados para administrá-los diretamente sem a utilização de ferramentas que facilitem isso (ex.: webmin), usando apenas os comandos básicos do sistema operacional, isso irá proporcionar a administração em qualquer distribuição.

Comandos:
useradd: Comando utilizado para criação de um usuário.
userdel: Comando utilizado para remoção de um usuário.
usermod: Comando usado para modificar os dados de um usuário.
passwd: Comando usado para definir e ou modificar a senha de um usuário.
groupadd: Comando usado para criar um grupo.
groupdel: Comando usado para remover um grupo.
groupmod: Comando usado para modificar os dados de um grupo.

Criando um usuárioPara que seja possível logar no sistema o usuário deverá ter um username (login) e uma senha (password). Para que isso seja possível usaremos os comandos "useradd" e "passwd". Abaixo explicarei como é a sintaxe dos comandos e suas opções:Comando useraddSintaxe: useradd [opções] 

Opções:
-d - Caminho do diretório home do usuário.

-g - Especifica o grupo do usuário.
-c - Inclui um comentário referente ao usuário, tais como nome, setor, etc
-s - Especifica o shell de comando que o usuário irá utilizar.
-m - Cria o diretório home do usuário e copia os arquivos de /etc/skel/ para o home criado (diretório onde se encontram os arquivos default do usuário, futuramente iremos falar sobre ele). Em algumas distribuições não há necessidade de incluirmos essa opção para a criação do home, mas para evitarmos não o criarmos é bom acostumarmos a colocá-la na criação do usuário.
-p - Essa opção serve para especificarmos uma senha já criptografada para o usuário.

Ex.:

# useradd -g admin -s /bin/bash -d /home/sup1 -c "Usuário Administrativo de Suporte 1" -m sup1

No exemplo acima criamos o usuário sup1, que tem como grupo admin, usando o shell /bin/bash, o home criado foi o /home/sup1 e tem o comentário "Usuário Administrativo de Suporte 1".

Comando passwdSintaxe: passwd [opções] 

Opções:-d - Permite o usuário acessar (logar) o sistema sem senha.
-l - Bloqueia/trava a conta do usuário. O usuário não consegue logar.
-u - Desbloqueia/destrava a contado usuário (bloqueado pela opção "-l").
-S - Mostra o status da senha do usuário.

Exemplo 1:

# passwd sup1
Chaging password for user sup1
New password:&nbsp;[digitar a senha]
Retype new password:&nbsp;[repetir a senha]

Exemplo 2: Nesse exemplo iremos travar a conta do usuário sup1.

# passwd -l sup1

Exemplo 3: Vamos agora destravar a conta do usuário sup1:

# passwd -u sup1


Comando usermodSintaxe: usermod [opções] 

Opções:-d - Modifica o caminho do diretório home do usuário.
-g - Modifica o grupo do usuário.
-c - Modifica o comentário referente ao usuário.
-s - Modifica o Shell de comando que o usuário irá utilizar.
-p - Substitui a senha já criptografada do usuário.

Exemplo 1: Nesse exemplo estamos modificando o grupo e o comentário do usuário sup1 ao mesmo tempo.

# usermod -g  -c "" sup1

Comando userdelSintaxe: userdel [opções] 

Opções:-r - Ao usarmos essa opção o diretório HOME e Mailbox do usuário será removido. É importante ter certeza ao fazer isso, pois muitas vezes é melhor remover apenas o usuário ou até mesmo suspendê-lo mantendo seus arquivos para auditoria.

Exemplo 1: Remover o usuário sem excluir seus arquivos.

# userdel sup1

Exemplo 2: Remover o usuário e seus arquivos

# userdel -r sup1

Comando groupaddSintaxe: groupadd [opções] 

Opção:-g - Ao usarmos esta opção, podemos especificar o GID do grupo que estamos criando.

Exemplo 1: Criando um grupo chamado "administracao".

# groupadd administracao

Exemplo 2: Criando um grupo chamado oragroup e especificando o GID 1521.

# groupadd -g 1521 oragroup

Comando groupmodSintaxe: groupmod [opções] 

Opção:-g - Ao usarmos esta opção, podemos modificar o GID do grupo.
-n - Para trocarmos o nome do grupo.

Exemplo 1: Modificando o GID do grupo "administracao".

# groupmod -g 666 administracao

Exemplo 2: Modificando o nome do grupo oragroup.

# groupadd -n oracle oragroup&nbsp;Diretório e arquivosDiretório:/etc/skel&nbsp;- Neste diretório são armazenados arquivos, por padrão ocultos (arquivos que iniciam com um ".") , que são copiados para o diretório HOME do usuário no momento da criação do usuário. Se precisarmos incluir alguma configuração padrão, podemos usar esse diretório para incluir ou até mesmo editar os arquivos existentes e consequentemente fazer o ajuste a suas necessidades.

Arquivos:/etc/passwd&nbsp;- Arquivo que contém várias informações sobre o usuário. Ele é utilizado por vários comandos de sistema e aplicações. Antigamente até mesmo as senhas eram armazenadas nele, porém a algum tempo as senhas estão sendo armazenadas em /etc/shadow, arquivo que falaremos a seguir. Só o administrador do sistema consegue modificar esse arquivo.
/etc/shadow&nbsp;- Onde estão armazenadas as senhas criptografadas dos usuários, além de outras informações como expiração da senha etc.
/etc/gshadow&nbsp;- Tem a mesma finalidade do /etc/shadow, só que para grupos e não usuários.
/etc/group&nbsp;- É onde se encontram os grupos existentes no sistema. Cada grupo pode estar associado a vários usuários, este arquivo também é responsável por esta associação.
/etc/motd&nbsp;- Esse arquivo contém as informações que serão exibidas após o login do usuário.
/etc/default/useradd&nbsp;e&nbsp;/etc/login.defs&nbsp;- Arquivos onde se encontram as configurações default de criação de usuários. As configurações podem ser diferentes dependendo de cada "distro", umas por exemplo, não há a necessidade da opção "-m" para a criação do diretório HOME do usuário.
Gerenciando grupos e senhasComandos:

gpasswdCom esse comando podemos criar senhas para administradores de grupo que terão poder de incluir e remover, além de modificar a senha de um grupo.

grpconvAtravés desse comando é criado o arquivo gshadow utilizando o arquivo group para isso.

grpunconvEsse comando recria um arquivo group utilizando os arquivos group e gshadow e após isso ele remove os dois arquivos.

pwconvUtilizando o arquivo passwd ele cria o arquivo shadow, hoje em dia esse comando é pouco utilizado, pois os novos sistemas já trabalham diretamente com senhas criptografadas já localizadas no shadow.

pwunconvRecria o arquivo passwd utilizando os arquivos passwd e shadow e depois os removendo.

chageUsado para modificar parâmetros de expiração de senha dos usuários. Pode ser executado pelo superusuário seguido do nome do usuário a que iremos modificar os parâmetros. Nesse caso só teremos que ir respondendo o que nos é perguntado. Outra coisa que temos que ter em mente é que esse comando funciona apenas se estivermos usando o esquema de senhas criptografadas (/etc/shadow).

Parâmetros:Minimum Password Age: É onde informamos o mínimo de dias que o usuário deve esperar para poder modificar sua senha novamente.
Maximum Password Age: Onde informamos a quantidade de dias máximo que o usuário pode ficar sem modificar sua senha. Caso o usuário ultrapasse o período máximo para a troca, ele só conseguirá logar após sua a troca.
Last Password Change: É a data em que a senha teve sua última alteração.
Password Expiration Warning: É onde informamos a quantidade de dias antes da expiração da senha que o usuário começará a receber o alerta para a troca da senha.
Password Inactive: Aqui indicamos a quantidade de dias que o usuário terá para trocar sua senha. Depois de sua expiração o login do usuário ficará bloqueado. Se o usuário não modificar sua senha dentro desse período, apenas o superusuário poderá reativar e trocar a senha do usuário.
Account Expiration Date: Esta opção é exatamente onde colocamos a data de expiração da conta do usuário.

Sintaxe: chage [opções] username

Opções:-m  - Minimum Password Age, onde "n" é a quantidade mínima de dias para a troca da senha.
-M  - Máximo Password Age, onde "n" é a quantidade máxima de dias para a troca da senha.
-d  - Last Password Change, onde "data" é a data da última troca da senha.
-W  - Password Expiration Warning, onde "n" é a quantidade de dias antes da expiração da senha, em que o usuário irá começar a receber o aviso para a troca da senha.
-I  - Password Inactive, onde "n" tem que ser ao menos a quantidade de dias de senha expirada +1, isso significa se a senha esta expirada a 10 dias, temos que no mínimo colocar n=11, para a conta seja reativada e o usuário possa trocar da senha.
-E  - Account Expiration Date, onde "data" é a data de expiração da senha.

Exemplo 1: Configurando os parâmetros para expiração da senha do usuário bola.

# chage bola
Chaging the aging information for bola
Enter the new value, or press Enter for the default
Minimum Password Age [1]: 4
Maximum Password Age [1]: 30
Last Password Change (YYYY-MM-DD) [2005-11-17]:
Password Expiration Warning [1]: 8
Password Inactive [0]: 5
Account Expiration Date (YYYY-MM-DD) [2005-11-20]: 2010-05-16

Exemplo 2: Modificar o "Minimum Password Age" do usuário bola.

# chage -m 6

Exemplo 3: Modificar o "Maximum Password Age" do usuário bola.

# chage -M 35

Exemplo 4: Modificar o "Last Password Change" do usuário bola.

# chage -d 2010-04-17

Exemplo 5: Modificar o "Password Expiration Warning" do usuário bola.

# chage -W 10

Exemplo 6: Modificar o "Password Inactive" do usuário bola.

# chage -I 20

ConclusãoGostaria de fechar este artigo dando algumas dicas referentes a importância do planejamento no gerenciamento do usuário. Sem um bom planejamento a gerência de usuários pode se tornar muito complicada, ainda mais se tivermos muitas opções. Contudo alguns pontos são comuns: Quantos usuários temos? Daqui a uns 6 meses, quantos usuários teremos? Todos os usuários precisam de shell de comando?

Bom, pense/planeje o máximo possível para que possa minimizar surpresas. Lembre-se que como todo administrador, teremos surpresas. Por isso quanto mais bem planejado, diminuímos as chances de surpresas.&nbsp;


Fonte:&nbsp;http://www.vivaolinux.com.br/artigo/Como-gerenciar-usuarios-e-grupos