Um guia para os iniciantes no mundo do FreeBSD
Configurando o accounting no FreeBSD.


    Um recurso pouco utilizado pelos usuarios iniciantes no FreeBSD é o accounting dos usuarios. Atraves do arquivo de configuração /etc/login.conf podemos definir varios parametros para a conta de um usuario, indo do numero do numero de conexoes simultaneas permitidas à quantidade de memoria disponivel para cada processo.
    Antes de iniciar o estudo do /etc/login.conf voce deve habilitar o sistema de accounting do seu servidor, para habilita-lo de forma permanente  basta adicionar a linha abaixo ao seu arquivo /etc/rc.conf:

accounting_enable="YES"

    Se voce perferir habilitar o accounting apenas temporariamente basta executar o comando abaixo:

accton /var/account/acct

    Agora que voçê ja habilitou o sistema de accounting podemos iniciar o estudo do /etc/login.conf, vamos iniciar vendo o tipo de dados que uma categoria pode assumir.
    Uma categoria pode assumir os valores do tipo:

Arquivo - Caminho completo e nome de um arquivo de dados
Programa - Caminho completo e nome de um arquivo executavel
Lista - Lista de valores separados por virgula (,) ou espaço em branco
Numero - Valor numerico, podendo ser decimal, hexadecimal ou octal.
Tamanho - Um numero que expressa tamanho em bytes, o valor em bytes pode variar de acordo com o sufixo usado, por ex: 1k = 1024 bytes ; 1m = 1028576 bytes; 1g = 1000m; 1t = 1000g
Tempo - Periodo de tempo, por default em segundos, mas o valor se altera de acordo com o sufixo usado, por ex: 3600s = 60m = 1h
String - Conjunto de caracteres e numeros
Bool - False ou True
    Limitando recursos do sistema
Nome
Tipo
Descrição
cputime Tempo Limita o uso de CPU
filesize Tamanho Limita o tamanho maximo de um arquivo
datasize Tamanho Limita o tamanho maximo de um arquivo de dados
stacksize Tamanho Limita o tamanho maximo do stack
coredumpsize Tamanho Limita o tamanho maximo de um coredump
memoryuse Tamanho Limita a quantidade de memoria que pode ser alocada
memorylocked Tamanho Limita a quantidade de memoria que pode ser lockada
maxprocs Numero Limita o numero maximo de processos
opnfiles Numero Limita o numero maximo de arquivos abertos
sbsize Tamanho Limita o tamanho maximo permitido para o socketbuffer
    Definindo Variaveis de ambiente
Nome
Tipo
Descrição
charset String Seta a variavel de ambiente $MM_CHARSET para o valor especificado
hushlogin Bool O mesmo que possuir o arquivo .hushlogin, default false
ignorenologin Bool O login nao é negado pela definiçao do nologin, default false
lang String Seta a variavel de ambiente $LANG para o valor especificado
manpath Path Especifica o path default das manpages
nologin Arquivo Se este arquivo existe ele sera exibido e em seguida a sessão sera encerrada
path Path Especifica o path default para os arquivos executaveis
priority Numero Define o nivel inicial de prioridade de um processo (nice)
requirehome Bool Recusa o login caso o home directory nao seja valido, default false
setenv Lista Lista de variaveis de ambiente e os valores que devem ser setados, separadas por virgulas
shell Programa Executa esse shell preferencialmente ao especificado no /etc/passwd
term String Define o tipo de terminal default (vt100, vt220, xterm, console, etc)
timezone String Define o valor default da variavel $TZ
umask Numero Define o umask padrao, default 022, ou seja arquivos com permissao 755
welcome Arquivo Arquivo contendo a mensagem de boas vindas
    Definindo os criterios de autenticação
Nome
Tipo
Descrição
minpasswordlen Numero Tamanho minimo do password, default 6
passwd_format String Tipo de criptografia utilizada, default md5 
mixpasswordcase Bool Alarma se um o usuario caso ele escolha um password contendo apenas letras minusculas
copyright Arquivo Arquivo contendo informações adicionais de copyright
host.allow Lista Lista os hosts apartir dos quais o usuario pode se conectar
hosts.deny Lista Lista os hosts apartir dos quais o usuario nao pode se conectar
times.allow Lista Lista os periodos durante os quais os logins sao permitidos, por ex: MoThSa0200-1300 permite que os usuarios acessem de segunda, terça e sabado das 02:00 as 13:00
times.deny Lista Lista os periodos durante os quais os logins nao sao permitidos
ttys.allow Lista Lista os ttys e ttysgroups, nos quais os usuarios da classe podem acessar
ttys.deny Lista Lista os ttys e ttysgroups, nos quais os usuarios da classe nao podem logar

    Definindo os criterios de accounting
 

