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
|
|
|
|
| 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
|
|
|
|
| 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
|
|
|
|
| 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
|
|
|
|
| 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