Escolar Documentos
Profissional Documentos
Cultura Documentos
:: GNU/Linux
Respondendo a pergunta desse tópico com base nisso, a resposta é muito simples: deve-se criar
usuários no GNU/Linux meramente para permitir a sua utilização por cada pessoa.
http://www.infowester.com/printversion/usuarioslinux.php 19/03/2010
Criando e gerenciando usuários no GNU/Linux Página 2 de 11
pode ser necessário executar cada instrução antecedida do comando 'sudo', como acontece por
padrão com a distribuição Ubuntu.
- o seu nome de login (ou seja, o nome que é necessário digitar para entrar no sistema);
- senha (neste caso, a informação da senha pode estar criptografada ou em outro arquivo);
- UID (User IDentification), ou seja, número de identificação do usuário;
- GID (Group IDentification), isto é, número de identificação do grupo do usuário;
- informações adicionais sobre o usuário (nome completo, dados de contato, etc);
- diretório "home", ou seja, o diretório principal de cada usuário;
- shell do usuário, uma espécie de programa que interpretará os comandos que o usuário digitar.
Para que você possa entender melhor cada um desses itens, vamos analisá-los usando como base a
linha abaixo extraída de um arquivo /etc/passwd, que mostra a posição que cada uma das
informações acima ocupa:
tintin:x:1001:500:TinTin,Belgica,846-846:/home/tintin:/bin/bash
Note que cada parâmetro do usuário é separado por : (dois pontos). Vamos estudar cada um:
tintin: é neste ponto que fica localizado o nome de login do usuário, neste caso, tintin. Esse nome
não pode ser igual a outro já existente no sistema e, geralmente é limitado a 32 caracteres.
Todavia, dependendo da configuração aplicada, o nome pode ser "case sensitive", ou seja,
diferencia letras maiúsculas de minúsculas. Assim, 'wester' será diferente de 'wEster', por
exemplo;
x: essa posição indica a senha do usuário. A letra x informa que a senha está armazenada e
protegida dentro do arquivo /etc/shadow. Se houver um asterisco (*) no lugar, significa que a
conta está desativada. Todavia, se não houver nada, significa que não há senha para esse usuário.
Em alguns casos, embora isso não seja recomendável, a senha pode estar inserida diretamente ali,
mas criptografada;
1001: esse campo indica o número UID (User IDentification) do usuário, mas você pode estar se
perguntando o que é isso. Como o próprio nome informa, é número que serve para identificar o
usuário. Em geral, o sistema pode suportar UIDs que vão de 0 a 4.294.967.296, embora alguns
sistemas limitem esse número a valores inferiores. Normalmente, o UID 0 é atribuído pelo próprio
GNU/Linux ao usuário root. O sistema também pode criar automaticamente usuários para a
execução de determinadas rotinas e atribuir a eles UIDs baixos, como 1, 2, 3 e assim por diante.
Note que, em nosso exemplo, o UID do usuário é 1001. Para usuários "humanos" do sistema,
realmente é uma boa prática criar UIDs mais altas, para fins de organização;
500: esse é o campo que indica o GID (Group IDentification) do usuário, isto é, o número de
identificação do grupo do qual ele faz parte. Assim como no UID, geralmente o usuário 0 é
indicado para o grupo do usuário root. Note, no entanto, que um mesmo usuário pode fazer parte
de mais de um grupo (geralmente, o GNU/Linux permite a participação do usuário em até 32
grupos). Mas qual a vantagem de se ter mais de um grupo? Simples: suponha, por exemplo, que
você queira que somente os funcionários do departamento contábil de sua empresa acessem os
arquivos disponíveis na pasta /contabilidade/. Para isso, você cria um grupo e uma definição que
faz com que apenas os usuários desse grupo tenham direito ao acesso. Feito isso, basta adicionar
ao grupo cada usuário do departamento contábil. Assim, somente eles acessarão o diretório. Via
de regra, o sistema operacional cria um grupo para cada conta de usuário criada;
http://www.infowester.com/printversion/usuarioslinux.php 19/03/2010
Criando e gerenciando usuários no GNU/Linux Página 3 de 11
/home/tintin: cada usuário criado no sistema tem direito a uma pasta "home", ou seja, uma pasta
sua, para uso exclusivo. É neste campo que você indica onde estará essa pasta. Em geral, essas
pastas ficam dentro do diretório /home/, mas você pode definir o diretório que quiser (ou mesmo
não indicar nenhum);
/bin/bash: esse é o campo que informa qual o shell (interpretador de comandos) de login que o
usuário utilizará. O GNU/Linux trabalha com vários, entre eles, o bash, o sh e o csh. Caso nenhum
shell seja informado, o sistema utilizará o bash como padrão.
Em opções, você pode colocar parâmetros específicos para a configuração da conta de usuário que
será criada. Você pode usar vários parâmetros (veja uma lista completa digitando man adduser
no terminal), entre eles:
adduser -disabled-login usuário: faz com que a conta do usuário seja criada sem a solicitação de
uma senha (ou seja, não executa o comando passwd). No entanto, a conta não poderá ser usada até
que o usuário defina sua senha de acesso;
http://www.infowester.com/printversion/usuarioslinux.php 19/03/2010
Criando e gerenciando usuários no GNU/Linux Página 4 de 11
adduser -group grupo: com esse parâmetro, ao invés de uma conta de usuário, um grupo é
criado. Para essa tarefa também pode-se utilizar o comando addgroup;
adduser -home diretório usuário: com essa opção, você define em qual diretório ficará o "home"
do usuário. Se esse parâmetro não for usado, o sistema criará o "home" no diretório padrão
(geralmente, em /home/nome_do_usuário). Se preferir que nenhum diretório desse tipo seja
criado, você pode utilizar a opção -no-create-home (não recomendável);
adduser -uid número usuário: quando usuários são criados, o sistema geralmente adiciona a eles
UIDs sequenciais, mas você pode especificar o UID que quiser usando o parâmetro uid seguido de
um número, por exemplo, uid 31415. Note que, em muitas distribuições GNU/Linux, você pode
utilizar apenas a letra u ao invés de uid. Note também que o GID do usuário será igual ao valor
informado por você, a não ser que você especifique outro através da opção -gid, vista abaixo;
adduser -gid número usuário: semelhante ao parâmetro acima, mas especifica manualmente um
grupo para o usuário ao invés de criar um parâmetro. Note que, em muitas distribuições
GNU/Linux, você pode utilizar apenas a letra g ao invés de gid. O gid informado deve ser o de um
grupo já existente;
adduser -ingroup grupo usuário: adiciona o usuário criado a um grupo já existente, ao invés de
criar um novo grupo para ele;
adduser -shell shell usuário: através desse parâmetro, você pode especificar qual será o shell
padrão do usuário. Em alguns sistemas é possível usar a letra s ao invés da palavra shell.
Para servir de exemplo, vamos criar um usuário de nome wester. Esse usuário deverá:
Assim que esse comando for digitado, o sistema pedirá que você digite duas vezes uma senha para
o usuário. Em seguida, perguntará as informações adicionais, como nome completo, telefone, etc.
Note que você pode deixar essas informações em branco, se preferir. Você deve ter notado pelo
comando acima de que é possível utilizar mais de uma opção ao mesmo tempo no comando
adduser.
userdel voldmort
Se além de eliminar esse usuário do sistema você quiser que sua pasta "home" seja apagada (junto
com todo o seu conteúdo), basta digitar o comando userdel seguido do parâmetro -r e do nome do
usuário:
userdel -r voldemort
http://www.infowester.com/printversion/usuarioslinux.php 19/03/2010
Criando e gerenciando usuários no GNU/Linux Página 5 de 11
Ao fazer isso, certifique-se que o usuário tem cópia de todos os arquivos a serem apagados,
quando cabível.
O usuário root (ou outro que tenha privilégios de administrador) pode mudar não só a sua própria
senha como a senha de todos os outros usuários do sistema. Para isso, o comando passwd também
é usado e pode ser acrescido de opções:
Eis algumas das opções disponíveis (para conhecer as outras, pode-se digitar o comando man
passwd em um terminal):
-e: faz com que a senha do usuário expire, forçando-o a fornecer uma nova combinação no
próximo login;
-x dias: faz com que a senha funcione apenas pela quantidade de dias informada. Depois disso, a
senha expira e o usuário deve trocá-la;
-n dias: indica a quantidade mínima de dias que o usuário deve aguardar para trocar a senha;
-w dias: define a quantidade mínima de dias em que o usuário receberá o aviso de que sua senha
precisa ser alterada;
http://www.infowester.com/printversion/usuarioslinux.php 19/03/2010
Criando e gerenciando usuários no GNU/Linux Página 6 de 11
-S: exibe o status da conta (note que a letra S deve estar em maiúscula).
Vamos a alguns exemplos para que você possa entender essas opções:
Suponha que você queira que a senha do usuário marvin expire após 30 dias. O comando é:
passwd marvin -x 30
Suponha, agora, que você queira que a senha do usuário bender expire após 14 dias e exiba uma
mensagem de que é necessário trocar a senha três dias antes da data limite. O comando será o
seguinte:
passwd bender -x 14 -w 3
Agora, vamos supor que você queira saber do status do usuário bender, para confirmar as
alterações. Eis o comando:
passwd bender -S
bender P 12/11/2007 0 14 3 -1
A letra P acima informa que o usuário bender tem senha. Se não tivesse, no lugar de P estariam as
letras NP. Se a conta do usuário estivesse bloqueada, apareceria a letra L. Por sua vez, a data que
aparece na seqüência (no formato mês/dia/ano) informa a última alteração de senha que houve. As
próximas quatro informações indicam, respectivamente, o período mínimo de utilização da senha,
o período máximo (lembra que você definiu esse período com sendo de 14 dias?), o período de
alerta (que você informou como sendo de 3 dias) e, por fim, o período de inatividade (quando não
há inatividade, o resultado é -1).
Como já informado antes, o GNU/Linux usa o arquivo /etc/shadow para lidar com as senhas de
usuários. As informações desse arquivo têm o seguinte padrão (usando como exemplo os dados do
usuário toad):
toad:$1$O48MNVt9$08BBOTqV0cr2LtKtMXtAY1:13849:0:99999:7:::
http://www.infowester.com/printversion/usuarioslinux.php 19/03/2010
Criando e gerenciando usuários no GNU/Linux Página 7 de 11
Você pode ter se perguntado sobre o motivo das datas serem representadas por um único número,
como o valor 13849, acima. Essa formato indica a quantidade de dias que já se passou desde 1 de
janeiro de 1970.
Gerenciando grupos
Lidar com grupos no GNU/Linux é tarefa muito semelhante ao trabalho com usuários. Veja os
principais comandos disponíveis:
addgroup grupo: funciona de maneira igual ao comando adduser (inclusive algumas opções são
as mesmas), no entanto, obviamente, cria grupos ao invés de usuários;
newgrp - grupo: com este comando é possível mudar o grupo efetivo do usuário, isto é, o grupo
pertencente a ele, por um outro grupo do qual ele faz parte. Essa operação somente é executada
caso o grupo tenha senha;
groups usuário: mostra os grupos dos quais um usuário faz parte. Se quiser, por exemplo, saber
os grupos do usuário gandalf, basta digitar em um terminal:
groups gandalf
As informações dos grupos são armazenadas no arquivo /etc/groups. Esse arquivo também indica
quais usuários pertencem aos grupos existentes. Cada grupo contém uma linha com essas
informações. Vamos analisar a seguinte linha de um arquivo /etc/groups para entender melhor
como isso funciona:
infowester:x:1002:wester,toad,marvin
Assim como nos arquivos /etc/passwd e /etc/shadow, os campos da linha são separados por : (dois
pontos). No exemplo acima, o primeiro campo indica o nome do grupo (infowester). O segundo
campo informa a senha (sim, é possível definir senhas para grupos, embora raramente isso seja
feito). Neste caso, usa-se x para indicar a ausência de senha. O terceiro campo informa o GID do
grupo (1002) e, por fim, o quarto campo informa quais são os usuários pertencentes a esse grupo.
Note que, neste exemplo, os usuários wester, toad e marvin fazem parte do grupo infowester. A
lista de usuários deve ser separada por vírgulas, sem espaço entre os nomes.
No que se refere a este assunto, é possível que encontre grupos em seu sistema que você não
lembra de ter criado. Suponha, por exemplo, que você digitou o comando groups lestat para saber
quais os grupos dos quais participa o usuário lestat, e o resultado foi o seguinte:
lestat : lestat adm cdrom floppy audio video scanner lpadmin powerdev
http://www.infowester.com/printversion/usuarioslinux.php 19/03/2010
Criando e gerenciando usuários no GNU/Linux Página 8 de 11
Note que o usuário lestat participa de vários grupos, sendo um deles o seu grupo principal, que
leva o seu nome. Mas, de onde surgiram os demais? O GNU/Linux possui alguns grupos
considerados "padrão", isto é, grupos que servem para permitir que o usuário execute
determinadas tarefas. A quantidade e as finalidades dos grupos podem variar de acordo com a
distribuição GNU/Linux utilizada e a sua configuração. Eis alguns grupos bastante comuns:
usermod -d diretório usuário: altera o diretório "home" do usuário. Adicione -m no final para
mover o conteúdo da pasta anterior para a nova. Por exemplo:
usermod -e data usuário: define a data de expiração da conta do usuário. Em geral, a data é
fornecida no esquema ano/mês/dia (aaaa-mm-dd). Por exemplo:
usermod -l novo_nome usuário: altera o nome do login do usuário. No exemplo abaixo, o usuário
peterparker teve seu nome alterado para spiderman:
usermod -g grupo número usuário: altera o GID do grupo principal do usuário. Por exemplo:
usermod -g 42 galadriel
http://www.infowester.com/printversion/usuarioslinux.php 19/03/2010
Criando e gerenciando usuários no GNU/Linux Página 9 de 11
Comandos adicionais
O GNU/Linux ainda conta com vários outros comandos que lhe ajudam a gerenciar e obter
informações de usuários e grupos. Veja alguns:
id usuário: exibe os grupos (e seus respectivos GIDs) dos quais o usuário faz parte;
id -G usuário: exibe o GID de todos os grupos do usuário (nome que a letra G fica em caixa alta);
http://www.infowester.com/printversion/usuarioslinux.php 19/03/2010
Criando e gerenciando usuários no GNU/Linux Página 10 de 11
chfn usuário: comando para mudar as informações adicionais do usuário (nome completo,
telefone, etc).
last: o comando last é bastante interessante e útil, pois mostra os últimos usuários que estiveram
logados no sistema, os terminais usados por eles para se conectar, o hostname (quando a conexão
é feita remotamente), as datas e os horários de utilização do computador, assim como o tempo de
permanência no sistema. Esses dados geralmente são obtidos do arquivo de logs /var/log/wtmp. O
last também possui opções. Veja algumas:
last -n número: mostra apenas as últimas linhas do log. Para definir a quantidade de linhas,
substitua número pelo valor desejado. Por exemplo:
last -n 10
last -x: mostra os dados de desligamento do sistema, assim como informações do nível de
execução;
last -R: faz com que o comando não exiba os hostnames (note que a letra R fica em caixa alta);
last -a: faz com que os hostnames sejam exibidos apenas na última coluna.
Finalizando
Hoje em dia, é possível criar e administrar usuários no GNU/Linux através de interfaces gráficas,
tal como mostra a imagem abaixo, uma janela de administração de usuários da distribuição
Ubuntu, exibida através do ambiente gráfico Gnome. No entanto, é importante saber como fazer
essa tarefa por comandos para os casos onde somente o modo texto - isto é, um terminal de
comandos - está disponível (situação que ocorre principalmente em servidores). Além disso, tal
aprendizado ajuda na compreensão de como o GNU/Linux e outros sistemas baseados no Unix
fazem o controle de grupos e usuários.
http://www.infowester.com/printversion/usuarioslinux.php 19/03/2010
Criando e gerenciando usuários no GNU/Linux Página 11 de 11
Para que você possa complementar tudo o que aprendeu com este tutorial, leia as seguintes
matérias relacionadas:
- O usuário root;
- Entendendo e usando permissões no Linux.
Os artigos desenvolvidos pelo InfoWester estão sob uma Licença Creative Commons -
http://creativecommons.org/licenses/by-nc-sa/3.0/br/
InfoWester 2010 - Propagando conhecimento - www.infowester.com
http://www.infowester.com/printversion/usuarioslinux.php 19/03/2010