Você está na página 1de 20

CONCEITOS DO SISTEMA OPERACIONAL LINUX

O Linux, desenvolvido em 1991 por Linus Torvalds é um Sistema


Operacional (SO) multitarefa e multiusuário. Utiliza os conceitos de
software livre, por isso, pode ser copiado e utilizado para qualquer fim,
comercial ou não. Pode ser utilizado em modo texto (console) ou em
modo gráfico, por meio do sistema de janelas conhecido por X Window.
Por ser multiusuário, cada usuário tem uma área de disco privada
para armazenamento de seus arquivos e um número de identificação
denominado UID (User IDentification).
Os usuários possuem limitações sobre o que podem fazer no
sistema (execução, leitura e escrita de arquivos e diretórios), com
exceção do usuário chamado root, um superusuário que tem permissão
para fazer tudo, tanto em sua área privada, como na área privada de
qualquer usuário.
De forma a facilitar a concessão de permissões idênticas a vários
usuários, estes são classificados por grupo (GID: Group IDentification).
Assim, um usuário possui, além das suas permissões de usuário, as
permissões atribuídas ao grupo do qual ele faz parte.
No Linux, os arquivos são armazenados em um sistema de
diretórios. Quem define a organização de diretórios e arquivos no disco,
a quantidade de bytes em cada setor (geralmente, 4KB), o tamanho
máximo (em bytes) de cada arquivo, dentre outras características, é o
Sistema de Arquivos. São sistemas de arquivo: EXT3, EXT4, VFAT,
BTRFS, mas existem outros.
Na instalação do Linux são criadas, obrigatoriamente, duas
partições:

/ : chamado de raiz, é uma partição obrigatória, na qual o sistema


é instalado.
swap : área temporária do Linux (equivale ao C:\temp no Windows).
A estrutura de diretórios do Linux organiza os diretórios e arquivos
em árvore, sendo que o todos os diretórios são criados sob o diretório
raiz ( / ). O Linux, ao contrário do Windows, não especifica letras para
unidades de disco (C:, D: etc.). Quando uma unidade de disco deve ser
lida no Linux, é criado um “ponto de montagem” dessa unidade em um
diretório, o qual passa a representar a unidade de disco respectiva.
Assim, a leitura do diretório equivale a ler o conteúdo da unidade de
disco mapeada para aquele diretório.
No Linux a extensão de um arquivo não define sua característica.
Por exemplo, um arquivo executável tanto pode ter o nome: arq.exe,
como arq.txt, ou somente arq. Dessa forma, para ser executável, um
arquivo deve ter permissão de execução.
Na instalação do Linux, são criados alguns diretórios específicos.
Citam-se alguns a seguir:

/boot
Contém o kernel do Linux (parte principal do SO) e demais
arquivos necessários à iniciação (boot) do sistema.

/bin
Contém aplicativos e utilitários em geral, como os comandos de
leitura de conteúdo de arquivos (cat), criação de diretório (mkdir), cópia
de arquivos (cp), compactação (tar, gzip), dentre outros.
/dev

Contém arquivos que fazem referências a dispositivos de


hardware.

/etc

Contém arquivos e diretórios de configuração de aplicativos.

/home
Contém os diretórios dos usuários “não root”. Se existir a conta de
usuário “jose_luiz”, então, há o diretório “/home/jose_luiz”.

/root
Contém arquivos e diretórios do usuário “root”.

/usr
É um diretório muito grande, e contém diversos arquivos
executáveis, documentações etc.

/var
Contém informações de sistema, como logs, filas de impressão
etc.

Há vários outros diretórios, mas uma listagem completa foge ao


escopo deste trabalho.
Esquematicamente, representa-se a hierarquia de diretórios em
árvore. Na figura 1, vê-se a representação para os diretórios
anteriormente descritos:

bin boot dev etc home root usr var

Figura 1: Representação de diretórios do Linux em árvore

O sistema UNIX é orientado a arquivos. Tudo em um sistema


UNIX (e no Linux, por consequência) é um arquivo. Para o Linux, um
diretório, por exemplo, é um arquivo que contém os nomes de outros
arquivos. Seus comandos são arquivos executáveis.
Em Linux, um nome de arquivo pode conter até 255 caracteres,
sendo que a extensão é informativa para o usuário, e figurativa para o
Linux. Por exemplo, o arquivo “conteudo.exe” pode ser um arquivo de
texto. O que define se se trata de um arquivo executável são as
permissões do arquivo.
O Linux é sensível a maiúsculas e minúsculas (case-sensitive).
Dessa forma, o nome “conteudo.exe” é diferente dos nomes
“Conteudo.exe” e “conteudo.Exe”.
Um arquivo sempre possui, além do nome, informações como:
- Permissões
- Quantidade de links (atalhos)
- Proprietário do arquivo (usuário que o criou)
- Grupo do arquivo (grupo do usuário criador)
- Tamanho (bytes)
- Data da criação
- Hora da criação
Isto pode ser visto com a execução do comando “ls -l”:

