quinta-feira, 25 de outubro de 2018

Adjust Daylight Saving Time - Red Hat/CentOS

Adjust Daylight Saving Time - Red Hat/CentOS - Create the file in anywhere:
 # vi Sao_Paulo.zic 
 

Rule    BrazilSP  2018    only    -       Nov     04      0:00    1:00    S
Rule    BrazilSP  2019    only    -       Feb     17      0:00    0       -

# Zone  NAME                    GMTOFF  RULES/SAVE      FORMAT  [UNTIL]
Zone    America/Sao_Paulo       -3:00   BrazilSP        BR%sT

 # zic  Sao_Paulo.zic 
- Check out if the daylight time interval changed in the timezone:
 # zdump -v /usr/share/zoneinfo/America/Sao_Paulo | grep 2018 
- Create a link symbolic
 # ln -sf /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime 
 # env | grep TZ 
- Type the timezone to be used:
 # vi /etc/profile 
 # export TZ=America/Sao_Paulo 
 # source /etc/profile 
Done!! Check if the Daylight is being displayed right!!

domingo, 26 de agosto de 2018

Not found ifconfig in CentOS?

Don't worry, if you have installed your CentOS/RedHat using minimal mode. The OS comes lightly without some of well-known binaries. Following how to install some of these necessary admin programs via yum:

1 - ifconfig:

# yum install net-tools

2 - killall:

yum install psmisc

3 - snmpwalk:

yum install net-snmp-utils

terça-feira, 18 de fevereiro de 2014

Sessão Fix: MISCONFIGURATION

MISCONFIGURATIONkernel rp_filter settings, reverse path filtering
Sistema utilizadoRed Hat Enterprise Linux Server release 5.10 (Tikanga)

SINTOMA: 

Configuramos o servidor para ser um banco de dados Oracle, esse server ficava durante um tempo, tipo 1 dia, funcionando normalmente mas de repente o mesmo parava de responder a qualquer tipo de conexão vindo de determinadas máquinas, simplesmente os pacotes chegavam no servidor, em sua interface de rede, e o mesmo não respondia não importando o tipo de conexão vindas de determinadas máquinas. O firewall deste servidor assim como SELinux estavam desativados e não existia também nenhum filtro no caminho entre os servidores envolvidos nessa comunicação.

PROBLEMA:

O esquema de segurança contra ataque tipo Spoofing é assegurado por um parâmetro de Kernel rp_filter settings no Red Hat e esse parâmetro  foi ajustado incorretamente. A versão 5 do Red Hat admite somente dois valores para esse parâmetro(0 ou 1), já  a versão 6 do Red hat admite 3 valores(0,1 e 2).

No Red Hat 5:

rp_filter - BOOLEAN
        1 - Faz a validação da origem usando o caminho reverso, como especificado no RFC1812. Opção recomendada para servidores e roteadores de rede. Poderá causar problemas para redes complexas rodando um protocolo não confiável e lento(tipo RIP) ou que usa rotas estáticas.

         0 - Sem validação de origem.

        conf/all/rp_filter deve ser também configurado para TRUE para fazer a validação de origem na interface.

 Valor padrão é 0. Observe que algumas distribuições habilitam essa opção nos scripts de inicialização.

No Red Hat 6:

rp_filter - INTEGER
        0 - Sem validação de origem.

        1 - Modo rígido como definido na RFC3704. Cada pacote que chega é testado contra a FIB(Forwarding Information Base, encontra a interface apropriada para a qual a interface de entrada deverá encaminhar um pacote) e se a interface não é o melhor caminho reverso o check do pacote falhará. Por padrão pacotes que falharam são descartados.
   
        2 - Modo folgado como definido na RFC3704 cada endereço de origem do pacote que chega é também testado contra a FIB e se o endereço de origem não é alcançável via qualquer interface o check do pacote falhará.

SOLUÇÃO:

Se este problema de comunicação estiver acontecendo em seu servidor devemos primeiramente habilitar o log de martians packet:

echo 1 > /proc/sys/net/ipv4/conf/eth0/log_martians

sysctl -w net.ipv4.conf.default.log_martians=1

sysctl -p

Check os logs no dmesg:

dmesg | grep -i martian

Algo do tipo "martian source 169.254.179.40 from 169.254.179.43, on dev eth0" irá aparecer no seu log.

O nosso problema foi que configuramos o parâmetro rp_filter no arquivo /etc/sysctl.conf na versão 5 do Red Hat com o valor 2(Sendo que essa versão só aceita dois valores 0 ou 1):

net.ipv4.conf.default.rp_filter = 2


Modificamos o parâmetro para o valor certo em dois parâmetros e o sistema parou de logar martian packet e derrubar as conexões legitimas vindas outros servidores da nossa rede:

net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1


quinta-feira, 27 de junho de 2013

Localizar arquivos ou diretórios grandes ocupando a partição /

Uma forma simples para pesquisar arquivos que possivelmente esteja ocupando espaço na sua partição, usamos os seguintes e simples comandos: 1 - Acessar a partição que deseja pesquisar quem são os maiores arquivos:
# cd /
2 - Listar e filtrar por arquivos ou diretórios que o tamanho esteja em gigabyte(G):
# du -h | awk '{print $1}'|grep G
5.1G
6.0G
6.0G
1.8G
2.0G
8.4G
1.4G
2.8G
2.9G
3.2G
6.4G
3 - Com uma das linhas do resultado acima, que informa os diretórios ou arquivos que possuem tamanho em giga, execute o seguinte comando para saber qual o diretório ou arquivo, por exemplo:
# du -h | grep 8.4G
8.4G    ./var
4 - Podemos realizar esse mesmo procedimento entrando na partição /var e depois executar os passos 2 e 3 afim de refinar mais ainda a nossa pesquisa para encontrar o diretório ou arquivo que esteja ocupando muito espaço em nossa partição.

