Вы находитесь на странице: 1из 6

Introduo

O gerenciamento de usurios no Linux um tema bem conhecido, mas, ao mesmo tempo, fonte de
vrias dvidas. Este um mini-tutorial sobre o gerenciamento de usurios, grupos e permisses de
acesso via linha de comando, onde voc pode tirar suas dvidas.
Como bem sabemos, o Linux um sistema multiusurio, cujas razes remetem aos sistemas Unix. O
sistema pode ser usado por inmeros usurios simultaneamente, sem que um atrapalhe as atividades
do outro, nem que possa alterar seus arquivos. Dois exemplos extremos seriam um servidor LTSP,
onde dezenas de usurios podem rodar aplicativos simultaneamente, via rede, atravs de terminais
burros conectados ao servidor principal, e um servidor web de shared hosting, que pode hospedar
milhares de sites diferentes, cada um administrado por um usurio diferente.
As restries bsicas de acesso so implementadas atravs de um sistema de permisses simples,
porm eficiente, que consiste num conjunto de trs permisses de acesso (ler, gravar e executar) e
trs grupos (dono, grupo e outros), que combinadas permitem fazer muita coisa.
Os dois comandos mais bsicos so o "adduser" e o "passwd", que permitem, respectivamente
adicionar novos usurios e alterar as senhas de acesso posteriormente, como em:
# adduser joao

(cria o usurio joao, especificando uma senha inicial)


# passwd joao

(altera a senha posteriormente)


O prprio usurio pode alterar a senha usando o comando "passwd", desde que ele saiba a senha
antiga. Se o usurio esqueceu a senha, voc pode definir uma nova executando o comando como
root; nesse caso o sistema pede a nova senha diretamente, sem solicitar a senha antiga.
Os usurios so cadastrados no sistema atravs do arquivo "/etc/passwd". Se tiver curiosidade em
olhar dentro do arquivo voc ver uma entrada para cada usurio, incluindo o diretrio home e o
shell usado, como em:
joao:x:1001:1001:,,,:/home/joao:/bin/bash

Assim como qualquer outro arquivo de configurao, o "/etc/passwd" pode ser editado
manualmente, ou com a ajuda do comando "usermod". Existem diversas situaes em que voc
pode desejar trocar o shell padro ou o diretrio home do usurio, de forma a limitar o acesso ao
servidor. Em um servidor web compartilhado por muitos usurios, por exemplo, o diretrio home de
cada usurio seria a pasta contendo os arquivos do site, e o shell padro seria um aplicativo como o
MySecureShell, destinado a limitar o acesso do usurio a esta pasta especfica.
Para alterar o shell do usurio voc usa o parmetro "-s", como em:
# usermod -s /usr/bin/rssh manuel
Para alterar o home, voc usa o parmetro "-d", como em:
# usermod -d /var/www/manuel manuel

Voc pode tambm especificar estes parmetros diretamente ao criar o usurio, como em:
# adduser --home /var/www/manuel --shell /usr/bin/rssh manuel

Bem antigamente, as senhas eram salvas no prprio arquivo "/etc/passwd", juntamente com as
demais informaes, o que abria brecha para diversos tipos de ataques. A partir de um certo ponto
(por volta de 1996) todas as distribuies passaram a utilizar o sistema shadow, onde as senhas so
armazenadas de forma encriptada em um arquivo separado, o "/etc/shadow". Dentro do arquivo
voc ver entradas contendo a senha encriptada, como em:
joao:$1$LpQPRMC5$eHXLjiW7ks80LQcepW0Rz.:13993:0:99999:7:::

As senhas so encriptadas usando um algoritmo de mo nica, que permite apenas encriptar as


senhas, mas no recuper-las. Durante o login, o sistema aplica o mesmo algoritmo senha digitada
pelo usurio e compara a string resultante com a armazenada no arquivo. Se o resultado for o
mesmo, o sistema sabe que a senha confere e o acesso autorizado.
Este sistema faz com que as senhas no sejam recuperveis, j que a senha propriamente dita no
salva em lugar nenhum. Se o usurio esqueceu a senha, voc pode usar (como root) o comando
"passwd" para definir uma nova, mas no possvel recuperar a senha antiga.
Ferramentas como o John the ripper permitem descobrir as senhas armazenadas no arquivo
"/etc/shadow" usando um ataque de fora bruta, que consiste em simplesmente testar todas as
possibilidades (incluindo alguns refinamentos, como descobrir senhas fceis, baseadas em palavras
do dicionrio) at descobrir a senha. Este mtodo funciona bem em senhas fceis, com at 6
caracteres, mas invivel no caso de boas senhas, com 8 caracteres ou mais.
A senha referente ao usurio "joao", que usei como exemplo, poderia ser descoberta rapidamente.
Baixe o programa no http://www.openwall.com/john/ (ou instale-o usando o apt-get/yum) e tente
descobrir qual :)
Continuando, para remover um usurio anteriormente criado, utilize o comando "deluser", como
em:
# deluser joao

