quinta-feira, março 27, 2014

Linux SED and AWK

O comando SED é um poderoso utilitário de processamento de texto e é um dos mais antigos e populares utilitários UNIX.

É utilizado para alterar o conteúdo de um ficheiro, geralmente colocando os conteúdos num outro ficheiro daí o se nome "Stream Editor".

SED pode filtrar texto e efetuar substituições em streams de dados.

$sed s/pattern/replace_string/ file
Substituir a primeira string encontrada numa linha.

$sed s/pattern/replace_string/g file
Substituir todas as ocorrências na linha.

$ sed s/pattern/replace_string/g file > file2
O comando anterior vai substituir todas as ocorrências de "pattern" por "replace_string" no ficheiro "file" e copiar par "file2".

O comando AWK é utilizador para extrair e imprimir conteúdos especificos de ficheiros.

$awk '{ print $0 }' /etc/passwd
O comando anterior permite imprimir o ficheiro passwd.

$awk -F: '{ print $1 }' /etc/passwd
O comando anterior permite imprimir a primeira coluna do ficheiro passwd, cujos campos estão separador pelo limitador ":" definido com ".F:".

$awk -F: '{ print $1 $6 }' /etc/passwd
O mesmo que o anterior, mas desta vez permite mostrar a coluna 1 e 6.

domingo, março 23, 2014

Process Isolation

Linux é considerado, desde há muito tempo, um sistema operativo muito seguro relativamente a outros sistemas operativos. Isto deve-se em grande parte à forma como os processos correm.

Um processo é uma instancia de uma ou mais tarefas relacionadas (threads) que estão a executar no computador. Não são necessariamente programas ou comandos pois um programa pode iniciar vários processos ao mesmo tempo. Alguns processos são independentes, outros são relacionados.

Os processo são corridos de forma isolada, ou seja, não utilizam os recursos de outros processos que estão a correr, mesmo que tenham sido chamados pela mesma conta.

Assim sendo é muito difícil ser atacado por vírus ou exploits (mas não impossível obviamente).

Outros mecanismos de segurança foram acrescentados ao longo do tempo:

  • cgroups (control groups) - permitem ao administrador agrupar processos em grupos e alocar recursos finitos a esses grupos;
  • (LXC) linux containers - Possibilita correr multiplos sistemas isolados Linux (containers) num unico sistema com cgroups;
  • Virtualization - Hardware é emulado por forma a que não só apenas os processos são isolados, mas também todos os sistemas de forma isolada num host fisico.

Tipos de processos:

Process TypeDescriptionExample
Interactive ProcessesNeed to be started by a user, either at a command line or through a graphical interface such as an icon or a menu selection.bash, firefox, top
Batch ProcessesAutomatic processes which are scheduled from and then disconnected from the terminal. These tasks are queued and work on a FIFO (First In, First Out) basis.updatedb
DaemonsServer processes that run continuously. Many are launched during system startup and then wait for a user or system request indicating that their service is required.httpd, xinetd, sshd
ThreadsLightweight processes. These are tasks that run under the umbrella of a main process, sharing memory and other resources, but are scheduled and run by the system on an individual basis. An individual thread can end without terminating the whole process and a process can create new threads at any time. Many non-trivial programs are multi-threaded.gnome-terminal, firefox
Kernel ThreadsKernel tasks that users neither start nor terminate and have little control over. These may perform actions like moving a thread from one CPU to another, or making sure input/output operations to disk are completed.kswapd0, migration, ksoftirqd

domingo, março 16, 2014

Gandolada - Jogo educativo?

Resolvi fazer um jogo para a minha filha. Ela gosta muito dos jogos do tipo "Hit The Mole". Achei interessante faze-lo com os principais protagonistas da pouca vergonha que está a acontecer no nosso país atualmente.

www.grandolada.tk

 Grandolada