8.6. Modificando contas

Existe uma variedade de comandos diferentes disponíveis no ambiente UNIX® para manipular contas de usuários. Os comandos mais comuns estão sumariados abaixo, seguidos por exemplos mais detalhados de seu uso.

Comando Sumário
adduser(8) O comando recomendado para adicionar novos usuários.
rmuser(8) O comando recomendado para excluir usuários.
chpass(1) Uma ferramenta flexível para alterar informações de usuários.
passwd(1) Um simples comando para alterar a senha do usuário
pw(8) Uma podereosa e flexível ferramenta para alterar todos os aspectos das contas de usuários.

8.6.1. adduser

adduser(8) é um programa simples para adicionar novos usuários. Cria entradas nos arquivos passwd e group. Criará também um diretório home para o usuário novo, copia os arquivos de configuração padrão (``dotfiles'') de /usr/share/skel, e pode opcionalmente enviar ao usuário novo uma mensagem de boas vindas.

No FreeBSD 5.0, o adduser(8) foi rescrito de rotinas em linguagem Perl para um ``shell script'' que trabalha em conjunto com o pw(8), assim seu uso é ligeiramente diferente no FreeBSD 4.X e no FreeBSD 5.X.

Para criar a configuração inicial, use adduser -s -config_create. [1] Em seguida, configuramos os padrões do adduser(8), e criamos a nossa primeira conta de usuário, uma vez que utilizar a conta root para uso normal é um péssimo hábito.

Exemplo 8-1. Configurando adduser e adicionando um usuário no FreeBSD 4.X

# adduser -v
Use option ``-silent'' if you don't want to see all warnings and questions.
Check /etc/shells
Check /etc/master.passwd
Check /etc/group
Enter your default shell: csh date no sh tcsh zsh [sh]: zsh
Your default shell is: zsh -> /usr/local/bin/zsh
Enter your default HOME partition: [/home]:
Copy dotfiles from: /usr/share/skel no [/usr/share/skel]:
Send message from file: /etc/adduser.message no
[/etc/adduser.message]: no
Do not send message
Use passwords (y/n) [y]: y

Write your changes to /etc/adduser.conf? (y/n) [n]: y

Ok, let's go.
Don't worry about mistakes.  I will give you the chance later to correct any input.
Enter username [a-z0-9_-]: jua
Enter full name []: J.  Usuario Aleatorio
Enter shell csh date no sh tcsh zsh [zsh]:
Enter home directory (full path) [/home/jua]:
Uid [1001]:
Enter login class: default []:
Login group jua [jua]:
Login group is ``jua''.  Invite jua into other groups: guest no
[no]: wheel
Enter password []:
Enter password again []:

Name:     jua
Password: ****
Fullname: J.  Usuario Aleatorio
Uid:      1001
Gid:      1001 (jua)
Class:  
Groups:   jua wheel
HOME:     /home/jua
Shell:    /usr/local/bin/zsh
OK? (y/n) [y]: y
Added user ``jua''
Copy files from /usr/share/skel to /home/ua
Add another user? (y/n) [y]: n
Goodbye!
#

Em resumo, nós mudamos a shell padrão para zsh (uma shell adicional encontrada na coleção de ports), e desligamos o envio de um e-mail de boas vindas para o usuário adicionado. Nós salvamos as configurações, criamos uma conta com o nome de jua, e certificamos que jua faz parte do grupo wheel (de modo que possa assumir os privilégios do usuário root com o comando su(1).)

Nota: A senha que você digita não aparece, nem são mostrados asteriscos. Certifique-se que você não digitou dias vezes a senha errôneamente.

Nota: Use o adduser(8) sem argumentos de agora em diante, e você não terá que redefinir as opções padrão. Se o programa solicitar que os padrões sejam modificados, saia dele, e tente a opção -s.

Exemplo 8-2. Adicionando um usuário em FreeBSD 5.X

# adduser
Username: jua
Full name: J.  Usuario Aleatorio
Uid (Leave empty for default):
Login group [jua]:
Login group is jua.  Invite jua into other groups? []: wheel
Login class [default]:
Shell (sh csh tcsh zsh nologin) [sh]: zsh
Home directory [/home/jua]:
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username   : jua
Password   : ****
Full Name  : J. Usuario Aleatorio
Uid : 1001
Class      :
Groups     : jia wheel
Home       : /home/jua
Shell      : /usr/local/bin/zsh
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (jua) to the user database.
Add another user? (yes/no): no
Goodbye!
#

8.6.2. rmuser