Figura 2: Visualização das informações dos arquivos no Linux

Comandos do Linux

Um comando é um arquivo que executa uma determinada tarefa.


Um comando pode, ou não, conter opções (geralmente um nome
precedido de dois traços ou uma letra precedida de um traço) e/ou
parâmetros.
A seguir, são listados alguns comandos do Shell (programa que
interpreta comandos do usuário). Lembre-se que o Linux é case-
sensitive (diferencia maiúsculas de minúsculas):

Comando: clear
 Limpa a tela do terminal.
Comando: su

 Muda para o usuário especificado. Se nenhum usuário for


especificado, assume o usuário root.

Exemplos:

su hue

 Abre a sessão com o usuário hue.

su

 Abre a sessão com o usuário root. É o mesmo que:


su root. O prompt altera o caractere de $ para #.

Comando: exit

 Sai do console atual.

Comando: passwd

 Altera a senha do usuário ativo (o usuário root pode alterar


a senha de qualquer usuário).

Comando: mkdir

 Cria um diretório (MaKe DIRectory).

Exemplo:

mkdir /home/users

 Cria o diretório users “embaixo” do diretório home


(ou seja, users é um subdiretório do diretório home)
Comando: useradd

 Cria um usuário.

Exemplo: criar embaixo de /home o subdiretório ze. Em


seguida, criar o usuário ze, associando-o ao diretório recém
criado: /home/ze. Por final, alterar a senha do novo
usuário para que ele possa efetuar login no sistema

Passo 1: Abrir uma sessão como root

su

Passo 2: Criar o diretório ze

mkdir /home/ze

Passo 3: Criar o usuário (useradd –d <home> <nomeUsu>)

useradd -d /home/ze ze

Passo 4: Alterar a senha do usuário

passwd ze

Passo 5: Testar o usuário criado

su ze

Passo 6: Sair da sessão do usuário ze

exit

Passo 7: Limpar o terminal

clear
Comando: cd

 Mudar de diretório (Change Directory)

Exemplo:

cd /home/ze

 Vai para o diretório “home” do usuário “ze”.

cd

 Retorna ao diretório home do usuário.

cd ~

 Também retorna ao diretório home do usuário.

cd -

 Retorna ao último diretório acessado.

Comando: pwd

 Exibe o diretório atual (Print Working Directory)

Comando: file

 Informa o tipo de arquivo especificado.

Exemplo: Seja o arquivo de texto (ASCII) arq_texto. Assim,


executar:

file arq_texto

faz com o sistema exiba o seguinte:

arq_texto: ASCII text


Comando cat

 Exibe o conteúdo de um arquivo.

cat arq_texto

Comando: ls

 Lista o conteúdo de um diretório.

Exemplo:

ls

 Lista os arquivos do diretório atual.

ls /etc

 Lista os arquivos do diretório /etc.

ls –l /etc

 Lista (com detalhes) os arquivos do diretório /etc.

ls –a /etc

 Lista os arquivos ocultos (cujos nomes iniciam com o


caractere ponto “.”) do diretório /etc.

ls –R /etc

 Lista os arquivos do diretório /etc e de todos os


subdiretórios dele.

ls .

 Lista os arquivos do diretório corrente (representado


pelo ponto “.”). Supondo que o diretório /etc seja o
diretório corrente, executar:

ls .

lista os arquivos de /etc, e executar:

ls ..
lista os arquivos do diretório hierarquicamente
superior (representado pelos dois pontos
consecutivos “..”). Supondo que o diretório /etc seja
o diretório corrente, executar:

ls ..

lista os arquivos do diretório raiz ( / ), do qual /etc é


um subdiretório.