Por questo de segurana, o comando remove apenas a conta, sem apagar o diretrio home, ou
outras pastas (como o diretrio de spool dos e-mails). O diretrio home especialmente importante,
pois ele guarda todas as configuraes e os arquivos do usurio, de forma que em um servidor voc
s deve remov-lo depois de ter realmente certeza do que est fazendo. Para remover o usurio
apagando tambm o diretrio home, adicione o parmetro "--remove-home", como em:
# deluser joao remove-home
Como comentei, o diretrio home importante, por concentrar todos os arquivos do usurio. Uma
opo saudvel ao remov-lo criar um backup, de forma que voc possa restaur-lo mais tarde
caso necessrio. Para isso, use a opo "--backup", que cria um arquivo compactado, contendo os
arquivos do usurio, salvo no diretrio onde o comando for executado:
# deluser joao --remove-home --backup

Se executasse o comando "ls" depois de remover o usurio "joao" usando a opo de backup, veria
que foi criado o arquivo "joao.tar.bz2", referente ao backup.
Voc tambm pode bloquear temporariamente um usurio, sem remover o home ou qualquer outro
arquivo usando o comando "passwd -l", como em:
# passwd -l joao

O "passwd -l" realmente trava a conta, fazendo com que o sistema passe a recursar qualquer senha
inserida na hora do login. Para desbloquear a conta posteriormente, use o "passwd -u", como em:
# passwd -u joao

O Fedora e o CentOS incluem o system-config-users, um utilitrio grfico de administrao de


usurios. Uma verso levemente modificada dele pode ser encontrada no Ubuntu e em outras
verses baseadas no Debian, na forma do "users-admin", que faz parte do pacote "gnome-system-
tools".
Alm da configurao dos usurios, temos a configurao dos grupos, que permitem organizar os
usurios, definindo as permisses de acesso de forma mais granular.
Imagine um caso em que voc tenha um servidor compartilhado entre vrios usurios, onde apenas
trs deles, "maria", "jose" e "joao" devem ter acesso pasta "/var/www/intranet", que contm os
arquivos do site interno da empresa.
Uma forma simples fazer isso criar um grupo, adicionar os trs usurios ao grupo e ajustar as
permisses da pasta de forma que o grupo tenha permisso de escrita. Para adicionar o grupo,
usamos o comando "groupadd", como em:
# groupadd intranet

Para adicionar os usurios desejados ao grupo, usamos o prprio comando "adduser", seguido pelo
login e o grupo ao qual ele deve ser adicionado (um de cada vez), como em:
# adduser maria intranet

No CentOS e em outras distribuies derivadas do Red Hat, o comando "adduser" um link para o
comando "useradd", que no suporta essa opo. No caso delas, usamos o comando "usermod -a
-G", seguido do usurio e do grupo ao qual ele ser adicionado, como em:
# usermod -a -G maria intranet

Existem algumas outras pequenas diferenas entre as opes aceitas pelo comando "adduser" entre
distribuies derivadas do Debian e derivadas do Red Hat, pois ele na verdade um script, que
pode ser alterado pelos desenvolvedores para adicionar atalhos ou funes diversas.
Voltando ao tema principal, depois de adicionar os usurios ao grupo, falta ajustar as permisses de
acesso, o que feito usando os comandos "chmod" e "chown". O primeiro permite ajustar as
permisses dos arquivos e pastas, enquanto o segundo permite transferir a posse, dizendo a qual
usurio e a qual grupo determinada pasta ou arquivo pertence.
No Linux, as permisses so agrupadas em 3 atributos principais: leitura, gravao e execuo (no
caso dos arquivos) ou listagem do contedo (no caso das pastas). Eles so representados,
respectivamente, pelas letras r, w e x.
As permisses so definidas de forma separada para o dono, o grupo (que inclui todos os usurios
includos nele) e para os outros ou seja, todos os demais usurios do sistema. Em geral, o dono tem
acesso completo, o grupo tem permisses variveis, de acordo com a funo da pasta, e os demais
podem apenas ler os arquivos, sem alterar o contedo.
Se a pasta "/var/www/intranet" no nosso exemplo anterior foi criada pelo root, as permisses de
acesso (informadas pelo comando "ls -l") sero:
drwxr-xr-x 2 root root 4096 Jun 18 09:43 intranet