Nome
Tipo
Descrição
accounted Bool Habilita o accounting de tempo para todos os usuarios da classe, default false
autodelete Tempo Define quanto depois de expirada uma conta será auto deletada
bootfull Bool Habilita o boot apenas se o ttygroup estiver full
daytime Tempo Define o tempo maximo de login permitido por dia
expireperiod Tempo Define o tempo para expirar a alocaçao
graceexpire Tempo Dias adicionais para contas expiradas
gracetime Tempo Tempo adicional para contas expiradas
host.accounted Lista Lista de hosts remotos apartir dos quais os usuarios da classe passarão pelo accounting
host.exempt Lista Lista de hosts remotos apartir dos quais os usuarios da classe não passarão pelo accounting
idletime Tempo Tempo maximo de inatividade para o auto logout
monthtime Tempo Define o tempo maximo de login permitido por mes
passwordtime Tempo Define o perido de expiração dos passwords
sessiontime Tempo Define o tempo maximo de login permitido por sessao
sessionlimit Numero Define o numero maximo de logins simultaneos
ttys.accounted Lista Lista os ttys e ttysgroups nos quais o accounting está ativo
ttys.exempt Lista Lista os ttys e ttysgroups nos quais o accounting não está ativo
warnexpire Tempo Define apartir de quanto tempo para a expiraçao da conta que o usuario ira ser avisado
warnpassword Tempo Define apartir de quanto tempo para a expiraçao do password que o usuario ira ser avisado
warntime Tempo Define apartir de quanto tempo para a expiraçao da sessao atual que o usuario ira ser avisado
weektime Tempo Define o tempo maximo de login permitido por semana
    Um arquivo /etc/login.conf pode ser visto abaixo, acredito que apos as descrições acima sera facil identificar qual a funçaod e cada linha:
default:\
       :cputime=infinity:\
       :atasize-cur=22M:\
       :stacksize-cur=8M:\
       :memorylocked-cur=10M:\
       :memoryuse-cur=30M:\
       :filesize=infinity:\
       :coredumpsize=infinity:\
       :maxproc-cur=64:\
       :openfiles-cur=64:\
       :priority=0:\
       :requirehome@:\
       :umask=022:
       
standard:\
       :copyright=/etc/COPYRIGHT:\
       :welcome=/etc/motd:\
       :setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\
       :path=~/bin /bin /usr/bin /usr/local/bin:\
       :manpath=/usr/share/man /usr/local/man:\
       :nologin=/var/run/nologin:\
       :cputime=1h30m:\
       :datasize=8M:\
       :stacksize=2M:\
       :memorylocked=4M:\
       :memoryuse=8M:\
       :filesize=8M:\
       :coredumpsize=8M:\
       :openfiles=24:\
       :maxproc=32:\
       :priority=0:\
       :requirehome:\
       :passwordtime=90d:\
       :umask=002:\
       :ignoretime@:\
       :tc=default:

subscriber|Subscribers:\ 
       :accounted:\
       :autodelete=30d:\
       :expireperiod=180d:\
       :graceexpire=1d:\
       :gracetime=1h:\
       :warnexpire=7d:\
       :warnpassword=7d:\
       :idletime=25m:\
       :sessiontime=1h:\
       :daytime=2h:\
       :weektime=12h:\
       :monthtime=48h:\
       :warntime=1m:
    Após editar o /etc/login.conf e criar/alterar a classe desejada voce precisa executar o comando abaixo para que as alterações se torne efetivas:

    # cap_mkdb /etc/login.conf

    Bom era isso, espero que esse etxto tenha sido util :-)
    []´s  Edson



Se você possui alguma critica , duvida ou sugestão ,entre em contato pelo e-mail: edson.brandi@uol.com.br