O que é um sistema Linux
Last updated
Last updated
GNU/Linux é um sistema baseado no conceito de software livre. É a união do sistema operacional GNU, que contém pacotes de software para uso cotidiano, com o poderoso núcleo (ou kernel) Linux.
O kernel implementa funcionalidades críticas para o funcionamento do sistema operacional (agendador de tarefas, escalonador de memória, multitasking) e provê interfaces e abstrações - como sistemas de arquivos, funções para conexão com outros computadores, leitura e escrita de arquivos, etc - para os programas de usuário.
Essas funcionalidades são chamadas pelos programas e o kernel os executa e são chamadas de system calls.
Nesse livro, quando falarmos em Linux, estaremos nos referindo ao GNU/Linux, e não apenas ao kernel - a não ser se especificado explicitamente.
O problema da época da criação do Linux é que não havia sistemas operacionais livres amplamente utilizados ou comercializados (sim, software livre pode ser comercializado!). Os mais utilizados eram softwares proprietários - como o próprio UNIX, o MS-DOS ou o Windows.
Havia o GNU, baseado apenas em software livre na licença GPL, compatível com UNIX mas seu kernel GNU Mach não era tão bom para utilização. Linux, por outro lado, era um kernel poderoso mas que faltava um sistema operacional e programas de usuário para utilizá-lo. Logo os dois projetos foram unidos e aí nascia o GNU/Linux, um sistema operacional poderoso e totalmente livre.
0. A liberdade de executar o programa como você desejar, para qualquer propósito (liberdade 0).
1. A liberdade de estudar como o programa funciona, e adaptá-lo às suas necessidades (liberdade 1). Para tanto, acesso ao código-fonte é um pré-requisito.
2. A liberdade de redistribuir cópias de modo que você possa ajudar outros (liberdade 2).
3. A liberdade de distribuir cópias de suas versões modificadas a outros (liberdade 3). Desta forma, você pode dar a toda comunidade a chance de beneficiar de suas mudanças. Para tanto, acesso ao código-fonte é um pré-requisito.
Devido à sua natureza livre, empresas e comunidades modificaram o código-fonte do GNU/Linux e distribuiram suas próprias modificações: para uso em desktop, servidor, focados em certo público-alvo etc. Quando essas modificações são grandes o suficiente, com uma comunidade ou empresa para manter as atualizações, geralmente dá-se o nome de distribuição ou distro.
Há centenas ou milhares de distros atualmente, entre elas: Ubuntu, Fedora, Arch Linux, Debian, Linux Mint etc.
Há duas formas principais de uso de um sistema operacional:
A Graphical User Interface (GUI) é a forma mais difundida de uso e provavelmente o leitor a utiliza no cotidiano. Nela, há abstrações e implementações de componentes gráficos para realizar entradas e mostrar saídas para o usuário, como janelas, botões e janelas de diálogo. O uso do mouse tem um papel muito importante para realizar as mais diversas ações, facilitando o uso do computador por usuários leigos.
O sistema operacional mais utilizado em Desktops, o Windows, utiliza GUI como sua forma principal de interação.
A maioria das distribuições Linux contempla já ambientes desktop GUI pré-instalados ou disponível para instalação. Entre eles, estão o GNOME, KDE, Cinnamon Unity, MATE, XFCE e LXQT, para citar alguns.
A Command Line Interface (CLI) é a forma de interação mais tradicional de um computador, em que a interação é realizada principalmente a partir de um prompt de comandos (ou terminal/shell, no Linux). Essa shell é uma aplicação que espera poruma entrada do usuário, naturalmente via teclado, interpreta os comandos e executa a ação desejada.
Nesse caso, para mexer em um computador, o usuário tem que ter conhecimento prévio dos comandos e as capacidades de execucã́o da máquina, o que torna a linha de comando um formato de interação menos indicado para usuários leigos do que uma GUI.
O sistema Windows conta com o prompt de comandos via duas aplicações principais: cmd.exe e powershell.exe. Logo, é possível executar comandos CLI estando em um sistema baseado em GUI!
Já o Linux conta com diversos tipos de shell, que implementam facilidades diferentes quanto ao uso. Para citar algumas: bash, sh, ksh, tcsh, csh etc. Para acessar a linha de comando em um Linux com um ambiente de desktop GUI, é necessário instalar ou buscar por um software terminal, como o GNOME Terminal. Mas não se preocupe, a grande maioria das distros irá prover um terminal para execução de comandos quando se está em uma GUI.
Nesse curso, utilizaremos o shell bash como padrão. Sua execução via algum software terminal em GUI ou via CLI pura não fará diferença.
Linux e boa parte dos kerneis baseados/inspirados em UNIX não possuem implementação de componentes GUI no seu kernel. Isso significa que há dependência de componentes de fora do kernel para criar um ambiente propício para uma GUI - necessitando, por exemplo, do X server ou Wayland e um ambiente gráfico que rode em cima dessas duas plataformas.
Ambientes restritivos geralmente não fornecem uma GUI. Para interagir nesses sistemas, é necessário conhecer o básico de linha de comando.
Para um pentester, quando é executado um exploit, em muitos dos casos é retornado uma conexão com a máquina invadida via CLI apenas. Entender como mexer na shell é um conhecimento básico e primordial para qualquer pessoa que deseja seguir na área de segurança.
Além disso, a CLI é muito poderosa, como veremos à frente. Uma shell define uma linguagem de script para desenvolvimento de rápidos snippets de código. Desde pequenos comandos que salvam tempo até shell scripts que podem automatizar boa parte do seu trabalho, com toda certeza conhecer shell irá facilitar seu trabalho, seja você um desenvolvedor, alguém de infra ou de segurança da informação.
O Linux foi criado por Linus Torvalds em 1991 como um para implementar system calls UNIX, criando, efetivamente, um clone do UNIX. UNIX é uma família de sistemas operacionais desenvolvidos nos anos 1970 especialmente pela AT&T e licenciado para o setor acadêmico e comercial. Aliás, a linguagem C foi criada para auxiliar no desenvolvimento do UNIX no Bell Labs, da AT&T!
Por ser um clone do UNIX, criado do zero, o Linux tem alta compatibilidade com os sistemas derivados do UNIX, como o BSD - o qual seu derivado FreeBSD contém um utilitário chamado , que permite a execução de código escrito para Linux de maneira simplificada.
Importante notar que o "livre", no nome, não significa "grátis", mas sim no sentido de liberdade - o que você pode fazer com o software e o código-fonte. Todo software licenciado pela GPL, a mesma licença usada pelo Linux, que deve fornecer essenciais:
Para sistemas em que não foi instalado um ambiente de desktop, a CLI será utilizada como padrão. Para acessar um novo terminal, será realizado o uso de . Historicamente, há 6 terminais disponíveis, acessíveis via CTRL
+ALT
+NUMERO
sendo NUMERO um valor de 1 a 6 que representa o terminal virtual. Entretanto, a quantidade e usos específicos para certos índices dos terminais virtuais depende da configuração que a distro utiliza.