Você pode utilizar o rmuser(8) para remover completamente um usuário do sistema. rmuser(8) executa as seguintes etapas:

  1. Remove as entradas crontab(1) do usuário (se houver alguma).

  2. Remove todos os trabalhos pendentes no at(1), que pertencem ao usuário.

  3. Mata todos os processos controlados pelo usuário.

  4. Remove o usuário do arquivo de senha local do sistema

  5. Remove o diretório home do usuário (se este for de autoridade do usuário)

  6. Remove o arquivo de armazenamento de mensagens de correio eletrônico que pertence ao usuário, em /var/mail.

  7. Remove todos os arquivos de posse do usuário nas áreas temporárias de gravação de arquivos, como /tmp.

  8. Finalmente, remove o nome do usuário de todos os grupos que ele pertence, em /etc/group.

    Nota: Se um grupo se tornar vazio e o nome do grupo for o mesmo que o nome do usuário, o grupo será removido; isto inclui os grupos originais que é opcionalmente criado para cada usuário pelo adduser(8).



rmuser(8) não pode ser usado para remover contas de super usuários, pois isso aponta indícios de modificações prejudiciais no sistema.

Por padrão, a aplicação funciona em modo interativo, e tenta confirmar que você está certo do que está fazendo.

Exemplo 8-3. rmuser Remoção interativa de contas

# rmuser jua
Matching password entry:
jua:*:1001:1001::0:0:J. Usuario Aleatorio:/home/jru:/usr/local/bin/zsh
Is this the entry you wish to remove? y
Remove user's home directory (/home/jua)? y
Updating password file, updating databases, done.
Updating group file: trusted (removing group jua -- personal group is empty) done.
Removing user's incoming mail file /var/mail/jua: done.
Removing files belonging to jua from /tmp: done.
Removing files belonging to jua from /var/tmp: done.
Removing files belonging to jua from /var/tmp/vi.recover: done.
#

8.6.3. chpass

O chpass(1) modifica informações da base de dados do usuário tais como senhas, interpretadores de comandos e informações pessoais.

Apenas administradores do sistema, como o super usuário, podem alterar informações e senhas de outros usuários com chpass(1).

Quando passado sem opções, com exceção de um usuário opcional, chpass(1) abrirá um editor contendo as informações do usuário. Quando o usuário sair do editor, a base de dados do usuário será atualizada com as novas informações.

Nota: No FreeBSD 5.X, você será questionado sobre a senha senha depois que sair do editor, caso você não seja um super usuário.

Exemplo 8-4. Usando o chpass de forma interativa pelo super usuário

#Changing user database information for jua.
Login: jua
Password: *
Uid [#]: 1001
Gid [# or name]: 1001
Change [month day year]:
Expire [month day year]:
Class:
Home directory: /home/jua
Shell: /usr/local/bin/zsh
Full Name: J. Usuario Aleatorio
Office Location:
Office Phone:
Home Phone:
Other information:

O usuário normal pode alterar somente um subconjunto pequeno destas informações, e somente para ele mesmo.

Exemplo 8-5. Usando o chpass de forma interativa por um usuário normal

#Changing user database information for jua.
Shell: /usr/local/bin/zsh
Full Name: J. Usuario Aleatorio
Office Location:
Office Phone:
Home Phone:
Other information:

Nota: chfn(1) e chsh(1) são sinônimos de chpass(1). São links simbólicos para esta aplicação. Da mesma forma, ypchpass(1), ypchfn(1), e ypchsh(1) também o são. O suporte à NIS é automático, de forma que especificar yp antes do comando torna-se dispensável. Se isso parece confuso para você, não se preocupe pois o assunto NIS será abordado em Capítulo 19.

8.6.4. passwd

O comando passwd(1) é a maneira usual de modificar sua própria senha, ou a senha de um outro usuário, caso você tenha privilégios de administrador.

Nota: Os usuários comuns devem digitar sua senha original, antes de definir a nova senha, para impedir que uma pessoa desautorizada modifique-a, quando o verdadeiro dono estiver ausente mas manteve o console aberto.

Exemplo 8-6. Alterando sua senha

% passwd
Changing local password for jua.
Old password:
New password:
Retype new password:
passwd: updating the database...
passwd: done

Exemplo 8-7. Alterando a senha de outro usuário, tendo os privilégios do super usuário

# passwd jua
Changing local password for jua.
New password:
Retype new password:
passwd: updating the database...
passwd: done

Nota: O chpass(1), bem como yppasswd(1), também é um link simbólico para passwd(1), de forma que o NIS possa trabalhar com um ou outro comando.

8.6.5. pw

pw(8) é um comando utilitário cuja função é criar, remover, alterar e apresentar usuários e grupos. Ele funciona como um front end para os arquivos de usuários e grupos do sistema. O pw(8) tem um conjunto muito completo de opções e comandos que o torna apropriado para o uso em scripts shell, mas os usuários novos podem acha-lo mais complexo do que os outros comandos apresentados aqui.

Notas

[1]

A opção -s faz o adduser(8) por padrão ficar em modo silencioso. Usaremos -v mais tarde quando quizermos modificar estes padrões.

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.