You are on page 1of 13

Analista de TI: Almir JR

Criando e gerenciando usurios no GNU/Linux


Introduo
Uma das coisas que torna seguro o sistema operacional GNU/Linux (na verdade, qualquer sistema baseado no Unix), a sua exigncia de que cada coisa tenha dono e permisses de uso. Assim, para que seja possvel restringir ou permitir o acesso e o uso de determinados recursos a uma ou mais pessoas, necessrio que cada uma tenha um usurio devidamente criado no sistema operacional. Mas, como criar usurios no Linux? Como alterar as caractersticas desses usurios? Como bloquear ou mesmo eliminar um usurio do sistema? isso que voc ver nas prximas linhas.

Por que criar usurios no GNU/Linux?


Criar uma conta para cada usurio no sistema operacional no serve apenas para restringir ou permitir o acesso aos recursos oferecidos, mas tambm para respeitar o espao que cada pessoa tem. Com uma conta, uma pessoa poder ter os seus prprios diretrios, personalizar o seu desktop, ter atalhos e configuraes para os seus programas preferidos, entre outros. Alm disso, mesmo que o computador onde o GNU/Linux est instalado seja usado apenas por uma pessoa, recomendvel criar um usurio prprio para ela. Mas, por qual motivo, se o sistema j conta com um usurio nativo, o root? O usurio root o que "manda" no sistema, pois ele tem poderes de administrador, o que significa que ele tem acesso a todos os recursos do sistema operacional. Us-lo no dia-adia no recomendvel, pois se o computador for tomado por outra pessoa ou se o prprio usurio fizer alguma coisa errada, o sistema operacional poder ser seriamente comprometido. Respondendo a pergunta desse tpico com base nisso, a resposta muito simples: devese criar usurios no GNU/Linux meramente para permitir a sua utilizao por cada pessoa.

Entendendo o controle de usurios no GNU/Linux

Analista de TI: Almir JR

Para criar, gerenciar ou eliminar contas de usurios no GNU/Linux, necessrio estar "logado" no sistema operacional com o usurio root (ou outro usurio que tenha privilgios de administrador). Os motivos para isso so bvios: somente usurios autorizados que podem manipular outras contas, do contrrio, a segurana do sistema seria seriamente comprometida, pois qualquer usurio poderia criar, alterar ou apagar contas. Note que, dependendo das configuraes do seu sistema, pode ser necessrio executar cada instruo antecedida do comando 'sudo', como acontece por padro com a distribuio Ubuntu. Antes de criar e controlar contas no GNU/Linux, conveniente entender como o sistema operacional lida com isso. Em geral, cada conta criada fica armazenada em um arquivo de nome passwd localizado dentro do diretrio /etc/ (ou seja, seu caminho completo /etc/passwd). Esse arquivo contm vrias informaes sobre cada usurio: - o seu nome de login (ou seja, o nome que necessrio digitar para entrar no sistema); - senha (neste caso, a informao da senha pode estar criptografada ou em outro arquivo); - UID (User IDentification), ou seja, nmero de identificao do usurio; - GID (Group IDentification), isto , nmero de identificao do grupo do usurio; - informaes adicionais sobre o usurio (nome completo, dados de contato, etc); - diretrio "home", ou seja, o diretrio principal de cada usurio; - shell do usurio, uma espcie de programa que interpretar os comandos que o usurio digitar. Para que voc possa entender melhor cada um desses itens, vamos analis-los usando como base a linha abaixo extrada de um arquivo /etc/passwd, que mostra a posio que cada uma das informaes acima ocupa: tintin:x:1001:500:TinTin,Belgica,846-846:/home/tintin:/bin/bash Note que cada parmetro do usurio separado por : (dois pontos). Vamos estudar cada um: tintin: neste ponto que fica localizado o nome de login do usurio, neste caso, tintin. Esse nome no pode ser igual a outro j existente no sistema e, geralmente limitado a 32 caracteres. Todavia, dependendo da configurao aplicada, o nome pode ser "case sensitive", ou seja, diferencia letras maisculas de minsculas. Assim, 'wester' ser diferente de 'wEster', por exemplo; x: essa posio indica a senha do usurio. A letra x informa que a senha est armazenada e protegida dentro do arquivo /etc/shadow. Se houver um asterisco (*) no lugar, significa

