Sexta-feira, 28 de Setembro de 2007
Negócios do Open Source
Hoje comprei um
template para o Joomla para o projecto que estou a fazer.
Foram 39,95 USD mas a coisa vale bem o dinheiro.
Agora, documentação para mexer naquilo ? Duas páginas que não explicam a ponta de um corno e não, não se trata de mexer em CSS. É muito mais do que isso.
Tem que andar o pessoal no fórum do
site a dar dicas uns aos outros.
Outra coisa que não percebo, por muito burro que possa ser, é porque é que as imagens só mostram os
layers quando abertas no Fireworks em Windows.
Nem Photoshop, nem GIMP, nem Paint Shop Pro, nem nada.
Se se quiser alterar as imagens tem que ser no Fireworks, obviamente em Windows.
A ouvir: A Song For You, Ray Charles.YouTube: http://www.youtube.com/watch?v=mXGc0OoZEsM
Não estão fartos disto ?
De ter que premir a tecla y para copiar ficheiros com o mesmo nome ?
# cp * /lixocp: overwrite `/lixo/cert.pem'? ycp: overwrite `/lixo/create-homedir'? ycp: overwrite `/lixo/defaultdelivery'? ycp: overwrite `/lixo/defaultdomain'? ycp: overwrite `/lixo/defaultquota'? ycp: overwrite `/lixo/dirmaker'? ycp: overwrite `/lixo/ldapbasedn'? ycp: overwrite `/lixo/ldapcluster'? ycp: overwrite `/lixo/ldapgid'? ycp: overwrite `/lixo/ldaplocaldelivery'? ycp: overwrite `/lixo/ldaplogin'? ycp: overwrite `/lixo/ldapmessagestore'? ycp: overwrite `/lixo/ldapobjectclass'? ycp: overwrite `/lixo/ldappassword'? ycp: overwrite `/lixo/ldapserver'? ycp: overwrite `/lixo/ldapuid'? ycp: overwrite `/lixo/locals'? ycp: overwrite `/lixo/Makefile'? ycp: overwrite `/lixo/me'? ycp: overwrite `/lixo/plusdomain'? ycp: overwrite `/lixo/qmail-imapd.rules'? ycp: overwrite `/lixo/qmail-pop3d.rules'? ycp: overwrite `/lixo/qmail-qmqpd.rules'? ycp: overwrite `/lixo/qmail-smtpd.rules'? ycp: overwrite `/lixo/quotawarning'? ycp: overwrite `/lixo/rcpthosts'? ycp: overwrite `/lixo/signatures'? ycp: overwrite `/lixo/tcp.smtp'? ycp: overwrite `/lixo/tcp.smtp.cdb'? yBem, isto é porque o cp tem um
alias para o paramêtro -i (# man cp):
# aliasalias cp='cp -i'Das duas uma: ou o removem, o que não é muito aconselhável, ou fazem:
# \cp * /lixoYap, o backslash faz toda a diferença ;-)
A ouvir: On An Island, David GilmourYouTube: http://www.youtube.com/watch?v=SROK4biHOPk
Naughty, naughty
Era só para dizer a estes curiosos
wannabes que não, não viram a minha
home share do Samba.
De qualquer modo, basta uma linha no smb.conf para afastar a curiosidade:
hosts allow = 192.168.0.100Lista de curiosos:
# ls /var/log/samba/[^smbd*-a-z]* | cut -f5 -d '/' | cut -f1 -d '.'carla-2000gzr9qcarlos-ir33ncm8carloscarloscarlos-s6b9brdpcasa-7xtjzspqi8casaceleroncesarchupapa-b1o4lc5cliente-5uvddoxcompcomputador1computador1computernamecontabilidadecpq28901672019crackscrackericf-dvb8w73sf78t7filipe-02i2d14aflaviacghelenahermanohnunes01hnunes01home-mt6or4k6lhouse-pyldfzdzzhvvm9xjz1wzhbkgibm558097xindividu-jid4ezindividu-jid4ezinesisabeljcpc-m4kqvro83ujcthcjcthcjesus-83txnx9u8jmrr-8rozz76apojoao-cdqkfh3gfmjorge-0avyhq88ajorgelevi-a5n4d52cfjlobo-ee166pqgp0loureiroluis-95modnu830luisanat-7q46e74wygknewton___newton___nmbdnmbdnmbdnmbdnome-e3vucd6gwqnunonunoo-c4f6hc8efdrzmoscarp40pandreia-5mbo1iparticul-u9ukxkpatricepc1pc931196262726pc931196262726pc_iolandapcmiudospessoal-hanf015posto1privado-edadehnpt-crakelricardo-mxokjhorichar-8d10ybcnrita-39cm61gbegroubadorozete-a7amtaeerui-n5tfqykvyfftalentoaatalentoaatelmotest-kk74z8p2oetiagotorvaldstorvaldstorvaldstorvaldstorvaldsuser-penachousila-v3ggbctkoutilizad-sg66h6xanitaxyr3fp4mcbfipc43A ouvir: Portobello Belle, Dire StraitsYouTube: http://www.youtube.com/watch?v=Jdbbt31abSU
Terça-feira, 25 de Setembro de 2007
PHP chrooted
Na sequência do artigo anterior sobre como correr o MySQl num ambiente
chrooted, aqui vai a vez do PHP.
# gzip -dc apache_1.3.47.tar.gz | tar xvf -# gzip -dc php-5.2.3.tar.gz | tar xvf -# gzip -dc mod_security_1.95.tar.gz | tar xvf -# cp mod_security_1.95/apache1/mod_security.c apache_1.3.37/src/modules/extra/# cd apache_1.3.37# ./configure --prefix=/usr/local/httpdCompilar o PHP:
# cd ../php-5.3.2
# ./configure --with-mysql=/usr/local/mysql --with-apache=../apache_1.3.37 --enable-safe-mode (etc. mais opções)# make# make install# cp php.ini-dist /usr/local/lib/php.ini
# chown root:sys /usr/local/lib/php.ini
# chmod 644 /usr/local/lib/php.ini
O Apache:
# cd ../apache_1.3.37# ./configure --prefix=/usr/local/httpd --disable-module=all --server-uid=apache --server-gid=apache --enable-module=access --enable-module=log_config --enable-module=dir --enable-module=mime --enable-module=auth --activate-module=src/modules/extra/mod_security --enable-module=security --activate-module=src/modules/php5/libphp5.a# make# make install#chown -R root:sys /usr/local/httpdAgora, prepara-se o ambiente
chrooted para o Apache com o módulo PHP:
# cp /usr/local/mysql/lib/mysql/libmysqlclient.so.12 /chroot/httpd/usr/lib/# cp /usr/lib/libm.so.2 /chroot/httpd/usr/lib/# cp /usr/lib/libz.so.2 /chroot/httpd/usr/lib/Adicionamemte, temos que copiar o ficheiro de configuração do PHP:
# umask 022# mkdir -p /chroot/httpd/usr/local/lib# cp /usr/local/lib/php.ini /chroot/httpd/usr/local/lib/# mkdir /chroot/httpd/tmp
# chown -R root.root /chroot/httpd/tmp
# chmod 1777 /chroot/httpd/tmp
# chroot /chroot/httpd /usr/local/httpd/bin/httpd
# ln /tmp/mysql.sock /chroot/httpd/tmp/
Configuração do Apache para defesa contra cross side scripting e SQL injection, através do mod_secutity:
<IfModule mod_security.c>
AddHandler application/x-httpd-php .php
SecAuditEngine On
SecAuditLog logs/audit_log
SecFilterScanPOST On
SecFilterEngine On
SecFilterDefaultAction "deny,log,status:500"
SecFilter "<(.|\n)+>"
SecFilter "'"
SecFilter "\""
</IfModule>
Ok, para a próxima, explico como tornar o Apache chrooted, ok ?
A ouvir: Just Good Friends, Fish.
YouTube: http://www.youtube.com/watch?v=ApxexrzQQas
Domingo, 23 de Setembro de 2007
Joomla
Estou a fazer o meu novo projecto em Joomla.
É absolutamente 5 estrelas, tinham-me dito horrores de como construir um site com ele, mas acho que para quem como eu fez o tirocínio em CMS com o Siteseed 1, está preparado para enfrentar qualquer outro (desculpa Paulo Laureano Santos, mas tinha que dizer isto :P).
Só é pena que algumas das extensões mais interessantes sejam pagas, mas enfim, já percebi que há uma verdadeira indústria de volta do Joomla.
Mas compensa e recomendo, construir um site com isto é o mesmo que limpar o rabinho a um bebé.
A ouvir: The Carpet Crawlers, Genesis.YouTube: http://www.youtube.com/watch?v=ko0hiIYGANU
Novo Projecto
Estou a começar um novo projecto, já tenho domínio registado e muita coisa feita.
E não, não tem nada que ver com blogs :P
A ouvir: Come As You Are, Nirvana
YouTube: http://www.youtube.com/watch?v=aNqAyIijj-Y
MySQL :: It's the ctl, stupid
Er... pois, o
ctl file normal do MySQL agora não funciona, por isso, aqui vai um para arrancar e parar o MySQL
chrooted.
#!/bin/shCHROOT_MYSQL=/chroot/mysqlSOCKET=/tmp/mysql.sockMYSQLD=/usr/local/mysql/libexec/mysqldPIDFILE=/usr/local/mysql/var/`hostname`.pidCHROOTUID=/usr/local/sbin/chrootuidecho -n " mysql"case "$1" instart) nohup ${CHROOTUID} ${CHROOT_MYSQL} mysql ${MYSQLD} >/dev/null 2>&1 & sleep 5 && ln ${CHROOT_MYSQL}/${SOCKET} ;;stop) kill `cat ${CHROOT_MYSQL}/${PIDFILE}` rm -rf ${CHROOT_MYSQL}/${SOCKET} ;;*) echo "" echo "Usage: `basename $0` {start|stop}" >&2 exit 64 ;;esacexit 0A ouvir: Still Got The Blues, Gary Moore
YouTube: http://www.youtube.com/watch?v=wPA4KXKyVjU
MySQL :: Just a little tighter, honey
No seguimento do artigo sobre o MySQL em ambiente
chrooted, ainda há mais algumas coisas que podem ser feitas para aumentar a sua segurança, nomeadamente:
- Desabilitar o acesso remoto:
Adicionar ao ficheiro /etc/my.cnf, na secção [mysqld], a linha
skip-networking
Se, mesmo assim, for necessário o acesso remoto ao MySQL, por exemplo para efectuar um backup, pode utilizar-se o SSH:
# ssh mysqlserver /usr/local/mysql/bin/mysqldump -A > backup.sql
- Desabilitar a utilização do comando LOAD DATA LOCAL INFILE:
Adicionar ao /etc/my.cnf a linha
set-variable=local-infile=0
- Remover a base de dados test, bem como todos os users, excepto o root:
mysql> drop database test;
mysql> use mysql;
mysql> delete from db;
mysql> delete from user where not (host="localhost" and user="root");
mysql> flush privileges;
- Agora, alterar o nome do administrador do MySQL (root) para outro:
mysql> update user set user="mydbadmin" where user="root";
mysql> flush privileges;
A ouvir: Come Away With Me, Norah Jones
YouTube: http://www.youtube.com/watch?v=aBKcKQHZXks
MySQL chrooted
Uma coisa que eu costumo fazer sempre nos servidores que instalo é "chrootar" o MySQL e aplicar-lhe alguns truques (que ficam para outro artigo) para o tornar o mais seguro possível.
Vou assumir um MySQL instalado tal como
neste artigo que escrevi anteriormente e a funcionar perfeitamente. Para o verificar, executar:
# mysql -p
Para tudo estar bem, deve aparecer o seguinte:
mysql> show databases;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.00 sec)mysql> quit;
Adiante para o chroot...
É necessário criar a seguinte estrutura de directórios:
# mkdir -p /chroot/mysql/dev
# mkdir -p /chroot/mysql/etc
# mkdir -p /chroot/mysql/tmp
# mkdir -p /chroot/mysql/var/tmp
# mkdir -p /chroot/mysql/usr/local/mysql/libexec
# mkdir -p /chroot/mysql/usr/local/mysql/share/mysql/english
Os direitos de acesso a estes directórios devem ser os seguintes:
# chown -R root:sys /chroot/mysql
# chmod -R 755 /chroot/mysql
# chmod 1777 /chroot/mysql/tmp
Agora, têm que ser copiados alguns ficheiros para esta estrutura de directórios:
# cp /usr/local/mysql/libexec/mysqld
/chroot/mysql/usr/local/mysql/libexec/
# cp /usr/local/mysql/share/mysql/english/errmsg.sys
/chroot/mysql/usr/local/mysql/share/mysql/english/
# cp /etc/hosts /chroot/mysql/etc/
# cp /etc/host.conf /chroot/mysql/etc/
# cp /etc/resolv.conf /chroot/mysql/etc/
# cp /etc/group /chroot/mysql/etc/
# cp /etc/master.passwd /chroot/mysql/etc/passwords
# cp /etc/my.cnf /chroot/mysql/etc/
Dos ficheiros /chroot/mysql/etc/passwords e /chroot/mysql/etc/group,
removem-se todas as linhas, excepto as respeitantes ao MySQL.
Tem que ser criado um device file especial para o /dev/null:
# mknod /chroot/mysql/dev/null c 2 2
# chown root:sys /chroot/mysql/dev/null
# chmod 666 /chroot/mysql/dev/null
E copiar a base de dados dos previlégios do MySQL:
# cp -R /usr/local/mysql/var/ /chroot/mysql/usr/local/mysql/var
# chown -R mysql:mysql /chroot/mysql/usr/local/mysql/var
O MySQL está pronto a ser executado num ambiente chrooted:
# chrootuid /chroot/mysql mysql /usr/local/mysql/libexec/mysqld &
Bem, quando tiver pachorra, escrevo um artigo sobre como correr o Apache também em ambiente chrooted e como integrar com o PHP e o MySQL de modo a fazer um todo coerente.
A ouvir: Yet Another Movie, Pink Floyd
YouTube: http://www.youtube.com/watch?v=Ep9RTAmH5Rw
BASH, stdout e stderr
Precisei de fazer um script (backup.sh) corrido pelo
cron daemon fazendo com o que o rsync gerasse o maior número de informação possível dos respectivos
logs (-vv) para um ficheiro – /var/log/rsync.backup.log
Os
logs precisavam de combinar o
stdout e o
stderr, portanto:
# backup.sh >> /var/log/backup.log 2>&1Contudo, apenas queria que o
output do
stderr fosse para o
cron, para em caso de erro, me ser enviado em e-mail.
Então:
# (./backup.sh > /var/log/backup.log) 2>&1 | tee -a /var/log/backup.logo que propaga o stderr para o cron e a restante tralha do
stdout para o ficheiro de logs :)
Agora só me falta organizar a informação, é uma chatice que o
stdout e o
stderr não sejam sincronizados.
A ouvir: Sorrow, Pink Floyd
YouTube: http://www.youtube.com/watch?v=njQtAC6EH8E
Sexta-feira, 21 de Setembro de 2007
4 kb stack ou 8kb stack
O valor por omissão para o
stack size no Linux são 8 kb.
Note-se que este é o valor para o
kernel stack, não para o
user-space stack.
Contudo, na configuração do Kernel, este valor pode ser alterado para 4kb, na secção
Kernel hacking:
Em que ficamos então ? Qual o melhor valor para o
read/write size ?
Várias operações requerem ou são mais eficientes quando lidam com tamanhos múltiplos do
block size.
Diferentes operações podem envolver diferentes block sizes; e.g. a page size da RAM não é necessariamente
a mesma da do block size do disco, portanto, operações
que envolvam cópia de dados entre disco e RAM
devem idealmente usar valores que sejam múltiplos de ambos (i.e. um múltiplo do maior dos dois).
Também, a page size da RAM pode variar entre arquitecturas de
CPU, enquanto que o block size dos discos pode variar com
os filesystems utilizados ou mesmo em diferentes partições
do mesmo filesystem.
Quaisquer tamanhos relevantes, podem ser obtidos via uma
macro standard ou através do sysconf() ou fo [f]pathconf().
Quanto a networking, não opera em blocos, portanto, não interessa.
A ouvir: This Is The Sea - Waterboys
YouTube: http://www.youtube.com/watch?v=gTTKcrbQog8
A funny guy...
in qmail's mailing list:
"Hi, I want to send emails using Qmail server in asp.Net Webapplication (windows platform).Is it possible to migrate Qmail in windows platform.Can you please assist me on the same.Your reply would be more than appreciated. Thanks in Advance.*******************"A ouvir: Hoochie Coochie Man, Eric Clapton
YouTube: http://www.youtube.com/watch?v=4z4fxDOd7IE
Truques, Minas e Alçapões :: II
Fazer um rsync para
backup de dados, por exemplo, com SSH é muito simples.
Temos que ter a nossa chave pública no servidor remoto.
Suponhamos que tenho que fazer um
backup dos meus e-mails:
# /usr/bin/rsync -azq -e "ssh -i /root/rsync/chave-mirror-rsync" gamito@192.168.0.102/var/spool/mail/gamito/ /var/spool/mail/gamito/
A ouvir: Sorrow, Pink Floyd
YouTube: http://www.youtube.com/watch?v=njQtAC6EH8E
Truques, Minas e Alçapões :: I
Já me aconteceu, num
script em BASH, ter que atribuir uma
password a um user
sem interacção com o teclado.
É muito simples de fazer e podem experimentar na vossa consola:
# echo gamito:segredo | chpasswd
A ouvir: Shine On You Crazy Diamond, Pink Floyd
YouTube: http://www.youtube.com/watch?v=vyqgjCKm9nQ
Quinta-feira, 20 de Setembro de 2007
Logs do mrtg
Se se instalar o mrtg e se se executá-lo como é normal de 5 em 5 minutos através do
cron daemon, vai inserir duas linhas – uma para
login e outra para
logout – no ficheiro /var/log/messages, enchendo-o de lixo.
A solução é passar esses
logs do mrtg para um ficheiro separado, por exemplo, auth.
Editar o ficheiro /etc/syslog.conf e mudar a linha:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
para:
*.info;auth.none;mail.none;authpriv.none;cron.none /var/log/messages
Adicionar a linha:
auth.* /var/log/auth
Convém fazer também o logrotate do ficheiro auth:
Editar o ficheiro /etc/logrotate.d/syslog e adicionar no topo a linha:
/var/log/auth
Gravar o ficheiro e efectuar um restart ao serviço syslogd:
# /etc/init.d/syslog restart
Done :)
Salmos, 23
O Senhor é meu pastor, nada me faltará.
Em verdes prados me faz descansar
e conduz-me a águas refrescantes.
Reconforta a minha alma
e guia-me por caminhos rectos, por amor do seu nome.
Ainda que atravesse vales tenebrosos,
de nenhum mal terei medo
porque Tu estás comigo.
A Tua vara e o Teu cajado dão-me confiança.
Preparas a mesa para mim
à vista dos meus inimigos;
ungiste com óleo a minha cabeça;
a minha taça transbordou.
Na verdade a Tua bondade e o Teu amor
hão-de acompanhar-me todos os dias da minha vida,
e habitarei na casa do Senhor
para todo o sempre.
Os comentários são da exclusiva resonsabilidade dos seus autores.
Mário Gamito, 2004 - 2007
Todos os direitos reservados.