sexta-feira, 21 de dezembro de 2012

Script deletar e-mails da fila do Qmail

Quando uma conta de e-mail de seu domínio esta sendo utilizada para enviar spam para internet(provavelmente por que esteja com uma senha frágil) será necessário deletar os e-mails que estão na fila para serem enviados. Você identificará isso quando ver que sua fila de e-mails está muito grande e que existe uma conta sendo a responsável pelo envio dessa massa de e-mails. 1 - Para visualizar a sua fila de e-mails no Qmail utilize o comando:
# qmailctl queue
2 - As vezes o mailfrom pode ser um e-mail que não pertença ao seu domínio, os spammers nesse caso somente utilizam a conta de algum usuário do seu servidor de e-mail para realizar o login e ter permissão para enviar os spam e ai trocam o mailfrom que aparece quando você manda listar a fila. Para identificar a conta do usuário que está sendo utilizada procure nos logs do smtpd faço um filtro usando o mailfrom que aparece lá na fila. 3 - O script abaixo deletar e-mails da fila com base no mailfrom que aparece lá na fila. Então para utiliza-lo você deverá parar o serviço Qmail e então executar o script informando o mailfrom que está enviando a massa de e-mails. OBS.: Não esqueça, logicamente, de redefinir a senha da conta que estava sendo utilizada para enviar spam.
###############################################################
# Deletar spam de acordo com remetente local
# Por Leonardo Couto Conrado
# Em 16.11.2012
###############################################################
#!/bin/sh

path=/var/qmail/queue
cmdFind=/usr/bin/find
cmdQmailCtl=/usr/local/bin/qmailctl
cmdGrep=/bin/grep
cmdEcho=/bin/echo
cmdLs=/bin/ls
cmdRm=/bin/rm
cmdAwk=/bin/awk

$cmdEcho -n "Informe o e-mail que esta sendo usado para enviar spam: "; read emailUsedAsSpammer


$cmdEcho "O servico do Qmail ja esta parado e o e-mail usado como spam e $emailUsedAsSpammer? yes, no ou quit?"
read opt
case $opt in
"quit")
        $cmdEcho "Saindo..."
        exit
        ;;
"yes")
        $cmdEcho "Entrando em processo de exclusao de e-mails..."
        for i in $( $cmdQmailCtl queue | $cmdGrep $emailUsedAsSpammer |$cmdAwk -F '#' '{ print $2 }' | $cmdAwk '{ print $1 }' ); do
        $cmdFind $path -name $i -exec $cmdRm -rf {} \;
        $cmdEcho "Vai ser deletado= " $i
        done
        ;;

"no")
        $cmdEcho "Você deve parar o servico do qmail antes de deletar mensagens na fila e ter certeza do e-mail que esta sendo usado como spam."
        exit
        ;;

*)
        $cmdEcho "O servico do Qmail ja esta parado e o e-mail usado como spam e $emailUsedAsSpammer? yes, no ou quit?"
        ;;
esac

segunda-feira, 30 de janeiro de 2012

Parque tecnológico da Bahia

A Bahia está muito perto de ter seu primeiro Parque Tecnológico. 
Este empreendimento surge para abrigar empresas de base tecnológica, centros de pesquisas, universidades e incubadoras de empresas.

Com alto padrão urbanístico, o empreendimento tem um cuidadoso tratamento paisagístico, preservando parte da cobertura da Mata Atlântica e do seu relevo. Localizado na Avenida Paralela, principal eixo de expansão urbana de Salvador, o Parque Tecnológico da Bahia está próximo ao aeroporto de Salvador, centros de tecnologia, instituições de ensino e conta com conexão de fibra ótica.

O Estado da Bahia dispõe de recursos para apoiar empresas inovadoras que se instalem no parque. São 581.000 m² de área, destinados à geração de conhecimento e de negócios de alto valor agregado.


Entenda como vai funcionar:
http://saudeweb.com.br/video/entenda-como-vai-funcionar-o-parque-tecnologico-da-bahia/

Fonte:
http://www.secti.ba.gov.br/parquetecnologico/

sexta-feira, 20 de janeiro de 2012

Plugin do Nagios para verificar a fila de e-mails do servidor Qmail

OBS.: O plugin é executado através do NRPE na máquina remota, logo, o script deve ser colocado junto aos outros plugins do nagios na máquina cliente, ou seja, no servidor Qmail e não no servidor Nagios.

Este script ajudará a identificar um possível ataque ao seu servidor de e-mails. Onde uma conta de e-mail do seu dominio provavelmente com uma senha frágil esteja sendo utilizada para enviar uma grande massa de e-mails (SPAM) com destino a endereços e-mails da internet, logo, isso acarretará em uma grande quantidade em excesso de mensagens na fila de envio do seu servidor Qmail atrasando o envio de e-mails verdadeiros. O script checará sempre essa quantidade de mensagens na fila e retornará a saída para o Nagios.

 Copie o script abaixo, que irá checar a fila de e-mails, para o diretório de plugins do Nagios no seu servidor Qmail:

# vi /usr/local/nagios/libexec/check_qmail_queue
############################################################### 
# Script checar fila de e-mails do Qmail 
# Por Leonardo Couto Conrado 
# Em 20.01.2012
############################################################### 
#!/bin/sh

OK=0
WARNING=1
CRITICAL=2
UNKNOWN=3