O primeiro "d" indica que se trata de um diretrio. As trs letras seguintes (rwx) indicam as
permisses de acesso para o dono da pasta, que no caso possui acesso completo. Em seguida, temos
as permisses de acesso para o grupo (r-x), cujos integrantes podem listar o contedo da pasta (x) e
podem ler os arquivos (r), sem poderem alterar nada. As trs ltimas letras (r-x) indicam as
permisses para os demais usurios, que tambm podem apenas ler.
O "root root" indica o dono e o grupo ao qual pertence a pasta, no caso o root. Ao cadastrar um
usurio no sistema sempre criado um grupo com o mesmo nome (contendo apenas o prprio
usurio), o que explica o fato da pasta pertencer ao usurio "root" e tambm ao grupo "root". :)
Para que os usurios do grupo "intranet" possam alterar o contedo da pasta, o primeiro passo
alterar as permisses, transferindo a posse do grupo "root" para o grupo "intranet". Nesse caso no
precisamos alterar o dono da pasta, que pode continuar sendo o root:
# chown -R root:intranet /var/www/intranet

O "-R" no exemplo faz com que a alterao seja aplicada de forma recursiva, afetando todos os
arquivos e sub-pastas. Sem ele, a alterao seria aplicada apenas pasta propriamente dita, mas no
ao seu contedo. Em seguida, especificamos o novo dono e o novo grupo, separados por ":",
seguido da pasta. Com isso, as permisses sero alteradas para:
drwxr-xr-x 2 root intranet 4096 Jun 18 09:51 intranet
Falta agora alterar as permisses de acesso para o grupo, de forma que os usurios possam
finalmente escrever na pasta. Para isso, usamos o comando "chmod -R g+rw", que especifica que o
grupo (g) ter permisso de leitura e escrita (+rw):
# chmod -R g+rw /var/www/intranet

Se voc quisesse fazer o oposto, ou seja, remover a permisso de escrita para o grupo, usaria o
"chmod -R g-w /var/www/intranet", se quisesse remover a permisso de leitura para todos os
demais usurios usaria o "chmod -R o-r" e, se quisesse abrir as permisses para todo mundo, usaria
o "chmod -R ugo+rwx".
Aqui vai uma pequena cola com os parmetros:
-R : Recursivo, altera as permisses de todo o contedo da pasta, opcional.
u : Permisses para o dono da pasta (user).
g : Permisses para o grupo (group).
o : Permisses para os demais (others).
+ : Adiciona a permisso
- : Remove a permisso
r : Permisso de leitura
w : Permisso de escrita
x : No caso dos arquivos indica permisso de escrita e, no caso da pasta, permisso para ver o
contedo.
Voc pode tambm especificar as permisses de acesso no formato clssico, onde as permisses so
representadas por trs nmeros, como em:
# chmod -R 775 /var/www/intranet

Nesse caso, os trs nmeros indicam, respectivamente, as permisses de acesso para o dono, grupo
e para os outros. Cada nmero representa a soma das permisses desejadas, sendo que:
4 : Leitura
2 : Gravao
1 : Execuo / listagem
Voc simplesmente soma estes nmeros para ter o nmero referente ao conjunto de permisses que
deseja:
0 : Sem permisso alguma. Acesso negado.
1 : Permisso apenas para executar (no possvel ler o arquivo ou alter-lo, apenas executar um
programa) ou, no caso das pastas, permisso apenas para ver a lista dos arquivos dentro da pasta,
sem poder abr-los.
4 : Apenas leitura. Se usado em uma pasta, o usurio no conseguir listar o contedo, ou seja,
conseguir abrir os arquivos apenas caso indique o caminho completo.
5 (4+1): Ler e executar (no caso de um arquivo) ou ver os arquivos e abri-los, no caso de uma pasta.
6 (4+2): Leitura e gravao. Assim como no caso do "4", se usado em uma pasta faz com que o
usurio no consiga listar o contedo, apenas acessar os arquivos diretamente.
7 (4+2+1): Controle total.

Вам также может понравиться