You are on page 1of 26

Gerenciamento de grupos e usuários

Todo sistema de gerência de usuário possui um id registrado no sistema.
Com as informações de registro o Linux pode gerenciar o acesso aos
usuários e as suas permissões de acesso. Os administradores de sistema
podem gerenciar e controlar todo o acesso a grupos e usuários.

Um grupo é conjunto de usuários do sistema. Cada grupo também possui
informações que identificam o usuário no sistema, contendo um nome e
um número.

O que compõem um usuário

Item Descrição
Redução de User IDentification. Ele identifica o usuário
UID no sistema junto com o login para permitir-lhe o seu
acesso.
Redução de Group IDentification. É o Número que
GID
identifica o grupo do usuário ao qual ele esta inserido.
Descreve as características do usuário, geralmente o
Comment
nome completo
Home
Corresponde o diretório do usuário quando ele acessa o
Directory
sistema, onde seus arquivos são armazenados
Path
Corresponde ao shell padrão do usuário quando acessa
Shell
o sistema. Geralmente o Bash.
As informações do usuário e senhas são armazenados nos arquivos
/etc/passwd e /etc/shadow, e as informações sobre os grupos em
/etc/group e /etc/gshadow.

1

nesse arquivo é armazenado as informações separadas por ( : ) da
seguinte forma:

nome usuário:senha:id usuário:id grupo:descrição:diretório:shell

Por exemplo:

x:1000:1000:Descrição do
aluno1,,,:/home/aluno1:/bin/bash