Analista de TI: Almir JR

que a conta est desativada. Todavia, se no houver nada, significa que no h senha para esse usurio. Em alguns casos, embora isso no seja recomendvel, a senha pode estar inserida diretamente ali, mas criptografada; 1001: esse campo indica o nmero UID (User IDentification) do usurio, mas voc pode estar se perguntando o que isso. Como o prprio nome informa, nmero que serve para identificar o usurio. Em geral, o sistema pode suportar UIDs que vo de 0 a 4.294.967.296, embora alguns sistemas limitem esse nmero a valores inferiores. Normalmente, o UID 0 atribudo pelo prprio GNU/Linux ao usurio root. O sistema tambm pode criar automaticamente usurios para a execuo 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 usurio 1001. Para usurios "humanos" do sistema, realmente uma boa prtica criar UIDs mais altas, para fins de organizao; 500: esse o campo que indica o GID (Group IDentification) do usurio, isto , o nmero de identificao do grupo do qual ele faz parte. Assim como no UID, geralmente o usurio 0 indicado para o grupo do usurio root. Note, no entanto, que um mesmo usurio pode fazer parte de mais de um grupo (geralmente, o GNU/Linux permite a participao do usurio 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 funcionrios do departamento contbil de sua empresa acessem os arquivos disponveis na pasta /contabilidade/. Para isso, voc cria um grupo e uma definio que faz com que apenas os usurios desse grupo tenham direito ao acesso. Feito isso, basta adicionar ao grupo cada usurio do departamento contbil. Assim, somente eles acessaro o diretrio. Via de regra, o sistema operacional cria um grupo para cada conta de usurio criada; TinTin,Belgica,846-846: esse campo muito interessante, pois permite a incluso de informaes adicionais sobre o usurio. Tambm chamado de GECOS (General Electric Comprehensive Operating System) em aluso a uma funcionalidade existente em um sistema operacional Unix que tinha esse nome, esse campo serve para, por exemplo, cadastrar o nome completo do usurio, seu endereo, seu telefone ou o seu ramal, etc. Cada informao separada da outra por uma vrgula, por exemplo: Emerson Alecrim,Rua X,1234-4321. Na prtica, voc pode inserir as informaes que achar melhor, no apenas os dados informados anteriormente; /home/tintin: cada usurio 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 diretrio /home/, mas voc pode definir o diretrio que quiser (ou mesmo no indicar nenhum); /bin/bash: esse o campo que informa qual o shell (interpretador de comandos) de login que o usurio utilizar. O GNU/Linux trabalha com vrios, entre eles, o bash, o sh e o csh. Caso nenhum shell seja informado, o sistema utilizar o bash como padro.

Analista de TI: Almir JR

Criando usurios no GNU/Linux


Agora que voc j conta com informaes importantes sobre o gerenciamento de usurios no GNU/Linux, chegou a hora de criar contas. Para isso, voc pode abrir um terminal e utilizar o comando adduser (dependendo do seu sistema, o comando pode ser somente/tambm useradd), que aplicado da seguinte forma: adduser opes usurio Em opes, voc pode colocar parmetros especficos para a configurao da conta de usurio que ser criada. Voc pode usar vrios parmetros (veja uma lista completa digitando man adduser no terminal), entre eles: adduser -disabled-login usurio: faz com que a conta do usurio seja criada sem a solicitao de uma senha (ou seja, no executa o comando passwd). No entanto, a conta no poder ser usada at que o usurio defina sua senha de acesso; adduser -force-badname usurio: em geral, os sistemas GNU/Linux checam se a conta criada pode ter em seu nome (ou mesmo na senha) algo que aumente os riscos ao sistema. Com esse comando, o sistema instrudo a no fazer esse tipo de verificao;

adduser -group grupo: com esse parmetro, ao invs de uma conta de usurio, um grupo criado. Para essa tarefa tambm pode-se utilizar o comando addgroup; adduser -home diretrio usurio: com essa opo, voc define em qual diretrio ficar o "home" do usurio. Se esse parmetro no for usado, o sistema criar o "home" no diretrio padro (geralmente, em /home/nome_do_usurio). Se preferir que nenhum diretrio desse tipo seja criado, voc pode utilizar a opo -no-create-home (no recomendvel);

Analista de TI: Almir JR

adduser -uid nmero usurio: quando usurios so criados, o sistema geralmente adiciona a eles UIDs sequenciais, mas voc pode especificar o UID que quiser usando o parmetro uid seguido de um nmero, por exemplo, uid 31415. Note que, em muitas distribuies GNU/Linux, voc pode utilizar apenas a letra u ao invs de uid. Note tambm que o GID do usurio ser igual ao valor informado por voc, a no ser que voc especifique outro atravs da opo -gid, vista abaixo; adduser -gid nmero usurio: semelhante ao parmetro acima, mas especifica manualmente um grupo para o usurio ao invs de criar um parmetro. Note que, em muitas distribuies GNU/Linux, voc pode utilizar apenas a letra g ao invs de gid. O gid informado deve ser o de um grupo j existente; adduser -ingroup grupo usurio: adiciona o usurio criado a um grupo j existente, ao invs de criar um novo grupo para ele; adduser -shell shell usurio: atravs desse parmetro, voc pode especificar qual ser o shell padro do usurio. Em alguns sistemas possvel usar a letra s ao invs da palavra shell. Para servir de exemplo, vamos criar um usurio de nome wester. Esse usurio dever: - ter um UID de nmero 27182; - ser inserido no grupo infowester (j existente). Veja como ficar o comando: adduser -uid 27182 -ingroup infowester wester Assim que esse comando for digitado, o sistema pedir que voc digite duas vezes uma senha para o usurio. Em seguida, perguntar as informaes adicionais, como nome completo, telefone, etc. Note que voc pode deixar essas informaes em branco, se preferir. Voc deve ter notado pelo comando acima de que possvel utilizar mais de uma opo ao mesmo tempo no comando adduser.

Eliminando usurios no GNU/Linux


Se voc precisa apagar um usurio, saiba que o procedimento fcil. Basta digitar o comando userdel seguido do nome do usurio. Por exemplo: userdel voldmort

Analista de TI: Almir JR

Se alm de eliminar esse usurio do sistema voc quiser que sua pasta "home" seja apagada (junto com todo o seu contedo), basta digitar o comando userdel seguido do parmetro -r e do nome do usurio: userdel -r voldemort Ao fazer isso, certifique-se que o usurio tem cpia de todos os arquivos a serem apagados, quando cabvel.

Alterando e controlando a senha do usurio


Por segurana, recomendvel alterar a senha de todos os usurios periodicamente. Para isso, usa-se o comando passwd. Se qualquer usurio quiser alterar a sua prpria senha, basta digitar apenas passwd em um terminal. Quando isso ocorrer, o sistema pedir que o usurio digite a sua senha atual e, em seguida, pedir a nova seqncia, que deve ser informada duas vezes, para confirmao. O usurio root (ou outro que tenha privilgios de administrador) pode mudar no s a sua prpria senha como a senha de todos os outros usurios do sistema. Para isso, o comando passwd tambm usado e pode ser acrescido de opes: passwd usurio opes Eis algumas das opes disponveis (para conhecer as outras, pode-se digitar o comando man passwd em um terminal): -e: faz com que a senha do usurio expire, forando-o a fornecer uma nova combinao no prximo login;

Analista de TI: Almir JR

-k: permite a alterao da senha somente se esta estiver expirada; -x dias: faz com que a senha funcione apenas pela quantidade de dias informada. Depois disso, a senha expira e o usurio deve troc-la; -n dias: indica a quantidade mnima de dias que o usurio deve aguardar para trocar a senha; -w dias: define a quantidade mnima de dias em que o usurio receber o aviso de que sua senha precisa ser alterada; -i: deixa a conta inativa, caso a senha tenha expirado; -l: "tranca" a conta do usurio; -u: desbloqueia uma conta que esteja "trancada"; -S: exibe o status da conta (note que a letra S deve estar em maiscula). Vamos a alguns exemplos para que voc possa entender essas opes: Suponha que voc queira que a senha do usurio marvin expire aps 30 dias. O comando : passwd marvin -x 30 Suponha, agora, que voc queira que a senha do usurio bender expire aps 14 dias e exiba uma mensagem de que necessrio trocar a senha trs 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 usurio bender, para confirmar as alteraes. Eis o comando: passwd bender -S O resultado exibido neste exemplo : bender P 12/11/2007 0 14 3 -1 A letra P acima informa que o usurio bender tem senha. Se no tivesse, no lugar de P estariam as letras NP. Se a conta do usurio estivesse bloqueada, apareceria a letra L. Por sua vez, a data que aparece na seqncia (no formato ms/dia/ano) informa a ltima alterao de senha que houve. As prximas quatro informaes indicam, respectivamente, o perodo mnimo de utilizao da senha, o perodo mximo (lembra que voc definiu esse

Analista de TI: Almir JR

perodo com sendo de 14 dias?), o perodo de alerta (que voc informou como sendo de 3 dias) e, por fim, o perodo de inatividade (quando no h inatividade, o resultado -1).

Como j informado antes, o GNU/Linux usa o arquivo /etc/shadow para lidar com as senhas de usurios. As informaes desse arquivo tm o seguinte padro (usando como exemplo os dados do usurio toad): toad:$1$O48MNVt9$08BBOTqV0cr2LtKtMXtAY1:13849:0:99999:7::: Assim como acontece no arquivo /etc/passwd, as informaes do arquivo /etc/shadow so separadas por : (dois pontos). No caso acima, aparece o nome do usurio (toad), a senha criptografada ( por que isso que h esse monte de caracteres sem sentido), a data da ltima mudana (13849), a quantidade mnima de dias que o usurio deve esperar para mudar a sua senha (0), a quantidade mxima de dias para a alterao de senha ser feita (99999) e a quantidade de dias restantes data de expirao que o sistema operacional deve esperar para exibir alertas de mudana de senha (7). Os demais campos (que esto em branco) so destinados informaes de expirao de conta, mas dificilmente so usados. Voc pode ter se perguntado sobre o motivo das datas serem representadas por um nico nmero, 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 usurios. Veja os principais comandos disponveis:

Analista de TI: Almir JR

addgroup grupo: funciona de maneira igual ao comando adduser (inclusive algumas opes so as mesmas), no entanto, obviamente, cria grupos ao invs de usurios; groupdel grupo: serve para eliminar grupos do sistema; newgrp - grupo: com este comando possvel mudar o grupo efetivo do usurio, isto , o grupo pertencente a ele, por um outro grupo do qual ele faz parte. Essa operao somente executada caso o grupo tenha senha; groups usurio: mostra os grupos dos quais um usurio faz parte. Se quiser, por exemplo, saber os grupos do usurio gandalf, basta digitar em um terminal: groups gandalf As informaes dos grupos so armazenadas no arquivo /etc/groups. Esse arquivo tambm indica quais usurios pertencem aos grupos existentes. Cada grupo contm uma linha com essas informaes. 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 so separados por : (dois pontos). No exemplo acima, o primeiro campo indica o nome do grupo (infowester). O segundo campo informa a senha (sim, possvel definir senhas para grupos, embora raramente isso seja feito). Neste caso, usa-se x para indicar a ausncia de senha. O terceiro campo informa o GID do grupo (1002) e, por fim, o quarto campo informa quais so os usurios pertencentes a esse grupo. Note que, neste exemplo, os usurios wester, toad e marvin fazem parte do grupo infowester. A lista de usurios deve ser separada por vrgulas, sem espao entre os nomes. No que se refere a este assunto, possvel que encontre grupos em seu sistema que voc no lembra de ter criado. Suponha, por exemplo, que voc digitou o comando groups lestat para saber quais os grupos dos quais participa o usurio lestat, e o resultado foi o seguinte: lestat : lestat adm cdrom floppy audio video scanner lpadmin powerdev Note que o usurio lestat participa de vrios 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 "padro", isto , grupos que servem para permitir que o usurio execute determinadas tarefas. A quantidade e as finalidades dos grupos podem variar de acordo com a distribuio GNU/Linux utilizada e a sua configurao. Eis alguns grupos bastante comuns: cdrom: grupo para utilizao de unidades de CD/DVD;

Analista de TI: Almir JR

audio: grupo para acesso aos recursos de udio do computador; video: grupo para acesso aos recursos de vdeo do computador; floppy: grupo para utilizao da unidade de disquete; adm: grupo para acesso de recursos administrativos.

Alterando informaes dos usurios


Se voc pode criar e apagar contas de usurios, pode tambm alter-las. Isso feito facilmente com o comando usermod, cujo funcionamento semelhante ao comando adduser: usermod opes usurio Eis algumas de suas opes: usermod -d diretrio usurio: altera o diretrio "home" do usurio. Adicione -m no final para mover o contedo da pasta anterior para a nova. Por exemplo: usermod -d /financeiro -m peterpan usermod -e data usurio: define a data de expirao da conta do usurio. Em geral, a data fornecida no esquema ano/ms/dia (aaaa-mm-dd). Por exemplo: usermod -e 2008-10-28 galadriel usermod -l novo_nome usurio: altera o nome do login do usurio. No exemplo abaixo, o usurio peterparker teve seu nome alterado para spiderman: usermod -l spiderman peterparker usermod -g grupo nmero usurio: altera o GID do grupo principal do usurio. Por exemplo: usermod -g 42 galadriel

Analista de TI: Almir JR

usermod -s shell usurio: altera o shell do usurio; usermod -u nmero usurio: altera o UID da conta do usurio.

Comandos adicionais
O GNU/Linux ainda conta com vrios outros comandos que lhe ajudam a gerenciar e obter informaes de usurios e grupos. Veja alguns: logname: mostra o nome do seu usurio; users: mostra os usurios que esto conectados ao sistema no momento; id: mostra dados da identificao do usurio. Eis algumas opes: id usurio: exibe os grupos (e seus respectivos GIDs) dos quais o usurio faz parte; id -g usurio: mostra o GID do grupo do usurio; id -G usurio: exibe o GID de todos os grupos do usurio (nome que a letra G fica em caixa alta); id -u usurio: indica o UID do usurio. finger usurio: mostra informaes detalhadas do usurio. Se o comando for digitado isoladamente (ou seja, somente finger), o sistema exibe todos os usurios que esto conectados no sistema operacional no momento;

Analista de TI: Almir JR

chfn usurio: comando para mudar as informaes adicionais do usurio (nome completo, telefone, etc). last: o comando last bastante interessante e til, pois mostra os ltimos usurios que estiveram logados no sistema, os terminais usados por eles para se conectar, o hostname (quando a conexo feita remotamente), as datas e os horrios de utilizao do computador, assim como o tempo de permanncia no sistema. Esses dados geralmente so obtidos do arquivo de logs /var/log/wtmp. O last tambm possui opes. Veja algumas: last -n nmero: mostra apenas as ltimas linhas do log. Para definir a quantidade de linhas, substitua nmero pelo valor desejado. Por exemplo: last -n 10 last -x: mostra os dados de desligamento do sistema, assim como informaes do nvel de execuo; last -R: faz com que o comando no 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.

LIVROS SUGERIDOS:

Linux: referncia para leigos Manual completo do Linux Comandos do Linux - Consulta rpida

Analista de TI: Almir JR

Finalizando
Hoje em dia, possvel criar e administrar usurios no GNU/Linux atravs de interfaces grficas, tal como mostra a imagem abaixo, uma janela de administrao de usurios da distribuio Ubuntu, exibida atravs do ambiente grfico 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 disponvel (situao que ocorre principalmente em servidores). Alm disso, tal aprendizado ajuda na compreenso de como o GNU/Linux e outros sistemas baseados no Unix fazem o controle de grupos e usurios.

Para que voc possa complementar tudo o que aprendeu com este tutorial, leia as seguintes matrias relacionadas: - O usurio root; - Entendendo e usando permisses no Linux.