quarta-feira, 19 de março de 2008

Como criar o recurso de Lixeira no Samba

Acrescentar na sessão "global" as seguintes linhas:

vfs objects = recycle
recycle:keeptree = yes # mantem a árvore de diretório do arquivo.
recycle:versions = yes # mantem versões do arquivo.
recycle:repository = /var/samba/trash/%U # não cria a pasta ".recycle" em cada compartilhamento e sim uma pasta para cada usuário em um local definido.
recycle:exclude = *.tmp, *.log, *.obj, ~*.*, *.bak, *.iso # arquivos que não serão guardados na lixeira.
recycle:exclude_dir = tmp, cache # pastas que não serão guardadas na lixeira.

Isso cria uma pasta chamada ".recycle" em todos os compartilhamentos.
Caso não queira o recurso em todos os compartilhamentos, retire a linha "vfs objects = recycle" e coloque no compartilhamento que deseja o recurso.

sexta-feira, 14 de março de 2008

Backup de servidor Linux

O programa Mondo (http://www.mondorescue.org) faz um backup completo da instalação para restaurar caso ocorra algum desastre.
Ele pode ser instalado pelo
apt-get install mondo

quinta-feira, 13 de março de 2008

Instalação do Imsniff para monitorar conversas do Messenger

Obtendo os pacotes:

wget http://ufpr.dl.sourceforge.net/sourceforge/im-snif/imsniff_0.04.tgz
apt-get install libpcap-dev
apt-get install g++


Instalando:
- Descompactar o imsniff_0.04.tgz;
- Serão criadas as pastas doc, linux, src, windows;
- Executar:
linux/build

- Copiar o arquivo doc\imsniff.conf.sample para /etc/imsniff.conf;
- Alterar o arquivo /etc/imsniff.conf:

daemonize = 0 # alterar para 1, execução como serviço
promisc = 0
verbose = 2
chatdir = /tmp/chats # pasta aonde serão gravados os chats
debugdir = /tmp/debug
interface eth0 # interface aonde ele vai escutar


Corrigindo bug (versão 0.04):
- O bug faz o serviço cair toda hora;
- Editar o arquivo src/msn_conntrack.cpp e acrescentar as linhas com + na frente:

void add_user_to_sb (struct msn_connection *conn, u_char *user)
{
if (conn!=NULL && conn->users!=NULL)
{
int i=0;
while (inum_users)
{
if (strcmp ((char *) conn->users[i], (char *) user)==0)
return; // Don't duplicate
i++;
}
}

log_debug (5, "Adding user [%s] to SB",user);
+ if (!conn) {
+ conn = (struct msn_connection *) malloc (sizeof (struct msn_connection));
+ if (!conn)
+ return;
+ if (msn_conns_first==NULL)
+ msn_conns_first=conn;

+ memset (conn,0,sizeof (struct msn_connection)); // All zeros is fine
+ if (msn_conns_last != NULL)
+ {
+ msn_conns_last->next=conn;
+ conn->previous=msn_conns_last;
+ }
+ msn_conns_last=conn;

+ conn->users=NULL;
+ conn->num_users=0;
+ conn->log_full_path=NULL;

+ }

conn->users=(u_char **) realloc (conn->users, sizeof (u_char *) * (conn->num_users+1));
log_debug (5, "Done realloc");
if (conn->users!=NULL)
{
conn->users[conn->num_users]=(u_char *) malloc (strlen ((char *) user) +1 );
log_debug (5, "Done malloc");
strcpy ((char *) conn->users[conn->num_users],(char *) user);
log_debug (5, "Done strcpy");
conn->num_users++;
}
log_debug (5, "Done, number of users now = %d",conn->num_users);
}

- Editar o arquivo src/util.cpp e acrescentar as linhas com + e retirar as linhas com - na frente:

int get_tokens (u_char *line, u_char ***tokens, int max_tokens)
{
log_debug (5, "entry in get_tokens");
int capacity = (max_tokens==0)?50:max_tokens;
/* First, delete the tokens if there are any ... */
free_array(tokens);
*tokens=(u_char **) malloc (sizeof (u_char *) * (capacity +1)); // Final one is NULL
if (*tokens==NULL)
return OUT_OF_MEMORY;
int num=0; /* Number of tokens added so far */
u_char *now = line;
u_char *newtoken;

char tmp[255];

for (;;)
{
size_t i;
/* Skip spaces and control stuff */
while (*now<=' ' && *now!=0)
{
now++;
}

if (*now==0) /* End of line */
break;

i=0;
if (max_tokens==num+1 && max_tokens!=0)
i=strlen ((char *) now);
else
{
while (now[i]>' ') /* Look ahead, how long is the next token? */
i++;
}
newtoken=(u_char *) malloc (i+1);
memcpy (newtoken, now, i);
now = now + i;
newtoken[i]=0;

if (num==capacity)
{
capacity += 10;
*tokens = (u_char **) realloc (*tokens, sizeof (u_char *) * (capacity +1));
if (*tokens==NULL) /* A bit unstable now I'm afraid */
return OUT_OF_MEMORY;
}

(*tokens)[num]=newtoken;

if (num==7)
{
+ break;
- exit (7);
}
num++;
}

(*tokens)[num]=NULL;
return num;
}

- Entrar na pasta linux e compilar com ./build;

Execução:
- Usar o Webmin para iniciar o serviço automaticamente.

quarta-feira, 5 de março de 2008

Configuração para programas DOS no Windows XP

Alterar o arquivo "\windows\system32\config.nt" e acrescentar:
FILES=200
BUFFERS=56,0

segunda-feira, 3 de março de 2008

Iniciar o Windows XP mais rápido

Entre no registro do Windows e abra a seguinte chave:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters\EnablePrefetcher

O valor desta chave é 3. Mude para 0 se quiser desligar o recurso de pré-carregamento do Windows.
Isso irá fazer com que o Windows inicie mais rápido, mas deixa a abertura de alguns programas mais lenta por não serem pré carregados na inicialização.

domingo, 30 de dezembro de 2007

Grub

Problema: Após criar uma partição pelo Windows, o grub apresentou um problema, "Error 15" e não entrava mais no Linux e nem no Windows.
Solução: Ainda não sei se funciona.
1. Bootar com live-cd do Ubuntu.
2. Montar a partição do Linux como root (montado em "/media").
3. Executar os comandos:

mount -o bind /proc/ /media/proc
mount -o bind /dev/ /media/dev
chroot /media/

Após fazer isso, os comandos do grub podem ser executados, pois o raiz do live-cd fica sendo o raiz da partição montada.
4. Executar os comandos do grub:

update-grub
grub-install /dev/sda

segunda-feira, 24 de dezembro de 2007

Meu primeiro blog

Não sei exatamente para que serve um blog. Acho que se parece com um diário. Vou usar esse blog para postar soluções dos problemas que encontro no meu trabalho de técnico de informática e programador Java.
Quem deu a idéia de criar um blog para isso foi o André Moraes.