ls /etc/*

 O asterisco é um curinga que substitui qualquer


ocorrência de caractere. O comando ls /etc/*
equivale a ls /etc. Porém, se se deseja conhecer os
arquivos .conf daquele diretório, deve-se executar:
ls /etc/*.conf
Dessa forma, serão listados todos os arquivos que,
não importando o nome (*) terminem em “.conf”.

Comando: cp

 Copia um arquivo (ou um conjunto de arquivos) de um


diretório (origem) para outro (destino).

Exemplo: copiar o arquivo fstab do diretório /etc para o


diretório home do usuário atual (hue):

Passo 1: Retornar ao diretório home do usuário


cd
Passo 2: Obter o diretório atual
pwd
Passo 2: Copiar o arquivo de /etc para esse diretório
cp /etc/fstab /user/lib/hue
Passo 4: Verificar que o arquivo foi copiado
ls –l fstab
Comentários:

 O diretório home do usuário neste ambiente é


/usr/lib/hue. Porém, ao invés de fazer:

cp /etc/fstab /user/lib/hue

poderia ter sido executado:

cp /etc/fstab ~

uma vez que o til (~) representa o diretório home do


usuário ativo.

 Pode-se utilizar o caractere ponto ( . ), caso o diretório


destino seja o diretório corrente:

cp /etc/fstab .

 Caso o diretório de origem seja o corrente:

cp ./fstab ~

Neste caso, o ponto ( . ) substitui “/etc” e o til substitui o


diretório home do usuário hue (/usr/lib/hue).

 Caso o diretório de origem e destino sejam o corrente:

cp ./fstab .

Neste caso, o caractere ponto ( . ) substitui “/etc”.

Comando: mv

 Move um arquivo (ou um conjunto de arquivos) de um


diretório (origem) para outro (destino). Também é utilizado
para renomear um arquivo (ou diretório).

Comando: rmdir

 Remove (exclui) um diretório (que deve estar vazio).


Comando: rm

 Apaga um arquivo.

Exemplo:

rm arq_texto

 Apaga o arquivo arq_texto do diretório atual.

rm -i arq_texto

 Apaga o arquivo arq_texto do diretório atual somente


se for confirmada ( y ) a remoção.

rm –f arq_texto

 Apaga o arquivo arq_texto do diretório atual sem


solicitar confirmação.

rm –r ./teste

 Apaga os arquivos do diretório teste (subdiretório do


diretório atual; observe o caractere ponto antes da
barra) e de todos os seus subdiretórios.

rm –rf ./teste

 Apaga os arquivos do diretório teste (subdiretório do


diretório atual; observe o caractere ponto antes da
barra) e de todos os seus subdiretórios sem solicitar
confirmação. Tenha muito cuidado ao utilizar a opção
“r” junto com a opção “f”. Ainda mais se você efetuou
login no sistema como root.
Comando: grep

 Pesquisa texto em arquivo. A opção “i” faz com a diferença


entre maiúscula e minúscula seja ignorada:

grep –i texto_a_pesquisar nome_do_arquivo

Por exemplo, para saber se há a ocorrência do texto


“devpts” em todos arquivos (*) do diretório “/etc”, executa-
se:

grep –i devpts /etc/*

A opção “i” exibe, além do nome do arquivo, o conteúdo da


linha onde o texto ocorre. Para exibir somente o nome do
arquivo, utiliza-se a opção “l” (L minúsculo):

grep -il devpts /etc/*

Comando: sudo

 Permite a um usuário executar comandos como root (deve-


se conhecer a senha deste).

Exemplo: Supondo que você efetuou login como usuário não


root (no caso deste trabalho, como “hue”), a execução do
comando:

grep –i devpts /etc/*

produziu várias mensagens de “Acesso não permitido”


(Permission denied), pois há arquivos que “hue” não possui
permissão de leitura. Para que “hue” possa pesquisar os
conteúdos de todos os arquivos, deve-se solicitar que o
superusuário (su) faça (do) o trabalho:

sudo grep –i devpts /etc/*


Comando: ps

 Lista todos os processos em execução. Com a opção “e”


tem-se os identificadores de cada processo.

Exemplo:

ps –e

Comando: |

 O comando pipe (representado pelo caractere que, em geral,


fica na mesma tecla do caractere barra invertida “\”) permite
a comunicação interprocessos, enviando o resultado de um
processo para utilização do processo seguinte (após o pipe).
Por exemplo, desejando-se saber se há processo java em
execução, a listagem de “ps –e” é entregue ao comando
“grep”, que filtra a ocorrência do texto “java”:

ps –e | grep –i java

Comando: kill

 Encerra um processo em execução (cujo PID pode ser obtido


pelo comando ps). A opção “-9” encerra o processo
instantaneamente.

Exemplo: Supondo que um processo tem PID igual a 1962, e


deseja-se encerrar esse processo:

kill -9 1962
Comando: &

 Permite que um processo seja executado em segundo plano,


liberando o terminal para um novo processo (multitarefa).

Exemplo: Supondo que se deseja executar o arquivo binário


(hipotético) de nome “teste” em segundo plano:

teste &

Comando: df

 Exibe o espaço (total/ocupado/livre) em disco. A opção “h”


fornece uma leitura mais fácil de ler, representando o total
de bytes em “K”, “M” ou “G”).

Exemplo:

df -h

Comando: shutdown

 Permite ao superusuário finalizar a execução do SO. Com a


opção “h” pode-se terminar após uma quantidade de
minutos especificada, por exemplo, 10 minutos:

shutdown –h 10

ou, imediatamente:

shutdown –h now
Comando: ln

 Cria um link direto (hard link) para arquivos (não é


permitido criar links diretos para diretórios). Dessa forma, o
arquivo passa a ter mais de um nome, e, se ele for
removido, a sua “cópia de segurança” continuará válida.

Antes de explicar esse comando, crie um arquivo texto


contendo a listagem do diretório home do usuário “hue”; em
seguida, liste o diretório no formato longo:

ls > arq

Crie, agora, um link direto e o associe ao arquivo arqLD:

ln arq arqLD

Já a opção “s” (para arquivos ou diretórios) faz com que seja


criado um link simbólico (atalho). Se o arquivo para o qual o
link simbólico aponta for removido, o link simbólico fica
inutilizável (link quebrado).

Crie, agora, um link direto e o associe ao arquivo arqLD:

ln –s arq arqLS

Pronto! Agora, execute o comando: ls –li arq*.

Na listagem exibida pelo sistema, veem-se os dois arquivos


(o original e seu link direto), sendo que a opção “i” exibe o
inode (index node é o número de identificação único do
arquivo no sistema de arquivos do Linux) como primeira
informação.

Figura 3: Inode do arquivo arq e de seu link direto arqLD


Observe que arq e arqLD possuem o mesmo inode
(2372284), demonstrando tratarem-se do mesmo arquivo.
Já o inode de arqLS (2372286) demonstra que se trata de
outro arquivo, diferente de arq e de arqLD.

Por último, exclua arq e liste o diretório novamente:

rm arq

ls –li arq*

Figura 4: Exibição de um link quebrado

Observe que o link simbólico está “quebrado”, pois o arquivo


original foi removido. Em compensação, o link direto,
arqLD, continua válido, e pode ser manipulado
normalmente (por exemplo, criando-se novo link direto por
segurança).

Entretanto, copiar o link direto por meio do comando cp, faz


com que seja criado um novo arquivo (inode diferente). Por
exemplo, observe os inodes diferentes caso seja adotado
este procedimento:

cp arqLD arq1

ls –li arq*

Figura 5: Inode dos arquivos arq1 e arqLD


Permissões de arquivo

Todo arquivo (todo diretório também, haja vista que um diretório


é considerado um arquivo pelo Linux) possui três níveis de permissão.
Para entender melhor o conceito, execute o comando:
ls –l /etc/fstab
no que o sistema exibe:

Figura 6: Exibição das permissões do arquivo fstab

Esta linha:

- r w - r - - r - - 1 root root 783 2014-12-16 20:24 /etc/fstab

Traz as seguintes informações:

- rw- r-- r-- 1 root root ... /etc/fstab

1 2 3 4 5 6 7 8 9

1: Se é arquivo (-), diretório (d) ou um link (l).


2: Permissões do usuário dono (owner) sobre o arquivo.
3: Permissões do grupo do usuário proprietário sobre o arquivo.
4: Permissões de outros usuários que não sejam o proprietário, ou que
não estejam no grupo, sobre o arquivo.
5: Quantidade de links diretos.
6: Dono (proprietário) do arquivo.
7: Grupo do dono do arquivo.
8: Tamanho (bytes), data e hora de criação/modificação do arquivo.
9: nome (com o caminho) do arquivo.
Para cada nível (dono, grupo e outros) existem três tipos permissões:

r : Leitura (read). Pode visualizar o conteúdo do arquivo.

w : Escrita (write). Pode alterar o conteúdo do arquivo.

X : Execução (eXecution). Pode executar o arquivo.

No exemplo fornecido (figura 6), vê-se que o arquivo fstab,


localizado em /etc pode ser lido e alterado pelo root (dono do arquivo),
somente lido pelo grupo do dono (o nome do grupo também é root) e
por outros usuários. A figura 7 exibe dois arquivos e um link no diretório
home do usuário:

Figura 7: Permissões

Observe que o arquivo arq1 e o link direto arqLD, podem ser lidos e
alterados (editados), tanto pelo dono (hue), como pelo grupo (hue). Os
demais usuários só podem ler seu conteúdo. Já o link simbólico arqLS
pode ser lido, alterado e executado por todos os usuários.
As permissões podem ser alteradas tanto para o usuário dono
(u = user), como para o grupo (g = group) e para outros usuários
(o = others) pelo comando chmod. O sinal de mais (+) adiciona uma
permissão e o sinal de menos (-) remove uma dada permissão.
Para exemplificar, caso um arquivo chamado “teste” tenha as
seguintes características:

-rw-rw-r-- 1 hue hue 198 2016-06-30 02:33 teste

Executar:
chmod u-w+x,g-r+x,o+wx-r teste

faz com que uma nova listagem longa produza:

-r-x-wx-wx 1 hue hue 195 2016-06-30 03:32 teste

Você também pode gostar