# /etc/passwd

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System
(admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
Debian-exim:x:100:102::/var/spool/exim4:/bin/false
statd:x:101:65534::/var/lib/nfs:/bin/false
identd:x:102:65534::/var/run/identd:/bin/false
messagebus:x:103:104::/var/run/dbus:/bin/false
haldaemon:x:104:106:Hardware abstraction

2

..:/home/haldaemon:/bin/false gdm:x:105:109:Gnome Display Manager:/var/lib/gdm:/bin/false aluno1:x:1000:1000:aluno1.:/home/aluno1:/bin/bash mysql:x:106:110:MySQL Server. usuário2 # /etc/group root:x:0: daemon:x:1: bin:x:2: 3 ..:/var/lib/mysql:/bin/false cupsys:x:107:105::/home/cupsys:/bin/false O que compõem um grupo Item Descrição Name Nome do grupo Constitui a senha de gerenciamento do grupo... nesse arquivo é armazenado as informações separadas por ( : ) da seguinte forma: grupo:senha:id grupo:descrição:lista de usuários Por exemplo: grupo:x:1000:usuário1..layer. não Password havendo necessidade de preocupar com ela GID Número de identificação do grupo de usuário User list Corresponde a lista de usuários do grupo GID As informações dos grupos são armazenados no arquivo /etc/group.

sys:x:3: adm:x:4: tty:x:5: disk:x:6: lp:x:7: mail:x:8: news:x:9: uucp:x:10: man:x:12: proxy:x:13: kmem:x:15: dialout:x:20:aluno1 fax:x:21: voice:x:22: cdrom:x:24:aluno1 floppy:x:25:aluno1 tape:x:26: sudo:x:27: audio:x:29:aluno1 dip:x:30: www-data:x:33: backup:x:34: operator:x:37: list:x:38: irc:x:39: src:x:40: gnats:x:41: shadow:x:42: utmp:x:43: video:x:44:aluno1 sasl:x:45: plugdev:x:46:aluno1 staff:x:50: games:x:60: users:x:100: nogroup:x:65534: 4 .

arquivos assim como o .crontab:x:101: Debian-exim:x:102: ssh:x:103: messagebus:x:104: avahi:x:105: netdev:x:106:aluno1 lpadmin:x:107: haldaemon:x:108: powerdev:x:109:aluno1 scanner:x:110: ssl-cert:x:111:postgres postgres:x:112: gdm:x:113: aluno1:x:1000: dirmngr:x:114: mysql:x:115: dba:x:1003: # /etc/default/useradd Este arquivo define os valores padrões ao criar usuários com o comando useradd.profile que será copiado para o diretório home criado para novos usuários. # CREATE_MAIL_SPOOL=yes # Especifica o diretório de email 5 . onde pode ser editado retirando o comentário " # " das linhas abaixo: # /etc/default/useradd SHELL=/bin/sh # especifica o shell do usuário # GROUP=100 # especifica o GID do grupo do usuário recém criado # HOME=/home # especifica o diretório home do usuário # INACTIVE=-1 # especifica a quantidade de dias após a expiração da senha a conta será desativada # EXPIRE= # especifica a data que será desativada a conta # SKEL=/etc/skel # SKEL especifica o diretório que contém os arquivos "esqueleto" do usuário. em outras palavras.

enquanto a conta é criada.defs Este arquivo configura o controle de definições de login dos usuários # /etc/login.defs MAIL_DIR /var/mail # especifica o diretório de mensagens de email local DEFAULT_HOME yes # especifica que o diretório home do usuário deve ser criado USERGROUPS_ENAB yes # esta opção habilita o comando userdel remover usuários e seus grupos existentes LOGIN_RETRIES 5 # especifica o número máximo de tentativas de login se a senha estiver errada # especifica o valor mínimo e máximo do UID selecionado para criação novos usuários com useradd e adduser UID_MIN 1000 UID_MAX 60000 # especifica o valor mínimo e máximo do GID selecionado para criação novos grupos com groupadd GID_MIN 100 GID_MAX 60000 PASS_MAX_DAYS 99999 # número máximo de dias que uma senha pode ser usada PASS_MIN_DAYS 0 # número mínimo de dias permitido entre duas mudanças de senha PASS_WARN_AGE 7 # número de dias anteriores a expiração da senha #UMASK 022 # Define a máscara padrão. # /etc/login. caso seja usada # especifica os últimos logins e usuários ainda logados no sistema que são armazenados no arquivo /var/log/wtmp que pode ser lido 6 .

Adiciona um grupo ou usuário no sistema adduser (opções) (usuário) Opção Descrição específica o diretório home -d (home) do usuário. Informa o GID do grupo do -g (grupo) usuário Informa o shell em -s (shell) /etc/shells do usuário. -u (Número)específica o UID do usuário.pelo comando last. e do arquivo /var/log/btmp lido pelo comando lastb FTMP_FILE /var/log/btmp Gerenciando usuários e grupos adduser ou useradd . -e data de exclusão da conta (mm/dd/yy) do usuário Exemplo: # adduser aluno1 ou # useradd aluno1 -d /home/aluno1 -g grupo -s /bin/bash # passwd aluno1 # mkdir /home/aluno1 # chown -R aluno1 /home/aluno1 7 .

. # adduser aluno Adding user `aluno' .. Adding new group `aluno' (1004) . Copying files from `/etc/skel' ...... Enter new UNIX password:******* Retype new UNIX password:******* passwd: senha atualizada com sucesso Modificando as informações de usuário para aluno Informe o novo valor ou pressione ENTER para aceitar o padrão Nome Completo []: aluno Número da Sala []: Fone de Trabalho []: Fone Doméstico []: Outro []: A informação está correta? [s/N] s passwd . Adding new user `aluno' (1004) with group `aluno' ... Creating home directory `/home/aluno' ..Muda a senha de um usuário passwd (usuário) -x específica o número de dias que a senha poderá (dias)ser utilizada O usuário receberá um alerta para mudar a senha -w antes de n dias específica a data na qual a conta será -e desabilitada Exemplo: 8 .No Debian você precisará apenas especificar uma senha e o nome de usuário e confirmar no final escolhendo S(sim).

# passwd aluno1 # passwd (muda senha de root) usermod . -U habilitando a senha do usuário Exemplo: # usermod -G grupo usuário $ groups aluno1 (visualiza grupos do usuário) ou $ cat /etc/group 9 . desabilitando a senha do usuário) (Remove o caractere "!" da senha criptografada.modifica as características de um usuário usermod (opções) (usuário) Opção Descrição -c (comentário) comentário -d (dir_home) modificando o diretório home Programa que será iniciado quando o usuário logar -s (programa) no sistema -l (novo_login) Novo login do usuário Especifica a data de cancelamento da conta de -e (mm/dd/AA) usuário -G Grupos extras dos quais o usuário será membro (novos_grupos) -g Novo grupo (novo_grupo) desabilita a conta do usuário em N dias após a -f (n dias) expiração da senha -u (Novo UID) Novo UID (Insere um caractere "!" na frente da senha -L criptografada.

-m (num/dias) O valor zero indica que o usuário pode alterar a sua senha a qualquer momento Numero de dias entre a expiração de senha e o -l (num/dias) bloqueio da conta do usuário -E Data da expiração da conta do usuário Ex: (aaaa/mm/dd) 2008/01/30 Indica o numero de dias anteriores á expiração da -W (num/dias) senha que o usuário deve ser notificado Exemplo: # chage -l usuário # chage -W 3 usuário # chage -M 7 usuário # chage -E 2008/12/30 usuário # chage -l usuário finger .Exibe informações sobre usuários locais ou remotos finger (opções) (usuário) 10 .chage .Muda informações de expiração de senha de usuário chage (usuário) (opções) Opção Descrição Exibe informações da expiração da senha de -l usuário -M (num/dias) Numero máximo de dias até que a senha expire -d Data da ultima alteração da senha Ex: 2008/01/30 (aaaa/mm/dd) Número mínimo de dias entre alterações de senha.

Adiciona grupos ao sistema groupadd (grupo) (opções) opçãodescrição Força criar um grupo -f caso já exista -g Especifica o número do GID grupo (GID) Exemplo: # groupadd grupo1 # groupadd grupo2 -g 1001 11 .OpçãoDescrição Saída em formato -l detalhado Saída em formato -s simples Exemplo: $ finger usuário userdel .Deleta um usuário do sistema Exemplo: # userdel -r usuário groupadd .

gpasswd .Muda as características de um grupo groupmod (opções) (grupo) opção descrição -f 12 .Define senha para um grupo e realiza varias funções de administração de usuário e grupos groupadd (opções) (usuário) (grupo) opçãodescrição -a Adiciona usuário ao grupo -d Exclui usuário do grupo -r Remove senha do grupo -A Define o administrador do grupo -M Define membros do grupo Desabilita o acesso ao grupo pelo -R comando newgrp Exemplo: # adduser aluno1 # gpasswd grupo1 (define a senha do grupo grupo1) # gpasswd -a aluno1 grupo1 (Adiciona o usuário aluno1 ao grupo "grupo_1") # gpasswd -d aluno1 grupo1 (Exclui o usuário aluno1 do grupo "grupo1") # gpasswd -r grupo1 (Remove a senha do grupo "grupo1") groupmod .

Exibe os grupos de um usuário groups (usuário) Exemplo: $ groups # groups aluno1 su .Remove um grupo do sistema groupdel (grupo) Exemplo: # groupdel grupo groups .Troca o id de um usuário para superusuário(root) ou para outro usuário 13 . Força criar um grupo caso já exista Especifica o novo -g GID número do grupo (GID) -n Especifica o nome do Novo_grupo novo grupo Exemplo: # groupadd -g 999 grupo # groupmod -g 1000 grupo # cat /etc/group | grep "grupo" # groupmod -n novo-grupo grupo groupdel .

su (opções) (login) opção descrição -c Especifica um comando (comando) a ser executado Torna o shell um shell de login. -p ambiente -s (shell) Especifica um shell Exemplo: $ su --help (para opções) aluno1@máquina:~$ su aluno2 (muda o id do aluno1 para aluno2) Password:********* aluno2@máquina:~$ aluno1@máquina:~$ su (muda o id de usuário para root) Password: ************** aluno1@máquina:~# (repare que foi trocado o $ por #) 14 . ou seja. Mantêm as variáveis -m. um interpretador de acesso onde são limpadas todas as variáveis ambiente. exceto as variáveis TERM. ajusta a variável PATH para um valor definido pelos programas e altera o diretório atual para o diretório HOME do usuário. USER e LOGNAME. HOME. -l (login) SHELL. -.

chfn .Troca de grupo Exemplo: # groupadd grupo1 (Cria um grupo) # gpasswd grupo1 (Define uma senha para o grupo) $ newgrp grupo1 (O usuário atual muda para o grupo grupo1) Senha : (Digite a senha do grupo) $ exit (O usuário atual volta para seu grupo anterior) 15 .Muda as informações de um usuário (usuário) (opções) -f [nome] Especifica o nome completo do usuário -r [sala] Especifica a localização do usuário -w Especifica o telefone do trabalho do usuário [telefone] -h Especifica o telefone da casa do usuário [telefone] Exemplo: # chfn -f "Aluno1 da silva" aluno1 # cat /etc/passwd | grep "aluno1" newgrp .

Exemplo: usuario@maquina:~$ who aluno1 tty1 2007-09-02 19:45 aluno2 tty2 2007-09-02 19:45 whoami .Mostra quem está logado no sistema Saia do ambiente gráfico apertando CTRL+ALT+F1 e logue em um terminal com um usuário. Logue em outro terminal tty1 tty2 CTRL+ALT+F2 com outro usuário e execute o comando who.Exibe o ID(nome) do usuário Exemplo: $ whoami w .Exibe os nomes de usuários correntemente conectados no computador Exemplo: $ users # users who .Exibe os usuários logados e o que estão fazendo 16 .users .

as (número) linhas serão exibidas. 0.Exemplo: usuario@maquina:~$ w 23:28:32 up 1:26.Exibe relatórios dos últimos logins de todos os usuários ou de um determinado usuário lastlog (opções) 17 .17s 0.22 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT aluno1 tty1 .00s 0.18s 0. Caso não for usada. -R Não informa o nome do computador -a Informa o nome do computador da última coluna -x Informa mudanças de nível de execução e shutdown Exemplo: $ last | less $ last | grep "aluno1" (Exibe informações do usuário aluno1) $ last | tac (Inverte a exibição da listagem dos usuários) lastlog .17s -bash last .25.16s -bash aluno2 tty2 . 23:28 9.Mostra uma listagem dos últimos logins dos usuários e que ainda estão logados no sistema last (opções) -n Exibe o número linhas. load average: 0.00s 0. 23:28 29. 5 users. 0.16.

Exemplo: $ id (exibe UID. --real as opções -u.Identificação do usuário. --name Informa o nome e grupo do usuário sem o id -u. -G--groupsinforma o id de outros grupos -n.Executa comandos como superusuário 18 . GID e grupos) $ id -u aluno1 (exibe apenas o UID do usuário) $ id -g aluno1 (exibe apenas o GID do grupo) sudo . --groupinforma identificação do primeiro grupo. ou -G. grupo e outros grupos id (opções) (usuário) opções Descrição -g. -g. Informa o id real do usuário e grupo. complementando com -r. --user Informa o id do usuário (user ID).-u Exibe registro lastlog para usuário com USUÁRIO LOGIN especificado -b NUM / Exibe somente registros lastlog mais antigos DIAS que DIAS -t NUM / Exibe somente registros lastlog mais DIAS recentes que DIAS Exemplo: $ lastlog | less $ last -u aluno1 (Exibe informações do usuário aluno1) $ last -b 1 (Exibe informações de 1 dia atrás) id .

onde é permitido o usuário aluno1.Para permitir um usuário usar o comando sudo é necessário configurar o sudo através do arquivo de configuração /etc/sudoers. cobaia # Cmnd alias specification (Especifica os comandos) Cmnd_Alias COMANDOS = /bin/mount. para configurar o sudo digite o comando visudo como root e defina os comandos que um usuário pode executar. Neste arquivo são especificados os comandos que um usuário poderá executar como root. Abaixo segue um exemplo de configuração. aluno2 executarem os comandos fdisk. mount como root # visudo # User alias specification (Especifica os usuários) User_Alias USUARIOS = aluno1. /sbin/fdisk # User privilege specification (Especifica os privilégios) root ALL=(ALL) ALL USUARIOS ALL = NOPASSWD:COMANDOS $ sudo -l $ sudo fdisk /dev/hda 19 .

Cria o arquivo /etc/shadow a partir do arquivo /etc/passwd e alternativamente através de /etc/shadow existente Exemplo: (antes faça uma copia de segurança dos arquivos na pasta root) # mkdir /root/backup # cp /etc/passwd /root/backup # cp /etc/shadow /root/backup # cp /etc/group /root/backup # mv shadow /root/ (mova para a pasta root) # ls /etc/shadow* (repare que o arquivo foi movido) # pwconv (cria um novo arquivo /etc/shadow) # ls /etc/shadow* (repare que o arquivo foi criado) 20 .sudo (opções) (comando) Opção Descrição -h Exibe mensagem de ajuda Exibe os comandos permitidos e -l proibidos pelo usuário Exemplo: $ sudo -l $ sudo mount /dev/hda /mnt Comandos de gerênciamento de senhas sombra pwconv .

pois o comando pwconv não sabe quais são as senhas dos usuários. root:$1$5r8bgtF. veja abaixo um exemplo da senha de root criptografa do arquivo de backup. Exemplo: # stat /etc/passwd (repare a data de acesso e modificação) # stat /etc/shadow (repare a data de acesso e modificação) # pwunconv # ls /etc/shadow* (repare que o arquivo foi apagado) # pwconv (cria novamente o arquivo /etc/shadow) 21 . onde as senhas são substituídas por um "x". portanto para atualizar as senhas use o comando passwd ou copie as senhas criptografadas do arquivo de backup a partir do sinal de dois pontos ":" após o nome de usuário até o próximo sinal de dois pontos ":".Cria o arquivo /etc/passwd a partir do arquivo /etc/passwd e /etc/shadow existentes e remove o arquivo /etc/shadow. Para isso é necessário atualizar as senhas dos usuários incluse a de administrador root.$vyTsqQPltm2wIBjxRjmN31:14033:0:99999:7::: Ou use o comando passwd para atualizar a senha de root e outros usuários: # passwd (atualiza a senha de root) # passwd aluno1(atualiza a senha do usuário aluno1) pwunconv .* Atenção ! Após executar o comando pwconv serão apagadas as senhas criptografadas dos usúarios no arquivo recém criado /etc/shadow.

pois o comando grpconv não sabe quais são as senhas dos grupos. veja abaixo um exemplo da senha do grupo "grupo1" criptografa do arquivo de backup. grupo1:N0DgV/geAhAsY:: Ou use o comando gpasswd para atualizar as senhas dos grupos : 22 .Cria o arquivo /etc/gshadow a partir do arquivo /etc/group e alternativamente através de /etc/gshadow existente Exemplo: (antes faça uma copia de segurança dos arquivos na pasta root) # cp /etc/group /root/backup # cp /etc/gshadow /root/backup # mv gshadow /root/ (mova para a pasta root) # ls /etc/gshadow* (repare que o arquivo foi movido) # grpconv (cria um novo arquivo /etc/gshadow) # ls /etc/gshadow* (repare que o arquivo foi criado) * Atenção ! Após executar o comando grpconv serão apagadas as senhas criptografadas dos grupos no arquivo recém criado /etc/gshadow.grpconv . onde as senhas são substituídas por um "x". Para isso é necessário atualizar as senhas dos grupos. portanto para atualizar as senhas use o comando gpasswd ou copie as senhas criptografadas do arquivo de backup a partir do sinal de dois pontos ":" após o nome de grupo até o próximo sinal de dois pontos ":".

Verifica os arquivos /etc/passwd e /etc/shadow. sendo necessário restaurar os arquivos com as senhas criptografadas novamente para isso execute os comandos pwconv e grpconv novamente.# gpasswd grupo1 (atualiza a senha do grupo1) grpunconv . 23 .Cria o arquivo /etc/group a partir do arquivo /etc/group e /etc/gshadow existentes e remove o arquivo /etc/gshadow Exemplo: # stat /etc/group (repare a data de acesso e modificação) # stat /etc/gshadow (repare a data de acesso e modificação) # grpunconv # ls /etc/gshadow* (repare que o arquivo foi apagado) # grpconv (cria novamente o arquivo /etc/gshadow) * Atenção ! Após executar os comandos pwunconv e grpunconv serão apagados os arquivos /etc/shadow e /etc/gshadow. # pwconv (restaura o arquivo /etc/shadow) # grpconv (restaura o arquivo /etc/gshadow) pwck .

..:/home/aluno1:/bin/bash 24 . Exemplo: # grpck Tornando um usuário com permissões de superusuário root Para dar permissões de root a um usuário edite o arquivo /etc/passwd e altere seu UID e o GID colocando o valor 0 Abaixo segue um exemplo onde o UID e o GID do usuário aluno1 foi alterado de 1001 para 0...Exemplo: # pwck grpck . Antes aluno1:x:1001:1001:aluno1.Verifica os arquivos /etc/group e /etc/gshadow.:/home/aluno1:/bin/bash Depois aluno1:x:0:0:aluno1.

. basta colocar como comentário com um # na linha referente a esse usuário no arquivo /etc/passwd.ITawhIdTUGedVsdzP0:13820:0:99999:7::: /home # rm -rf /home/aluno1 25 .Bloqueando um usuário Para bloquear um usuário de fazer login..:/home/aluno1:/bin/bash Depois # aluno1:x:1001:1001:aluno1.. Remova o diretório do usuário em /home e o arquivo referente ao usuário em /var/spool/mail.. /etc/group e /etc/shadow. Antes aluno1:x:1001:1001:aluno1.:/home/aluno1:/bin/bash /etc/group aluno1:x:1000: /etc/shadow aluno1:$1$3IJAsyNt$8Fl.:/home/aluno1:/bin/bash Excluindo um usuário manualmente Para excluir um usuário manualmente. basta remover a linha referente a esse usuário nos arquivos /etc/passwd... /etc/passwd aluno1:x:1001:1001:aluno1.

/var/spool/mail # rm -f /var/spool/mail/aluno1 26 .