FreeBSD

28 de julho de 2016

Classe de login no FreeBSD

Mais artigos de »
Escrito por: Leonardo Souza
Tags:

Classe de login no FreeBSD

Existem várias formas de um administrador do sistema limitar a quantidade de recursos que um usuário poderá utilizar no FreeBSD. Esse tipo de configuração é fundamental para manter um sistema disponível e seus recursos devidamente partilhados. Um exemplo disso são as contas de disco, já explicadas neste artigo. Veremos neste artigo como limitar recursos aos usuários por meio da classe de login.

Dessa forma, é possível limitar recursos como uso do CPU, quantidade de memória, quantidade máxima de processos, etc. Todas as configurações podem ser feitas, de forma simples, por meio de um arquivo, o /etc/login.conf ou através do utilitário rctl, disponível a partir da versão do FreeBSD 9.0-RELEASE.

Todas as contas de usuários do sistema possuem um campo que especifica a classe de login que o usuário pertence. Sendo assim, depois de criar as classes, basta editar a conta de usuário com o comando chpass e alterar este campo. Veja abaixo um exemplo.




user-classes

Neste exemplo, o usuário “leo” não possui nenhuma classe configurada, quando isso acontece o sistema entende que o usuário está utilizando a classe default, padrão do sistema. Veja na imagem abaixo o modelo da classe default do sistema:

classe-default

Esta é uma parte do arquivo /etc/login.conf que apresenta uma parte da classe default do FreeBSD 10.3. Podemos ver, entre outras coisas, que os usuários que fazem parte desta classe possuem liberdade para utilizar CPU do computador de forma ilimitada, possuem sua mensagem de boas vindas no arquivo /etc/motd, podem usar a memoria de forma ilimitada, etc.

Iremos mais adiante analisar estas opções.

Configurando Classe de Login

O método tradicional de configuração é por meio da edição do arquivo /etc/login.conf. Neste método cada conta de usuário pode ser atribuído a uma classe de login, onde default é a classe padrão. Cada classe de login possui propriedades de login associados, estas propriedades podem ser definidas no modelo nome=valor, onde nome é o identificador conhecido e valor é a atribuição deste nome.

Importante: todas as vezes que o arquivo /etc/login.conf for editado, o /etc/login.db precisa ser atualizado. Este procedimento pode ser feito com o seguinte comando.

# cap_mkdb /etc/login.conf

Existem basicamente dois tipos diferentes de limites de recursos: limite suave (atual) e o limite árduo. O limite suave pode ser definido tanto pelo usuário quanto pela aplicação, porém nunca deve ultrapassar o limite árduo. Por outro lado, o limite árduo pode ter seu valor diminuído ou revogado, porém nunca pode ser aumentado.

Na tabela abaixo temos as principais opções possíveis em uma classe do arquivo /etc/login.conf.

Classe de Login

Configurando classe de login

Vamos utilizar o recurso de classes de logins, para que esta tarefa seja bem sucedida precisamos obedecer alguns passos:

1 – criar a classe de login ou alterar uma já existente;

2 – atualizar o banco de dados /etc/login.db;

3 – editar a conta do usuário e inserir a classe, caso tenha criado uma nova;

4 – realizar o reboot do sistema.

Vamos criar uma nova classe de login chamada “teste” e realizar basicamente duas alterações: modificar o arquivo que contem a mensagem de boas vindas e limitar a quantidade de processos que o usuário consegue abrir simultaneamente, por meio da cláusula maxproc .

Por padrão, sempre que um usuário realiza o login no sistema, é apresentada uma mensagem de boas vindas. Esta mensagem está presente no arquivo /etc/motd, como pode ser visto na imagem que mostra a classe de login padrão. Vamos alterar esta cláusula, indicando que a mensagem de boas vindas será informada no arquivo /etc/bemvindo, logo depois vamos criar uma mensagem neste arquivo.

Criar classe de login

Para criar uma classe de login acesse o arquivo /etc/login.conf utilizando o editor de texto “ee”.

# ee /etc/login.conf

Adicione as linhas abaixo no arquivo.

classe_nova

Neste exemplo, criamos a classe de login chamada “teste” e inserimos nela duas cláusulas: maxproc, que indica o máximo de processos que o usuário pode abrir simultaneamente, e a welcome, que especifica o arquivo que contem a mensagem de boas vindas.

Dessa forma já criamos a classe com as limitações que desejamos atribuir ao usuário. Vamos agora atualizar o banco de dados.

Atualizando o banco de classe de login

Como explicado anteriormente, todas as vezes que o arquivo /etc/login.conf for alterado, é necessário atualizar seu banco de dados.

Para isso digite o comando:

# cap_mkdb /etc/login.conf

atualizando_db

Alterar cadastro de usuário

Agora vamos criar o arquivo /etc/bemvindo e inserir nele a mensagem abaixo, ou qualquer outra que desejar. Para criar o arquivo novamente usaremos o editor “ee”.

# ee /etc/bemvindo

bem-vindo

Se o arquivo existir será aberto, caso contrário o arquivo será criado. Mensagem digitada, agora vamos salvar o arquivo.

Agora vamos alterar o cadastro do usuário e inserir a classe criada para ele. Para isso digite o comando chpass seguido do nome do usuário, conforme foi explicado no nosso artigo sobre administração de usuários.

# chpass leo

classe1

Pronto, agora o banco está devidamente atualizado e o arquivo criado. Precisamos apenas reiniciar o sistema.

Vamos agora realizar o login com o usuário alterado.

Testando as limitações de classe de login

De acordo com as configurações criadas, ao realizar o login o sistema vai identificar que este usuário faz parte da classe de login chamada teste e logo depois vai apresentar a tela de boas vindas configuradas nesta classe de login.

Sendo assim, vamos realizar o login no sistema.

login

Perceba que a mensagem de boas vindas que foi apresentada foi a imagem que criamos no arquivo /etc/bemvindo, ou seja, a especificada na classe de login teste.

Outra configuração realizada foi limitar a quantidade de processos que o usuário pode abrir. Dessa forma, ao iniciar o sistema alguns processos obrigatórios são iniciados com as permissões do usuário. Isso significa que já existem processos abertos e se o usuário tentar abrir um novo não conseguirá.

Para testar esta configuração vamos tentar um processo, por exemplo, abrindo o arquivo /etc/bemvindo.

processo-negado

Perceba que foi apresentada uma mensagem informando o usuário que o recurso não está disponível.






Sobre o Autor

Leonardo Souza
Bacharel em Informática, pós graduado em Segurança de Redes de Computadores e analista de Segurança da Informação. Entusiasta de Segurança da Informação e usuário FreeBSD, porém sem xiismo.




0 Comments


Seja o Primeiro a Comentar!


You must be logged in to post a comment.