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

Gestão de Usuários

O gerenciamento de usuários no Linux é um tema bem conhecido, mas, ao mesmo tempo,


fonte de várias dúvidas. Este é um mini-tutorial sobre o gerenciamento de usuários,
grupos e permissões de acesso via linha de comando, onde você pode tirar suas
dúvidas.
Como bem sabemos, o Linux é um sistema multiusuário, cujas raízes remetem aos
sistemas Unix. O sistema pode ser usado por inúmeros usuários 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 usuários podem
rodar aplicativos simultaneamente, via rede, através 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 usuário
diferente.
As restrições básicas de acesso são implementadas através de um sistema de
permissões simples, porém eficiente, que consiste num conjunto de três permissões
de acesso (ler, gravar e executar) e três grupos (dono, grupo e outros), que
combinadas permitem fazer muita coisa.
Os dois comandos mais básicos são o "adduser" e o "passwd", que permitem,
respectivamente adicionar novos usuários e alterar as senhas de acesso
posteriormente, como em:

# adduser joao
cria o usuário joao, especificando uma senha inicial

# passwd joao
altera a senha posteriormente

O próprio usuário pode alterar a senha usando o comando "passwd", desde que ele
saiba a senha antiga. Se o usuário 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 usuários são cadastrados no sistema através do arquivo "/etc/passwd". Se tiver
curiosidade em olhar dentro do arquivo você verá uma entrada para cada usuário,
incluindo o diretório home e o shell usado, como em:

joao:x:1001:1001:,,,:/home/joao:/bin/bash

Assim como qualquer outro arquivo de configuração, o "/etc/passwd" pode ser editado
manualmente, ou com a ajuda do comando "usermod". Existem diversas situações em
que você pode desejar trocar o shell padrão ou o diretório home do usuário, de
forma a limitar o acesso ao servidor. Em um servidor web compartilhado por muitos
usuários, por exemplo, o diretório home de cada usuário seria a pasta contendo os
arquivos do site, e o shell padrão seria um aplicativo como o MySecureShell,
destinado a limitar o acesso do usuário a esta pasta específica.

Para alterar o shell do usuário você usa o parâmetro "-s", como em:
# usermod -s /usr/bin/rssh manuel

Para alterar o home, você usa o parâmetro "-d", como em:


# usermod -d /var/www/manuel manuel

Você pode também especificar estes parâmetros diretamente ao criar o usuário,


como em:

# adduser --home /var/www/manuel --shell /usr/bin/rssh manuel


Bem antigamente, as senhas eram salvas no próprio arquivo "/etc/passwd", juntamente
com as demais informações, o que abria brecha para diversos tipos de ataques. A
partir de um certo ponto (por volta de 1996) todas as distribuições passaram a
utilizar o sistema shadow, onde as senhas são 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 são encriptadas usando um algoritmo de mão única, que permite apenas
encriptar as senhas, mas não recuperá-las. Durante o login, o sistema aplica o
mesmo algoritmo à senha digitada pelo usuário 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 não sejam recuperáveis, já que a senha
propriamente dita não é salva em lugar nenhum. Se o usuário esqueceu a senha, você
pode usar (como root) o comando "passwd" para definir uma nova, mas não é possível
recuperar a senha antiga.
Ferramentas como o John the ripper permitem descobrir as senhas armazenadas no
arquivo "/etc/shadow" usando um ataque de força bruta, que consiste em simplesmente
testar todas as possibilidades (incluindo alguns refinamentos, como descobrir
senhas fáceis, baseadas em palavras do dicionário) até descobrir a senha. Este
método funciona bem em senhas fáceis, com até 6 caracteres, mas é inviável no caso
de boas senhas, com 8 caracteres ou mais.
A senha referente ao usuário "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 usuário anteriormente criado, utilize o comando
"deluser", como em:
# deluser joao

Por questão de segurança, o comando remove apenas a conta, sem apagar o diretório
home, ou outras pastas (como o diretório de spool dos e-mails). O diretório home
é especialmente importante, pois ele guarda todas as configurações e os arquivos
do usuário, de forma que em um servidor você só deve removê-lo depois de ter
realmente certeza do que está fazendo. Para remover o usuário apagando também o
diretório home, adicione o parâmetro "--remove-home", como em:
# deluser joao --remove-home

Como comentei, o diretório home é importante, por concentrar todos os arquivos do


usuário. Uma opção saudável ao removê-lo é criar um backup, de forma que você
possa restaurá-lo mais tarde caso necessário. Para isso, use a opção "--backup",
que cria um arquivo compactado, contendo os arquivos do usuário, salvo no diretório
onde o comando for executado:

# deluser joao --remove-home --backup

Se executasse o comando "ls" depois de remover o usuário "joao" usando a opção de


backup, veria que foi criado o arquivo "joao.tar.bz2", referente ao backup.

Você também pode bloquear temporariamente um usuário, 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 utilitário gráfico de


administração de usuários. Uma versão levemente modificada dele pode ser encontrada
no Ubuntu e em outras versões baseadas no Debian, na forma do "users-admin", que
faz parte do pacote "gnome-system-tools".
Além da configuração dos usuários, temos a configuração dos grupos, que permitem
organizar os usuários, definindo as permissões de acesso de forma mais granular.
Imagine um caso em que você tenha um servidor compartilhado entre vários usuários,
onde apenas três deles, "maria", "jose" e "joao" devem ter acesso à pasta
"/var/www/intranet", que contém os arquivos do site interno da empresa.
Uma forma simples fazer isso é criar um grupo, adicionar os três usuários ao grupo
e ajustar as permissões da pasta de forma que o grupo tenha permissão de escrita.
Para adicionar o grupo, usamos o comando "groupadd", como em:
# groupadd intranet