criticalMsgsInQueue=90
warningMsgsInQueue=80

mailQueue=$(/usr/local/bin/qmailctl queue | grep "messages in queue:" | awk -F ":" '{print $2}')

if [ $mailQueue -gt $criticalMsgsInQueue ]; then
        echo "NÚMERO DE MENSAGENS NA FILA ULTRAPASSOU O LIMITE DE CRITICAL, $mailQueue MSGS NA FILA!"
        exit $CRITICAL
fi


if [ $mailQueue -gt $warningMsgsInQueue ]; then
        echo "NÚMERO DE MENSAGENS NA FILA ULTRAPASSOU O LIMITE DE WARNING, $mailQueue MSGS NA FILA!!"
        exit $WARNING

        else
                echo "NÚMERO DE MENSAGENS NA FILA ESTÁ OK, IGUAL A $mailQueue MSGS NA FILA."
                exit $OK
fi

exit $UNKNOWN

# chmod +x /usr/local/nagios/libexec/check_qmail_queue


Para ativar o check, devemos inserir o comando e o serviço no servidor do Nagios. Segue procedimento para ser executado no Nagios:

1 - Crie o comando no arquivo commands.cfg (No ambiente usado para esse "how to" o arquivo encontra-se em /usr/local/nagios/etc/objects/commands/commands.cfg no servidor Nagios:

vi /usr/local/nagios/etc/objects/commands/commands.cfg
#'check_nrpe_qmail_queue' command definition
define command{
        command_name    check_nrpe_qmail_queue
        command_line    $USER2$/check_nrpe -H $HOSTADDRESS$ -c check_msgs_qmail_queue
        }

2 - Crie o serviço para o servidor Qmail:

vi /usr/local/nagios/etc/objects/services/linux-services.cfg
define service{
        use                             non-critical-services         ; Name of service template to use
        host_name                       SRVLMSSAMAIL01
        service_description             EMAILS IN QUEUE
        check_command                   check_nrpe_qmail_queue
      }

3 - Configure o check no NRPE no servidor Qmail:


vi /usr/local/nagios/etc/nrpe.cfg

command[check_msgs_qmail_queue]=/usr/local/nagios/libexec/check_qmail_queue


4 - Reinicie o serviço do Nagios no servidor Nagios e o serviço do NRPE no servidor de e-mail Qmail.

quarta-feira, 11 de janeiro de 2012

Script para atualizar periodicamente blacklists selecionadas do squidGuard


O script abaixo irá baixar os arquivos tar.gz de blacklist dos sites squidguard.mesd.k12.or.us e www.shallalist.de, após isso ele irá descompactar os arquivos e copiar as pastas de blacklists, que estejam listados por você nos arquivos bls_mesd.txt e bls_shalla.txt, para o diretório de blacklists do squidGuard, após isso mudará o dono dos diretórios de blacklists do squidGuard para o usuário squid e por ultimo ele irá recompilar as blacklists transformando-as em arquivo de banco de dados para o squidGuard. O conteúdo da pasta utlizada para baixar e descompactar os tar.gz será limpa no final do processo.

-> PARA AGENDAR A EXECUÇÃO DO SCRIPT UTILIZE O crontab. 


#!/bin/bash
############################################################### 
# Atualizando blacklists selecionadas para o squidGuard
# Por Leonardo Couto Conrado 
# Em 11/01/2012 
############################################################### 
# README:
# Crie o diretorio da variavel dirWork
# Crie o arquivo de log da variavel logUpBlackLists
# Crie o arquivo /usr/local/upblacklists/bls_mesd.txt ele deverá conter as blacklists desejadas da mesd squidguard.mesd.k12.or.us para serem copiadas para as blacklists do squidGuard
# Crie o arquivo /usr/local/upblacklists/bls_shalla.txt ele deverá conter as blacklists desejadas da shalla www.shallalist.de para serem copiadas para as blacklists do squidGuard

clockNow=$(date +%d.%m.%Y-%H:%M)
dirBlackListSquidGuard=/usr/local/squidGuard/db/blacklists/
dirWork=/usr/local/upblacklists/work/
dirUpBlackLists=/usr/local/upblacklists/
squidGuardCreateDBs="/usr/local/squidGuard/bin/squidGuard -C all"
 
urlListMesd=http://squidguard.mesd.k12.or.us/blacklists.tgz
urlListShalla=http://www.shallalist.de/Downloads/shallalist.tar.gz
fileTgzMesd=blacklists.tgz
fileTgzShalla=shallalist.tar.gz
fileBlacklistsMesd=blacklists/
fileBlacklistsShalla=BL/
 
logUpBlackLists=/var/log/updatebacklists.log
 
numBlsMesd=$(cat $dirUpBlackLists"bls_mesd.txt" | wc -l)
numBlsShalla=$(cat $dirUpBlackLists"bls_shalla.txt" | wc -l)
 
counter=1
 
# INICIO
 
cd $dirWork
 
wget -c $urlListMesd
wget -c $urlListShalla
 
if [ $? = 0 ]; then
        tar -xzf $dirWork$fileTgzMesd
        tar -xzf $dirWork$fileTgzShalla
 
        cd $dirWork$fileBlacklistsMesd
              echo $clockNow  " - ANDAMENTO COPIA DAS BLS DA MESD: " >> $logUpBlackLists
                while [ $counter -le $numBlsMesd ]; do
                        blMesd=$(cat $dirUpBlackLists"bls_mesd.txt" | awk -v VAR=$counter 'NR == VAR {print $0}')
                        /bin/cp -fv $dirWork$fileBlacklistsMesd$blMesd/domains $dirBlackListSquidGuard$blMesd >> $logUpBlackLists
                        /bin/cp -fv $dirWork$fileBlacklistsMesd$blMesd/urls $dirBlackListSquidGuard$blMesd >> $logUpBlackLists
                        let counter=counter+1
                done
       counter=1
 
        cd $dirWork$fileBlacklistsShalla
                echo $clockNow  " - ANDAMENTO COPIA DAS BLS DA SHALA: " >> $logUpBlackLists
                while [ $counter -le $numBlsShalla ]; do
                        blShalla=$(cat $dirUpBlackLists"bls_shalla.txt" | awk -v VAR=$counter 'NR == VAR {print $0}')
                        /bin/cp -fv $dirWork$fileBlacklistsShalla$blShalla/domains $dirBlackListSquidGuard$blShalla >> $logUpBlackLists
                        /bin/cp -fv $dirWork$fileBlacklistsShalla$blShalla/urls $dirBlackListSquidGuard$blShalla >> $logUpBlackLists
                        let counter=counter+1
                done
      
       echo $clockNow  " - ANDAMENTO DAS PERMISSOES PARA SQUID NAS BLS DO SQUIDGUARD: " >> $logUpBlackLists
        chown squid -R -v $dirBlackListSquidGuard >> $logUpBlackLists
      
       echo $clockNow  " - RECOMPILANDO AS DBS DO SQUIDGUARD: " >> $logUpBlackLists
       echo `$squidGuardCreateDBs` >> $logUpBlackLists
 
       echo $clockNow  " - LIMPANDO DIRETORIO WORKS: " >> $logUpBlackLists
        cd $dirWork && rm -rf ./
else
   echo $clockNow ' - FALHOU DOWNLOAD DE UMA DAS BLS: ' >> $logUpBlackLists
 
fi
 
exit 0
 



terça-feira, 10 de janeiro de 2012

Sessão Fix BUG



BUG: NFS mount: failed, reason given by server: Permission denied
Versão NFS utilizada: nfs-utils-1.0.9-50.el5 e nfs-utils-lib-1.0.8-7.6.el5
Sistema utilizado: Red Hat Enterprise Linux Server release 5.3 Beta (Tikanga)

SINTOMA: 

Ao tentar mapear um diretório remoto via NFS no cliente aonde o mesmo possui as devidas permissões para acesso ao diretório no server é apresentada uma mensagem de erro informando:

mount: failed, reason given by server: Permission denied.


PROBLEMA:


Durante a inicialização do cliente o filesystem  que controla o NFSD  não é montado.


SOLUÇÃO:


É necessário montar manualmente o filesystem especial nfsd.

Adicione no arquivo /etc/fstab:

# vi /etc/fstab


#########################################

# FIX - BUG 692968 PERMISSION DENIED NFS

#########################################

none                    /proc/fs/nfsd   nfsd     defaults 0 0


Reler o arquivo /etc/fstab

# mount -a

Agora tente mapear novamente o diretório remoto.

REFERÊNCIA:


https://bugzilla.redhat.com/show_bug.cgi?id=264661
http://juljas.net/lpt/post/nfs-permission-denied#comment-118

sábado, 7 de janeiro de 2012

Instalando NRPE no SlackWare

Utilizado os seguintes pacotes do NRPE e Nagios Plugins para serem instalados no Slackware 13.37.0 Kernel 2.6.37.6-smp:

nagios-plugins-1.4.15 http://www.nagios.org/download/plugins
nrpe-2.13 http://sourceforge.net/projects/nagios/files/

Vamos para a instalação:

Descompactando, ajustando, compilando e instalando o nagios plugins:
# tar -xzf nagios-plugins-1.4.15.tar.gz

# cd nagios-plugins-1.4.15>

# ./configure --prefix=/usr/local/nagios

# make

# make install



Adicione manualmente o user e group nagios, caso a instalação não tenha criados:
# adduser nagios

# groupadd nagios

# usermod -G nagios nagios




Descompactando, ajustando, compilando e instalando o NRPE:
# tar -xzf nrpe-2.13.tar.gz

# cd nrpe-2.13/

# ./configure

# make all

# make install


Permissão de proprietário e grupo proprietário nagios no diretório abaixo:
#chown nagios.nagios /usr/local/nagios


Finalizando a instalação do pacote NRPE:
# make install-plugin

# make install-daemon

# make install-daemon-config



Permissão de proprietário e grupo proprietário nagios no diretório abaixo:
# chown -R nagios.nagios /usr/local/nagios/libexec


# vi /etc/services

nrpe 5666/tcp # NRPE


Adicionando o daemon NRPE para ser controlado pelo inetd (tcp wrapper) do Linux:
# vi /etc/inetd.conf

nrpe    stream  tcp     nowait  nagios /usr/sbin/tcpd /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -i


Editar /usr/local/nagios/etc/nrpe.cfg e dar as permissões de quem pode se conectar a esse host:
EXEMPLO:
# vi /usr/local/nagios/etc/nrpe.cfg

allowed_hosts=127.0.0.1,192.168.9.144,192.168.1.69


Especificar também os serviços serão checados na máquina local:
EXEMPLO:
# vi /usr/local/nagios/etc/nrpe.cfg




command[check_proc_qmail_supervise_pop3d]=/usr/local/nagios/libexec/check_procs -w 1:1 -c 1:1 -a "supervise qmail-pop3d"

command[check_proc_qmail_supervise_smtpd]=/usr/local/nagios/libexec/check_procs -w 1:1 -c 1:1 -a "supervise qmail-smtpd"

command[check_proc_qmail_supervise_imapd]=/usr/local/nagios/libexec/check_procs -w 1:1 -c 1:1 -a "supervise qmail-imapd"

command[check_proc_qmail_supervise_qmqpd]=/usr/local/nagios/libexec/check_procs -w 1:1 -c 1:1 -a "supervise qmail-qmqpd"

command[check_proc_qmail_supervise_send]=/usr/local/nagios/libexec/check_procs -w 1:1 -c 1:1 -a "supervise qmail-send"



A maioria dos checks feitos na máquina local exigem privilégios de root, como o daemon NRPE é inicializado com o usuário nagios muitos checks terão saídas negadas pelo SO então utilizar o sudo como  solução de contorno liberando o usuários nagios a executar comandos especificados como root. Para isso:

1 - Editar /usr/local/nagios/etc/nrpe.cfg e tirar o comentário da seguinte linha no arquivo, habilitando o uso do sudo pelo NRPE:
# vi /usr/local/nagios/etc/nrpe.cfg

command_prefix=/usr/bin/sudo



2 - Editar /etc/sudores e colocar os comandos que serão executados pelo usuário nagios como se fossem o root executando-os :
# vi  /etc/sudores

# Nagios

nagios ALL=(ALL) NOPASSWD: /usr/local/nagios/libexec/check_qmail_queue

nagios ALL=(ALL) NOPASSWD: /usr/local/nagios/libexec/check_procs

nagios ALL=(ALL) NOPASSWD: /usr/local/nagios/libexec/check_users

nagios ALL=(ALL) NOPASSWD: /usr/local/nagios/libexec/check_load

nagios ALL=(ALL) NOPASSWD: /usr/local/nagios/libexec/check_disk

nagios ALL=(ALL) NOPASSWD: /usr/local/nagios/libexec/check_swap

nagios ALL=(ALL) NOPASSWD: /usr/local/nagios/libexec/check_mem.pl



Reiniciei o NRPE, para isso execute um restart no daemon inetd que controla o daemon do NRPE:
# /etc/rc.d/rc.inetd restart

NO SERVDIDOR DO NAGIOS TESTE A COMUNICAÇÂO COM O HOST REMOTO:

# /usr/lib64/nagios/plugins/check_nrpe -H 192.168.65.100


PARA HABILITAR E VISUALIZAR O DEBUG DO NRPE  UTILIZE O HOW TO ABAIXO:

Editar /usr/local/nagios/etc/nrpe.cfg
# vi  /usr/local/nagios/etc/nrpe.cfg

debug=1



Editar /etc/syslog.conf
# vi /etc/syslog.conf

####################

# LOG PARA O NRPE

####################

daemon.debug                                            /var/log/nrpe



Reiniciei o NRPE:
# /etc/rc.d/rc.inetd restart

Reload do syslog:
# killall -HUP syslogd

terça-feira, 11 de outubro de 2011

Bela homenagem a Jobs e a importância e consistência do O.S *BSD

20
Steve Jobs
"Nosso marketshare é maior que o da BMW ou da Mercedes ou ainda da Porsche no mercado automobilístico. O que há de errado em ser a BMW ou a Mercedes?" -- Steve Jobs
Obrigado, Steve, obrigado.
Obrigado, Steve Jobs, obrigado.
 A tecnologia de Steve, FreeBSD & 4.2 BSD


Este homem colocou um sistema baseado em FreeBSD no coração de seu tablet, e revolucionou a indústria da tecnologia móvel. (iPad, iOS = Darwin Embedded = Mach + FreeBSD)

Antes disso, ele revolucionou a indústria da telefonia celular, com um sistema baseado em FreeBSD no coração de seu telefone. (iPad, iOS = Darwin Embedded = Mach + FreeBSD)
Antes, criou um novo conceito de televisão on-line, que vem revolucionando este segmento de mercado em regiões do mundo com acesso persistente a banda larga. Em seu coração, um sistema baseado em FreeBSD. (iTV/Apple TV, iOS = Darwin Embedded = Mach + FreeBSD + TinyBSD)
Bem antes, revolucionou a indústria da música, a forma de se consumir e comercializar música, e no coração de seu tocador de música e loja, colocou um sistema baseado em FreeBSD. (iPod, iOS = Darwin Embedded = Mach + FreeBSD)
Antes disso, criou a série de computadores pessoais mais desejado do mundo, e em seu coração, colocou um sistema baseado em FreeBSD. (Mac Book Pro, iMacs, Mac OS X = Darwin + Aqua + Quartz + Mach + FreeBSD)
Ainda antes, revolucionou a indústria do cinema de animações gráficas, e no coração dessa tecnologia colocou um sistema derivado do Mach 2.5 e do 4.2-BSD. (NEXTSTEP = Mach 2.5 + 4.2-BSD + 4.4BSD)
Antes disso, teve seu primeiro contato com 4BSD ao criar uma plataforma computacional superior à que ele mesmo havia criado no passado. (NEXTSTEP = Mach 2.5 + 4.2-BSD + 4.4BSD)
Este homem mudou consideravelmente a forma como o mundo cria e consome música, cinema, comunicação, cultura, livros. Criou a tecnologia e os produtos mais desejados no mercado contemporâneo. Criou a maior empresa de capital aberto do mundo.
E no coração disso tudo... vocês já sabem.
Por isso, nós, das equipes FreeBSD Brasil LTDA & IDS Tecnologia prestamos nossa pequena e sincera homenagem, em reconhecimento a vida e os feitos deste homem. Obrigado, Steve.
E mais uma coisa...
Foi num NeXT Cube, rodando NEXTSTEP, sistema criado a partir de um kernel híbrido do Mach 2.5 e 4.2-BSD + 4.4BSD (incluindo, claro, TCP/IP do 4-BSD) que Tim Berners-Lee criou o primeiro navegador web (WorldWideWeb era o nome), primeiro servidor web (CERN httpd) e criou a web (WWW e o W3C) como conhecemos hoje. Até onde Steve não estava presente, sua obra (e o BSD, claro) fizeram e fazem toda a diferença.
Mac OS X 10.6 (Snow Leopard) é o primeiro sistema a ter instruções de kernel massivamente processada por GPU em complemento a CPU. O OpenCL e processamento GPU, além do Grand Central Dispatch voltam como contribuição da Apple ao FreeBSD em 2011, no FreeBSD 9 (sistema base), quase 4 anos depois de incorporado no Mac. Tardio? Pense da seguinte forma: FreeBSD é o segundo SO a se apoiar em processamento GPU, quase 4 anos depois. O restante do mercado continua correndo atrás, engatinhando. Em mais 2, 3 anos talvez absorvam mais essa influência da tecnologia de Steve.
Steve se foi, mas seu legado continua. E temos orgulho de enxergar que continua fundado em BSD.
Passado, presente, e por muitos anos ainda, o futuro. Obrigado Steve, por subir o nível.

Fonte: http://www.freebsdbrasil.com.br/home.php?area=20&conteudo=53

terça-feira, 28 de junho de 2011

Google Social Networking

Google já iniciou o desenvolvimento do aplicativo de rede social que irá competir com o Facebook; Ele se chama: Google+. Muito desafiador... Tarefa árdua essa eim? Será possivel colocar um aplicativo para disputar com o maior serviço de rede social do mundo, o Facebook? De qualquer forma estou curioso para conhecer o Google+.





The Google+ project: real life sharing, rethought for the web.
plus.google.com

sexta-feira, 10 de junho de 2011

Trocar UID proprietário de arquivos e pastas em determinados diretórios por um outro UID para ser o novo proprietário desses arquivos encontrados

Pessoal o script abaixo foi feito para alterar o dono de arquivos e pastas em determinados diretórios, o mesmo sairá recursivamente trocando o UID dos arquivos e pastas encontrados, a partir do UID antigo, por um outro UID, definido por você, para que esse seja o novo dono do arquivos e pastas no diretório.

OBS.: UID é uma identificação exclusiva de qualquer usuário no linux, para verificar o id de algum usuário digite:

# id nomeDoUsuário
root@feigt:/# id leonardoconrado
uid=1018(leonardoconrado) gid=100(users) groups=100(users)


Exemplo 01: Mudará o dono de todos arquivos e pastas do diretório / que tenham como UID 502 e irá "setar" ou configurar um novo UID dono desses arquivos que será UID 512 e irá também gerar um arquivo de log em /root/debug.txt, para que possamos ver se aconteceu alguma falha na tentativa de troca desses UIDs nos arquivos encontrados, ele também contará quantos arquivos foram encontrados com o velho UID, abaixo script:

#!/bin/bash

# Mudar UID proprietário de arquivos e pastas
# para um novo UID ser o proprietário em determinados
# diretórios
# Por Leonardo Couto Conrado
# Em 06.10.2011 

counter=0

# Encontre em / os arquivos que tenha UID igual à 502
for i in $( find / -uid 502 2>> /dev/null ); do
        echo $i

# Mude o dono desses arquivos para UID 512
        chown -v 512 $i >> /root/debug.txt

# Conte cada arquivo encontrado
        counter=`echo "$counter+1"|bc`
done
echo $counter

Exemplo 02: Mudará o dono de todos arquivos e pastas do diretório /oracle que tenham como UID 501 e irá "setar" ou configurar um novo UID dono desses arquivos que será UID 511 e irá também gerar um arquivo de log em /root/debug.txt, para que possamos ver se aconteceu alguma falha na tentativa de troca desses UIDs nos arquivos encontrados, ele também contará quantos arquivos foram encontrados com o velho UID, abaixo script:

#!/bin/bash

# Mudar UID proprietário de arquivos e pastas
# para um novo UID ser o proprietário em determinados
# diretórios
# Por Leonardo Couto Conrado
# Em 06.10.2011 

counter=0

# Encontre em / os arquivos que tenha UID igual à 501
for i in $( find /oracle -uid 501 2>> /dev/null ); do
        echo $i

# Mude o dono desses arquivos para UID 511
        chown -v 511 $i >> /root/debug.txt

# Conte cada arquivo encontrado
        counter=`echo "$counter+1"|bc`
done
echo $counter

quarta-feira, 4 de maio de 2011

Já se foram os últimos blocos do velho e bom IPv4, que até hoje nos foi muito útil...

O competente ancião, protocolo IPv4, atualmente responsável por carregar todas as nossas informações na rede mundial, a internet, está se aposentando e delegando a tarefa para o jovem e aprimorado protocolo IPv6...


Saiba mais: O fim do IPv4

sexta-feira, 11 de março de 2011

Linux Magazine Community Edition 76 baixe já a sua

Já está no ar a Linux Magazine 76 Community Edition.

Confira nesta edição os principais assuntos da Linux Magazine de março (Monitoramento e segurança) e leia artigos completos sobre ferramentas de backup para auxiliar na prevenção de falhas e perdas de dados e proteção de servidores web Apache com o módulo mod_security.

A Linux Magazine Community Edition surgiu em agosto de 2009. Trata-se de um arquivo em PDF com 30 páginas do conteúdo original da Linux Magazine do mês, disponível para download uma semana antes do lançamento da revista nas bancas – exclusivo para assinantes e cadastrados na newsletter.

O sumário da Community Edition contém a relação de todas as matérias da revista. Algumas são de livre acesso e outras são artigos que podem ser adquiridos pelo site. O material de livre acesso representa 30% do conteúdo da edição do mês, uma prática já adotada pela Linux Magazine. Pode-se navegar pelo documento, acessando o material gratuito ou adquirindo o material exclusivo em nosso site. Basta clicar para ser levado à página do artigo correspondente. Tudo isso antes mesmo de a revista chegar às bancas ou ser publicada no site.

A melhor parte é que você pode baixar o arquivo e enviar para quem você quiser. Por meio da licença Creative Commons, a Community Edition pode ser livremente copiada e distribuída. Assim, baixe, copie, envie para os seus amigos e faça parte de uma comunidade que não para de crescer. Participe de forma ativa na divulgação da tecnologia que mais traz benefícios para as pessoas e para o mercado em geral.

Quando a revista chegar às bancas, a Community Edition será disponibilizada gratuitamente para download para qualquer visitante do site. Mas você, assinante da newsletter, tem a exclusividade de acesso em primeira mão.




quinta-feira, 24 de fevereiro de 2011

Editando arquivo CGI(status.cgi ) do Nagios realizando custom

Pessoal recentemente surgiu a necessidade de editar um CGI do Nagios, especificamente o arquivo status.cgi, a carência era adicionar mais uma coluna na tabela da página Problems >> Services(http://servidorNagios/nagios/cgi-bin/status.cgi?host=all&servicestatustypes=28) tal coluna deveria conter a descrição/alias dos hosts. A intenção é para torna compreensivel, para o pessoal não técnico, o host que está apresentando problemas já que teremos uma clouna que informa a descrição do host e não somente a sua abreviatura(Hostname). Pois bem, o bom é que vivemos no mundo open source e sabendo-se disso temos acesso aos fontes dos programas, utilizando-se dessa flexibilidade podemos deixar o programa do nosso jeito, que beleza eim?! Nota 1000 para o GNU e viva ao Linux!! Pois bem, vamos meter a mão na massa:

OBS.:

- Utilizado para esse artigo o CentOS 5.5 e o Nagios Core 3.2.3;
- Você deve compilar o código status.c na máquina que realmente roda o Nagios, tentei editar e compilar o status.c em outra máquina com o mesmo S.O e a mesma versão do Nagios e depois copiei o status.cgi já compilado para outra máquina de produção, porém, não rolou dava erro então compile o nagios na máquina que realmente utilizará os CGI;

1 - Primeiramente vá ao site da Nagios e baixe o source do mesmo;

2 - Descompacte-o;

3 - Vá a pasta /nagios-3.2.3/cgi e edite o status.c;

4 - Foi necessário adicionar somente duas linhas no arquivo, abaixo segue trechos do arquivo numerado e com comentários sobre as linhas adicionadas:
# vi /nagios-3.2.3/cgi/status.c


Primeira parte:

Segunda parte:


Após isso será necessário configurar, compilar e instalar o nagios para ele recompilar os .CGIs, para fazer esta tarefa tomei como referência o How to de instalação do Nagios.org, faremos conforme abaixo:

1 - Em /nagios-3.2.3(A pasta que tem os fontes) você executará 3 comandos:

./configure --with-command-group=nagcmd
make all
make install

Pronto!
E agora vamos ver se a nossa coluna apareceu no services.cgi do Nagios, acesse o seu nagios através do browser:




Voilà!! Customizamos o Nagios!! E Viva o mundo open source!

quinta-feira, 10 de fevereiro de 2011

Extendendo partição raiz / (VolGroup00) com LVM

É normal que o seu sistema Linux com o passar do tempo consuma o filesystem, com aplicativos instalados e logs dos aplicativos que são gerados continuamente e vão logicamente consumido o seu disco, e como consequência disso ficamos sem espaço disponivel na partição root ou /. Existe uma maneira rápida, simples e transparente de incrementarmos mais espaço nessa partição, utilizando para isso a ferramenta LVM, onde podemos realizar esse ajuste de espaço se e somente o seu S.O foi instalado com LVM e foi configurado para a partição / utilizar o esquema de VG(Volume Group) da LVM, que geralmente é o VolGroup00, então isso significa que você porderá extender a sua partição.

Para descobrir essas informações no seu S.O utilize o seguinte comando:
#df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
25G  5.6G   18G  25% /
/dev/sda1              99M   13M   82M  13% /boot
tmpfs                 502M     0  502M   0% /dev/shm
/dev/mapper/VolGroupOracle-LogVolOracle
108G   29G   74G  28% /oracle
/dev/hdc              3.3G  3.3G     0 100% /mnt/dvd


Perceba que o filesystem da sua partição / é: /dev/mapper/VolGroup00-LogVol00 onde VolGroup00 é o Grupo de volumes, é ele quem extenderemos primeiramente, pois, o nosso volume lógico LogVol00, que é a partição /, é membro deste grupo. Logo em seguida após extendermos o Grupo lógico VolGroup00 extenderemos nosso Volume lógico LogVol00 que como já foi dito é a nossa partição root.

Então vamos lá:

Resumo da tarefa a ser realizada: Para poder extender um grupo lógico você deverá arranjar espaço de algum lugar, com LVM geralmente colocamos um novo disco rígido no servidor e após isso mudamos a tabela de partição deste novo disco para o tipo 8e(Linux LVM). Em seguida criamos um Phisical Volume a partir deste disco recém adicionado, PV ou phisical volume é um disco lógico utlizado pelo LVM. Criado o PV, extenderemos o nosso VG(Volume Group) que no nosso caso será o VolGroup00. Logo em seguida após extender o VG iremos extender o LV(Logical Volume) desejado ou em outras palavras a partição / e para finalizar iremos passar para o S.O a informação que extendemos um filesystem dele com o comando resize2fs.

Verifique o nome do dispositivo que foi colocado para seu HD recém adicionado:
#fdsik -l
Disk /dev/sdd: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdd doesn't contain a valid partition table

O dispositivo /dev/sdd está sem tabela de partição criada. Então iremos criar e coloca-la como tipo 8e(Linux LVM):
#fdisk /dev/sdd
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-130, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-130, default 130):
Using default value 130

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Partição criada:
#fdisk -l /dev/sdd
Disk /dev/sdd: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1         130     1044193+  8e  Linux LVM


Iremos agora para a parte do LVM, primeiramente criaremos um Phisical Volume(PV) com a partição que foi criada:

#pvcreate /dev/sdd1
Physical volume "/dev/sdd1" successfully created


Agora que já temos o PV iremos extender um Volume Group, que no nosso caso é grupo de volumes que contém a partição raiz / normalmente é chamado de VolGroup00, se não saber qual o nome do grupo der o comando abaixo:
#df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
25G  3.7G   20G  17% /
/dev/sda1              99M   13M   82M  13% /boot
tmpfs                1006M     0 1006M   0% /dev/shm
/dev/mapper/VolGroupOracle-LogVolOracle
206G  188M  196G   1% /oracle


Identificado o Volume Group que contém a sua partição /, então, iremos extender esse VG passando para ele o dispositivo que contém o espaço livre, ou seja, o disco rigido recém adicionado na máquina:
#vgextend VolGroup00 /dev/sdd1
Volume group "VolGroup00" successfully extended


Pronto com o grupo já extendido vamos ver quanto de espaço livre este VG possui agora:
#vgdisplay VolGroup00
--- Volume group ---
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size 8.69 GB
PE Size 32.00 MB
Total PE 278
Alloc PE / Size 248 / 7.75 GB
Free PE / Size 30 / 960.00 MB
VG UUID Ll4Bg4-jIFV-lfut-z4Ae-JTfH-0Hzp-Zf9RjM


Agora sim iremos extender a nossa partição ou volume raiz / utilize o parâmetro Free PE do comando dado acima ele é o indice de espaço livre:
#lvextend -l+30 /dev/VolGroup00/LogVol00
Extending logical volume LogVol00 to 8.19 GB
Logical volume LogVol00 successfully resized


Pronto! Agoramos que extendemos o nosso VG do LVM iremos passar esta informação para o S.O, pois, ainda não foi extendido o disco fisico propriamente dito, para extende-lo utilize o comando resize2fs:
#resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.40.2 (12-Jul-2007)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing
required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 2146304 (4k)
blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 2146304 blocks long.


df -T
Filesystem              Type     1K-blocks     Used Available Use% Mounted on
/dev/mapper/centos-root xfs       47781076 47095908    685168  99% /
devtmpfs                devtmpfs   1927272        0   1927272   0% /dev
tmpfs                   tmpfs      1937252        0   1937252   0% /dev/shm
tmpfs                   tmpfs      1937252     8488   1928764   1% /run
tmpfs                   tmpfs      1937252        0   1937252   0% /sys/fs/cgroup
/dev/sda1               xfs         508588   183388    325200  37% /boot
10.71.50.71:/var/log    nfs       49578752 20107264  26912512  43% /var/log/syslogserver
tmpfs                   tmpfs       387452        0    387452   0% /run/user/0


ATENÇÃO: Se estiver usando o SO CentOS 7, o sistema de arquivo padrão é xfs e o comando resize2fs dará erro. Use o comando abaixo:

 xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=256    agcount=4, agsize=2987776 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=11951104, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=5835, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

data blocks changed from 11951104 to 27689984




Pronto!!!! Se tudo correu bem você está agora com espaço livre em seu disco e na sua partição raiz /.
Simples!

Linux Magazine Community Edition 75 baixe já a sua Linux Magazine 75 Community Edition!


Já está no ar a Linux Magazine 75 Community Edition.

Confira nesta edição os principais assuntos da Linux Magazine de fevereiro (Android) e leia um artigo completíssimo sobre programação Palm para webOS, poderoso sistema móvel que pretende conquistar posições no mercado. Leia ainda um completo tutorial sobre SystemTap.

Baixe já a sua!

quinta-feira, 13 de janeiro de 2011

Linux Magazine Community Edition 73 baixe já a sua Linux Magazine 73 Community Edition!




Já está no ar a Linux Magazine 73 Community Edition.

Confira nesta edição os principais assuntos da Linux Magazine de fevereiro (Android) e leia um artigo completíssimo sobre programação Palm para webOS, poderoso sistema móvel que pretende conquistar posições no mercado. Leia ainda um completo tutorial sobre SystemTap.

Baixe já a sua!

Baixe já a sua Linux Magazine Community Edition 74



Já está no ar a Linux Magazine 74 Community Edition.

Confira nesta edição os principais assuntos da Linux Magazine de janeiro (Interoperabilidade) e leia a terceira parte do tutorial de Asterisk, um artigo de programação completo sobre trabalhar com pipes em shell scrip e um artigo sobre como monitorar os daemons do seu sistema.

Baixe já a sua!

Seguidores