Para adicionar os usuários desejados ao grupo, usamos o próprio comando "adduser",


seguido pelo login e o grupo ao qual ele deve ser adicionado (um de cada vez),
como em:

# adduser maria intranet


No Linux, as permissões são agrupadas em 3 atributos principais: leitura, gravação
e execução (no caso dos arquivos) ou listagem do conteúdo (no caso das pastas).
Eles são representados, respectivamente, pelas letras r, w e x.
As permissões são definidas de forma separada para o dono, o grupo (que inclui
todos os usuários incluídos nele) e para os outros ou seja, todos os demais
usuários do sistema. Em geral, o dono tem acesso completo, o grupo tem permissões
variáveis, de acordo com a função da pasta, e os demais podem apenas ler os
arquivos, sem alterar o conteúdo.

Se a pasta "/var/www/intranet" no nosso exemplo anterior foi criada pelo root,


as permissões de acesso (informadas pelo comando "ls -l") serão:

drwxr-xr-x 2 root root 4096 Jun 18 09:43 intranet

O primeiro "d" indica que se trata de um diretório. As três letras seguintes (rwx)
indicam as permissões de acesso para o dono da pasta, que no caso possui acesso
completo. Em seguida, temos as permissões de acesso para o grupo (r-x), cujos
integrantes podem listar o conteúdo da pasta (x) e podem ler os arquivos (r), sem
poderem alterar nada. As três últimas letras (r-x) indicam as permissões para os
demais usuários, que também podem apenas ler.
O "root root" indica o dono e o grupo ao qual pertence a pasta, no caso o root.
Ao cadastrar um usuário no sistema é sempre criado um grupo com o mesmo nome
(contendo apenas o próprio usuário), o que explica o fato da pasta pertencer ao
usuário "root" e também ao grupo "root". :)
Para que os usuários do grupo "intranet" possam alterar o conteúdo da pasta, o
primeiro passo é alterar as permissões, transferindo a posse do grupo "root" para
o grupo "intranet". Nesse caso não 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 alteração seja aplicada de forma recursiva,
afetando todos os arquivos e sub-pastas. Sem ele, a alteração seria aplicada
apenas à pasta propriamente dita, mas não ao seu conteúdo. Em seguida,
especificamos o novo dono e o novo grupo, separados por ":", seguido da pasta.
Com isso, as permissões serão alteradas para:

drwxr-xr-x 2 root intranet 4096 Jun 18 09:51 intranet

Falta agora alterar as permissões de acesso para o grupo, de forma que os usuários
possam finalmente escrever na pasta. Para isso, usamos o comando "chmod -R g+rw",
que especifica que o grupo (g) terá permissão de leitura e escrita (+rw):

# chmod -R g+rw /var/www/intranet

Se você quisesse fazer o oposto, ou seja, remover a permissão de escrita para o


grupo, usaria o "chmod -R g-w /var/www/intranet", se quisesse remover a
permissão de leitura para todos os demais usuários usaria o "chmod -R o-r" e, se
quisesse abrir as permissões para todo mundo, usaria o "chmod -R ugo+rwx".

Aqui vai uma pequena cola com os parâmetros:


-R : Recursivo, altera as permissões de todo o conteúdo da pasta, opcional.
u : Permissões para o dono da pasta (user).
g : Permissões para o grupo (group).
o : Permissões para os demais (others).

+ : Adiciona a permissão
- : Remove a permissão

r : Permissão de leitura
w : Permissão de escrita
x : No caso dos arquivos indica permissão de escrita e, no caso da pasta,
permissão para ver o conteúdo.
Você pode também especificar as permissões de acesso no formato clássico, onde
as permissões são representadas por três números, como em:

# chmod -R 775 /var/www/intranet

Nesse caso, os três números indicam, respectivamente, as permissões de acesso para


o dono, grupo e para os outros. Cada número representa a soma das permissões
desejadas, sendo que:
4 : Leitura
2 : Gravação
1 : Execução / listagem

Você simplesmente soma estes números para ter o número referente ao conjunto de
permissões que deseja:

0 : Sem permissão alguma. Acesso negado.


1 : Permissão apenas para executar (não é possível ler o arquivo ou alterá-lo,
apenas executar um programa) ou, no caso das pastas, permissão apenas para ver a
lista dos arquivos dentro da pasta, sem poder abrí-los.
4 : Apenas leitura. Se usado em uma pasta, o usuário não conseguirá listar o
conteúdo, 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 gravação. Assim como no caso do "4", se usado em uma pasta faz
com que o usuário não consiga listar o conteúdo, apenas acessar os arquivos
diretamente.
7 (4+2+1): Controle total.
italo:x:1001:1001:,,,:/home/ítalo:/bin/bash
Neste arquivo, cada campo é separado por :.

italo – Nome de Login do usuário


x – Indica que a senha do usuário está localizada no arquivo /etc/shadow
1001 – UID do usuário
1001 – GID do usuário
,,, – Informações do usuário, tais como Nome, Telefone. Observe que neste exemplo
essas informações não foram preenchidas.
/home/ítalo – Diretório HOME do usuário.
/bin/bash – Shell do usuário, ou seja, o programa que irá enterpretar os comandos
que o usuário executar.

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