Você está na página 1de 17

Departamento de Formação

A história do Linux
O Kernel do Linux foi, originalmente, escrito por Linus Torvalds do Departamento de
Ciência da Computação da Universidades de Helsinki, Finlândia, com a ajuda de vários
programadores voluntários através da Internet. Linus Torvalds iniciou cortando (hacking)
o kernel como um projeto particular, inspirado em seu interesse no Minix, um pequeno
sistema UNIX desenvolvido por Andy Tannenbaum. Ele se limitou a criar, em suas próprias
palavras, "um Minix melhor que o Minix" ("a better Minix than Minix"). E depois de algum
tempo de trabalho em seu projeto, sozinho, ele enviou a seguinte mensagem para
comp.os.minix:

Suspiras por melhores dias do Minix-1.1, quando homens serão homens e escreverão seus
próprios "device drivers" ? Estás sem um bom projecto e estas a morrer por colocar as
mãos em um S.O. no qual possas modificar de acordo com tuas necessidades ? Estás a
achar frustrante quando tudo trabalha em Minix ? Chega de atravessar noites para obter
programas que trabalhem como deve ser ? Então esta mensagem pode ser exatamente
para ti.

Como eu mencionei há um mês atrás, estou a trabalhar numa versão independente de


um S.O. semelhante ao Minix para computadores AT-386. Ele está, finalmente, próximo
do estado em que poderá ser utilizado (embora possa não ser o que estejas à espera), e
eu estou disposto a colocar as fontes para ampla distribuição. Ele está na versão 0.02...
contudo eu tive sucesso a correr bash, gcc, gnu-make, gnu-sed, compressão, etc. nele.

No dia 5 de outubro de 1991 Linus Torvalds anunciou a primeira versão "oficial" do Linux,
versão 0.02. Desde então muitos programadores têm respondido ao seu chamamento, e
têm ajudado a fazer do Linux o Sistema Operativo que é hoje, uma grande maravilha.

Linux = Unix ?
Limpo, claro e definitivo: O Linux NÃO é UNIX.
O Linux É *um* Unix.

Deves estar a pensar, ok, esta malta é doida... mas calma, não é bem assim :-)

O UNIX é uma marca registrada do Unix Lab (parece que andou mudando de nome e até
fechado. Alguem sabe algo mais certo ? ). Todos os sistemas baseados naqueles códigos
são chamados de uma forma geral de UNIX.

O Linux foi escrito desde o inicio pelo Linus Torvalds e não contem nenhuma linha de
codigo do UNIX. Mas o Linux foi escrito para ser conforme o padrao POSIX, que deve ser
o padrão da API (Application Programming Inteface) Unix, que em última análise pode
ser resumido (forcando um pouco a barra) como sendo as chamadas do sistema. Por isto
se diz que o Linux é *um* Unix (não UNIX ). Tem uma diferença sutil aí.

1
Miguel Costa
Ambiente Linux

2005  Gondomar
Departamento de Formação

Por causa da API POSIX, do conjunto de utilitarios (FSF/GNU em sua maioria) e do uso do
X-Windows ( XFree / Xorg ) o Linux é tao parecido com o UNIX que existem empresas que
usam o Linux para desenvolver para UNIX que não seja o dela mesma (por exemplo a IBM
e a Microsoft ). Veja que a Microsoft está a tentar tranformar o NiceTry num Unix ( ela
espera que algum dia no futuro seja um Unix melhor que o Unix - algo assim como o
Linux ;)), e para isto está aproximando-o do padrao POSIX.

Caracteristicas
Portabilidade
Embora Linus Torvalds não tenha tido como objectivo inicial tornar o Linux um sistema
portável, ele evoluiu nessa direcção. Linux é hoje, na verdade, um dos kernels de
sistema operativo mais portados, a correr em sistemas desde o iPaq (um computador
portátil) ou mesmo em consolas de jogos até o IBM S/390 (um massivo e altamente caro
mainframe)
De qualquer modo, é importante notar que os esforços de Linus foram também dirigidos
a um diferente tipo de portabilidade. Portabilidade, de acordo com Linus, era a
capacidade de facilmente compilar aplicações de uma variedade de fontes no seu
sistema; portanto o Linux originalmente tornou-se popular em parte devido ao esforço
para que as fontes GPL ou outras favoritas de todos funcionassem no Linux.

O que é a GPL?

Em 1985 foi criada a F.S.F. ( Free Software Foundation) com a finalidade de desenvolver
e proteger o software livre.
A G.P.L. ( General Public License) foi criada pela F.S.F. para proteger o software livre.
Esta licença – Licença Pública Geral – tem como finalidade o uso livre e generalizado do
software que é dela portador. Este pode ser usado, copiado e distribuído sem restrições,
mantendo-se sempre o respeito e o reconhecimento pelo seu autor, num processo que
assenta basicamente, em três regras:
– o software livre pode ser distribuido e comercializado por qualquer pessoa, sendo
obrigação do distribuidor avisar quem o recebe, acerca dos termos da G.P.L.;
– qualquer software derivado de outro, que esteja protegido pela G.P.L, está também
abrangido pela mesma licença;
– o código fonte de todo o software protegido pela G.P.L. tem que ser acessível ao
público, quer directamente, no acto da distribuição, quer através de uma forma
grátis de o obter, como por exemplo através da internet.

O que é o Open Source?


O termo Software Livre refere-se ao software que são fornecidos aos seus utilizadores
com a liberdade de executar, estudar, modificar e repassar (com ou sem alterações)
sem que, para isso, os utilizadores tenham que pedir permissão ao autor do programa.

2
Miguel Costa
Ambiente Linux

2005  Gondomar
Departamento de Formação

Em geral, Software Livre se assemelha a domínio público, embora haja certas


diferenças. Entretanto, um software em domínio público pode ser considerado como um
Software Livre, como podemos ver pela definição de Software Livre abaixo:
A maioria dos softwares livres é licenciada através de uma licença de software livre,
como a GNU GPL.
Mais precisamente, Software Livre se refere a quatro tipos de liberdade para os
utilizadors do software, definidas pela Free Software Foundation:
1. A liberdade de executar o programa, para qualquer propósito (liberdade nº 0)
2. A liberdade de estudar como o programa funciona, e adaptá-lo para as suas
necessidades (liberdade nº 1). Acesso ao código-fonte é um pré-requisito para esta
liberdade.
3. A liberdade de redistribuir cópias de modo que a possas ajudar o teu próximo
(liberdade nº 2).
4. A liberdade de aperfeiçoar o programa, e publicar os seus aperfeiçoamentos, de
modo que toda a comunidade seja beneficiada (liberdade nº 3). Acesso ao código-
fonte é um pré-requisito para esta liberdade.
Notem que os quatro itens acima não fazem nenhuma referência a custos ou preços.
O fato de se cobrar ou não pela distribuição ou pela licença de uso do software não
implica diretamente em ser o software livre ou não.
Nada impede que uma cópia adquirida por você seja revendida, tenha ela sido
modificada ou não por você.
Softwares Livres distribuídos sob uma licença como a GPL seguem um conceito
conhecido como Copyleft, que se baseia na propagação dos direitos. Ou seja, um
software livre sem copyleft pode ser tornado proprietário por um utilizador. Já um
software livre protegido por uma licença que ofereça Copyleft deverá, se distribuído,
ser distribuído sob a mesma licença, ou seja, repassando os direitos. Em todo caso, não
é necessário redistribuir um software livre modificado.
A liberdade de utilizar um programa significa a liberdade para qualquer tipo de pessoa
física ou jurídica utilizar o software em qualquer tipo de sistema computacional, para
qualquer tipo de trabalho ou atividade, sem que seja necessário comunicar ao
programador ou a qualquer outra entidade em especial.
A liberdade de redistribuir deve incluir a possibilidade de se repassar tanto os códigos-
fonte quanto os ficheiros binários gerados da compilação desses códigos, quando isso é
possível, seja o programa original ou uma versão modificada. Não é preciso pedir
autorização do autor ou do distribuidor do software para que ele possa ser redistribuido,
já que as licenças de software livre já dão prévia autorização.
Para que seja possível modificar o software (para uso particular ou para distribuir) é
necessário ter o código-fonte. Por isso o acesso aos fontes é pré-requisito para a
3
Miguel Costa
Ambiente Linux

2005  Gondomar
Departamento de Formação

liberdade do software. Caso ele não seja distribuido junto com os executáveis, deve ser
disponibilizado num local onde possa ser descarregado, ou deve ser entregue ao
utilizador, se solicitado, sem custos adicionais (ou cobrando-se apenas transporte e o
suporte físico para guardar os dados).

Estrutura de Ficheiros do Linux


Bem, a estructura de diretórios de um linux é mostrada nesta tabela:

bin - Ficheiros executáveis(binários) de comandos essenciais pertencentes ao sistema


que são usados com frequência.
boot - Ficheiros estáticos de boot de inicialização(boot-loader)
dev - Ficheiros de dispositivos de entrada/saída
etc - Configuração do sistema da máquina local com ficheiros diversos para a
administração de sistema.
home - Directórios local(home) dos utilizadores
lib - Ficheiros de biblilotecas partilhadas usados com frequência
root - Directório local do superutilizador (root)
sbin - Ficheiros de sistema essenciais
tmp - Ficheiros temporários gerados por alguns utilitários
usr - Todos os ficheiros de utilizadores devem estar aqui
var - Informação variável
mnt ou media - Ponto de montagem de partições/dispositivos

Nota: Em Linux não existem partições definidas a partir de uma unidade, em Linux
poder-se-ão montar discos locais ou mesmo partilhas de servidores localizados no outro
lado do mundo, podendo montar num qualquer sitio da nossa estructura de directórios a
partir do nosso directório raiz, isto não quer dizer que não devemos utilizar as normas
para montar no nosso sistema, por norma fazemos isso montando para um determinado
directório dentro de /media ou /mnt.
SHELLS
Uma shell é um interface entre utilizador e máquina. O kernel do linux por si só gere a
comunicação com a máquina, mas para haver uma comunicação com o utilizador é
necessária um software de aplicação que permita um interface entre utilizador, núcleo
( kernel ) e máquina.

UTILIZADOR SHELL KERNEL HARDWARE

Diferença entre shells gráficas e não gráficas ( linha de comandos ):


A principal diferença entre uma shell gráfica e uma não gráfica, ou linha de comandos
( “consola” ) está na comunicação com a mesma. Passo a explicar, com uma linha de
comandos é necessária uma aprendizagem maior na comunicação com ela, quanto que
com uma shell gráfica ( numa distribuição Linux utiliza-se o sistema gráfico X11, o Xfree
4
Miguel Costa
Ambiente Linux

2005  Gondomar
Departamento de Formação

ou o Xorg ), é necessário decorar comandos para o sistema operativo executar. Com o


sistema gráfico com um ambiente de janelas ( exemplo: KDE ) a linha de aprendizagem é
práticamente nula por comparação com uma não gráfica, vulgarmente utilizamos a gíria
do “point n' click” ao utilizar um sistema destes.
Shell Gráfica
Como já foi dito, numa distribuição Linux utilizamos o sistema gráfico X11 ( utilizando-se
vulgarmente o software aplicativo Xorg ou Xfree ) mas isto não basta para comunicarmos
convenientemente com o núcleo para fazermos a máquina trabalhar para nós, para isso
criaram-se ambientes de janelas, sistemas destinados a trabalharem com a nossa shell
gráfica, poderemos olhar para o X11 como um núcleo de uma shell gráfica.
Um dos ambientes de janelas mais utilizados em Linux é o KDE.
Poderemos olhar para como a comunicação é feita seguindo o diagrama:

KDE X11 KERNEL HARDWARE

O trabalho com o KDE é muito semelhante a outros ambientes gráficos conhecidos em


outros sistemas operativos como o MS Windows, havendo claro algumas diferenças,
suscitando algumas como o caso dos vários Desktops Virtuais, ou a barra de tarefas que
ao clicar é recolhida. Este foi um ambiente gráfico feito para ser em tudo confortável a
sua utilização, os utilizadores habituados ao MS Windows não deverão enfrentar
dificuldades ao trabalhar com um ambiente de janelas como este, claro está, este
poderá ser modificado de acordo com os gostos do utilizador, e, para quem for mais
exigente, poderá experimentar os diferentes Ambientes de Janelas que existem para
Linux. Há todo um mundo para experimentar, poderemos ter desde ambientes mais
simples, limpos e rápidos, até ambientes de janelas a 3 dimensões, é tudo uma questão
de gosto, e adaptabilidade ambiente-utilizador.

Gestor de Ficheiros
Um gestor de ficheiros é parte integrante de um Ambiente Gráfico, este serve para
podermos gerir os ficheiros no nosso computador, podendo estes estar em discos rígidos
ou amoviveis ( como pens, dvds, etc ) ou mesmo em partilhas de ficheiros através de um
software para servidor como o samba.
No KDE utilizamos o Konqueror como gestor de ficheiros, é um pouco como o explorer do
windows, permitindo-nos ainda mais funções nativas de um sistema operativo baseado
em unix, como as ligações a ficheiros.

5
Miguel Costa
Ambiente Linux

2005  Gondomar
Departamento de Formação

A Consola Linux
A utilização da linha de comandos em Linux remonta aos velhos unixes, mas de nada tem
de velho a utilização da consola. Com a consola em Linux conseguimos quase fazer tanta
coisa como fazemos nas shells gráficas (como no ambiente gráfico KDE) de uma forma
mais rápida.
A aplicação shell mais utilizada em Linux é a Bash, de seguida vamos aprender a utilizar
os comandos básicos a utilizar numa consola Linux.

Comandos Básicos na Consola Linux


cd – Mudar de Directório.
cp – Copiar ficheiros ( para copiar directorios é necessário dar o
parametro de recursividade, -r).
mkdir – Criar Directórios
rm – Remover Ficheiros/Directórios ( Para remover um directório é
necessário dar o parametro de recursividade, -r)
mv – Mover Ficheiros e Directórios ( este comando pode ser usado
para alterar o nome de ficheiros ou directórios ).
ls – Listar um directório.
ps – Listar processos
ln – Criar ligações a ficheiros ou directórios.
pwd – Devolve o caminho actual.
su – Alternar entre utilizadores.

Manuais na Consola Linux


man e info - Estes comandos servem para aceder à página do manual de cada
aplicação, sendo o segundo de uma abordagem menos ampla e mais directa à aplicação.
Exemplo: man ls

6
Miguel Costa
Ambiente Linux

2005  Gondomar
Departamento de Formação

Criar Ligações a Ficheiros / Directórios


Uma ligação serve para estabelecer uma ponte entre um ficheiro para uma determinada
localização.
Exemplo:
ln -s /home/xkform/Documentos /home/xkform/Desktop/Documentos
Este comando estabeleceu uma ligação simbólica do directório documentos no directório
de utilizador do utilizador xkform para o directório do Ambiente de Trabalho,
automaticamente tudo o que guardarmos dentro de
/home/xkform/Desktop/Documentos será enviado para /home/xkform/Documentos,
sem haver uma ocupação no espaço fisico da memória secundária ( disco rígido, etc ).
No nosso ambiente de janelas KDE, poderemos fazer o mesmo ao arrastar o
directório/ficheiro para a localização pretendida, este perguntar-nos-á sempre o que
queremos fazer com esse ficheiro/directório.
Nota: Não confundir ligações com atalhos, os atalhos apenas são ficheiros com
instruções de arranque para uma determinada aplicação ou abertura de um directório
( Exemplo: konqueror )

Exercicios:
1.0) Abre uma linha de comandos e cria um directório com o nome “Documentos” em
“/home/xkform/”. Cria uma ligação desse directório para o teu Desktop
( “/home/xkform/Desktop”).
1.1) Abre o Processador de Texto do OpenOffice, escreve o nome completo do teu
colega do lado e guarda-o dentro do directório Documentos no Desktop
(“/home/xkform/”) com o nome colegadolado.odt
1.2) Fecha e abre o documento a partir da ligação no Desktop e verifica que é possivel
aceder ao mesmo ficheiro a partir da ligação, depois, volta a fechar o documento.
1.3) Apaga o Directório “Documentos” do teu Desktop e cria uma ligação para o ficheiro
omeucolegadolado.odt para o Desktop a partir do konqueror no KDE em ambiente
gráfico, acede novamente ao ficheiro.

Manipulando Utilizadores
Para adicionar um utilizador em seu sistema, deverás proceder
assim:

- Digita o comando 'adduser';


- O sistema vai pedir o Login, escolha-o;
- Depois vai pedir uma série de coisas, carrega em enter até aparecer 'password';
- Escolha o password e pronto. O utilizador foi registado no ficheiro /etc/passwd, e password
encriptada em /etc/shadow.

Se este utilizador quiser aceder ao login de outros utilizadores, o seguinte


comando deverá ser usado: su (utilizador)

Depois de ter digitado isso, o sistema vai pedir o password do (utilizador),

7
Miguel Costa
Ambiente Linux

2005  Gondomar
Departamento de Formação

coloque-o e assim poderás aceder a tudo o que o outro acede.


Para sair desse 'acesso' ao seu login normal, digita 'exit'.

Obs: O utilizador root é o administrador do sistema, ou seja, ele controla


TUDO. Aliás, ele que dá as permissões para outros utilizadors. Então lembra-te
se você fores registar um utilizador terás de estar com o poder do root.

Para apagar um utilizador, deve-se proceder assim:

deluser ( utilizador )

Dica: É aconselhável adicionares um login diferente de root, para que não faças nenhuma
'asneira sem querer' ao usar o login do root, mas quando quiseres utilizar o root como utilizador,
utiliza o comando 'su', que poderás ver logo acima.

Criar outro utilizador com o poder de root:

Procede assim:

- Faz os procedimentos para criar um utilizador normal;


- Edita o /etc/passwd com um editor de texto comum;
- Vai até à linha do utilizador e edita para:
(utilizador):x:0:0:(Home):(Shell) e pronto

Então o utilizador terá todo o poder do root por omissão.

Alternar entre utilizadores:


Para alternar entre utilizadores utilizamos o comando su
Exemplo:
su – xkform (este comando fará entrar na linha de comandos com o utilizador xkform)

Permissões
Para saber se um programa é executavel ou não, execute um 'ls -l' e veja
no lado esquerdo se o ficheiro tem X nos seus argumentos, como
no exemplo abaixo:

drwxr-xr-x 2 root root 1024 Dec 23 15:22 bin


drwxr-xr-x 2 root root 1024 Dec 31 05:48 boot
drwxr-xr-x 2 root root 1024 Dec 6 15:51 cdrom
drwxr-xr-x 3 root root 8192 Mar 11 10:17 dev
drwxrwxr-x 2 root root 1024 Feb 27 13:52 dosa
dr-xr-xr-x 11 root root 2048 Mar 11 10:19 etc
drwxr-xr-x 11 root root 2048 Feb 23 19:08 home
drwxr-xr-x 3 root root 1024 Feb 23 19:13 lib
drwxr-xr-x 2 root root 12288 Nov 2 11:25 lost+found
-rwxr--r-- 1 root root 57 Mar 10 03:44 make-backup
8
Miguel Costa
Ambiente Linux

2005  Gondomar
Departamento de Formação

-rw-rw-r-- 1 xkform users 2342 Mar 10 03:12 teste.txt


-rw-rw-rw- 1 fernando visits 23412 Mar 09 22:22 teste2.doc

No exemplo acima todos os ficheiros tem como dono root e como grupo também root, com
excepção do 'teste.txt' que o dono é 'xkform' e o grupo é 'users', e também 'teste2.doc', no qual
'fernando' é o dono e o grupo 'visits' também é dono.
Como você pode ver do lado esquerdo de cada ficheiro/diretório existe um série de letras r, w, x
ou d! Vamos ver o que representa cada uma delas:

drwxrwxrwx
0111222333

No caso acima, a primeira coluna significa (numero 0) se o nome


listado eh um diretório ou não, caso não seja um diretório ele será
exibido da seguinte maneira:

-rwxr--r-- 1 root root 57 Mar 10 03:44 make-backup


|
\-----------> Não contém a letra 'd', não é diretório, e sim ficheiro!

O exemplo abaixo mostra o que seria um diretório:

drwxr--r-- 1 root root 1 Mar 10 01:12 bin


|
\-----------> Contém a letra 'd' na primeira coluna, é um diretório!

Continuando, na segunda coluna (numeros 1 de acordo com o exemplo mais


acima) temos as definições para o dono do ficheiro, como mostra o exemplo:

-rwxr--r-- 1 xkform users 1231 Mar 09 12:12 teste.txt


|||
||\--------> O dono do ficheiro (xkform) pode executar o ficheiro,
x=executable!
|\---------> O dono do ficheiro (xkform) pode gravar no ficheiro,
w=writable!
\----------> O dono do ficheiro (xkform) pode ler o ficheiro,
r=readable!

Seguindo, na terceira coluna (numeros 2 de acordo com o exemplo lá de cima) temos as


definições para o grupo que é dono do ficheiro, como mostra o exemplo:

-r--rwxr-- 1 fernando visits 212 Mar 01 12:42 exemplo.doc


|||
||\-----> O grupo dono do ficheiro (visits) pode executar o ficheiro!
|\------> O grupo dono do ficheiro (visits) pode gravar no ficheiro!
\-------> O grupo dono do ficheiro (visits) pode ler o ficheiro!

9
Miguel Costa
Ambiente Linux

2005  Gondomar
Departamento de Formação

Finalmente, temos a quarta coluna (composto pelos numeros 3), essa coluna refere-se às
permissões para todos os outros utilizadors do sistema, sem ser os donos e grupos-donos
dos mesmos, exemplo:

-r--r--rwx 1 fernando visits 1231 Mar 03 12:42 exemplo2.doc


|||
||\-->Todos os utilizadores (excepto fernando e utilizadores do
grupo visits) têm permissão para aceder ao ficheiro!
||
|\--->Todos os utilizadores (excepto fernando e utilizadores do
grupo visits) têm permissão para gravar no ficheiro!
|
\---->Todos os utilizadores (inclusivé fernando e utilizadors do
grupo visits) têm permissão para ler o ficheiro!

Quando nos referimos a directório invés de ficheiros, o FLAG x (executável) diz se o


diretório é ou não acessível, já que não podemos "EXECUTAR" diretórios... Exemplo:

drwxr--r-- 1 root root 2134 Mar 01 12:54 exemplo3


||||| |
||||| \---->Todos os utilizadors podem ler o interior do diretório, mas
não podem usar o comando 'cd' para entrar nele, pois não existe o FLAG
'x' para a quarta coluna!
|||||
||||\------->utilizadores do grupo 'root' podem ler o interior do
directório, mas também não podem usar 'cd' para entrar no diretório!
||||
|||\-------->O utilizador 'root' pode usar 'cd' para entrar no diretório!
||\--------->O utilizador 'root' pode gravar ficheiros nesse diretório!
|\---------->O utilizador 'root' pode ler o interior desse diretório!
\----------->Indica que o nome listado é um diretório!

O comando chmod pode ser usado para mudar os FLAGS 'rwx' dos ficheiros e/ou diretórios, a
sintaxe básica é:

chmod [ugoa]{-+}[rwx] nome_do_ficheiro_ou_diretório

Exemplo:

chmod u+rw ficheiro1.txt

No exemplo mudarás a permissão para o dono do ficheiro (u = user) pode ler e gravar (rw) no
'ficheiro1.txt'...
Caso queiras desfazer o comando, farias assim:

chmod u-rw ficheiro1.txt

10
Miguel Costa
Ambiente Linux

2005  Gondomar
Departamento de Formação

Como se vê, o + ou - define se os FLAGS serao ativados ou desativados!


Outros exemplos:

chmod a+r ficheiro2.txt (Todos utilizadors (a=all) podem ler o 'ficheiro2.txt')


chmod o+w ficheiro3.txt (Outros utilizadors (o=others) sem ser o dono e o grupo dono
do ficheiro, podem gravar o 'ficheiro3.txt')
chmod g+x firefox (O grupo-dono do ficheiro (g=group) pode executar o ficheiro
'netscape')

O comando chmod pode também ser usado com números, em vez dos flags,
como mostra o exemplo:

chmod 664 ficheiro.txt

O que quer dizer cada um desses números? Veja abaixo:

R (Readable) 4
W (Writable) 2
X (Executable) 1

se quiseres que por exemplo o dono tenha permissão a tudo e o grupo e outros
tenham permissao para somente ler e executar.faça o seguinte:
Comando para permissões: CHMOD
Sintaxe: chmod (soma) ficheiro (ficheiro em questão)

entao ficará assim


a primeira é alterada automaticamente pois só determina
o que é (pasta ou ficheiro)

Classe Perm. P/ Perm. P/ Perm. P/


do ARK Dono Grupo Outros
- - - - - - - - - -
4 2 1 4 1 4 1
\ | / \ | / \ | /
7 5 5
A seguir digita a todas as somas de cada grupo juntas:
no caso ficará assim: chmod 755 ficheiro

No exemplo o comando informou que o 'ficheiro.txt' pode ser lido e gravado pelo seu dono
(numero 6 na primeira coluna), informou que pode também ser lido e gravado pelos utilizadores
que compõem o grupo-dono (numero 6 na segunda coluna), e informou que pode ser lido por
todos os outros utilizadores do sistema (numero 4 na ultima coluna).
11
Miguel Costa
Ambiente Linux

2005  Gondomar
Departamento de Formação

Comando para mudar o dono: CHOWN


Sintaxe: chown novodono.novogrupo ficheiro (ficheiro em questão)
Comando para mudar apenas o grupo dono: CHGRP
Sintaxe: chgrp novogrupo ficheiro (ficheiro em questão)
Comando que identifica o seu grupo: GROUPS
Sintaxe: groups

O comando chown é simples e pode ser usado da seguinte maneira:

chown utilizador.grupo nome_do_ficheiro_ou_diretório

Como exemplo, vamos definir que um ficheiro 'teste4.txt' terá como dono 'xkform' e como grupo
'users':

chown xkform.users teste4.txt

Outros exemplos:

chown mrdvs.visits teste5.txt


chown jackie.jackie teste6.txt

Exercicios:

1) Vamos agora por em prática o que aprendemos sobre permissões, para tal vamos
pegar no ficheiro que deverá estar préviamente em
“/home/xkform/FORMPERM/exerc”, e tendo em conta que o utilizador xkform2
está no mesmo grupo, vamos pretender que o mesmo consiga executar o mesmo
ficheiro a partir da mesma localização.O trabalho deverá ser trabalhado em
consola, verificando depois o resultado a partir das propriedades do ficheiro em
ambiente gráfico, com o gestor de janelas KDE, utilizando o konqueror para o
devido efeito.
Ao terminar o exercicio, o trabalho deverá ser verificado, bastando para isso que
alternem para o utilizador xkform2 utilizando o comando su, e executem a partir
desse utilizador o ficheiro indicado para o exercicio. Deverá aparecer uma
mensagem que vos congratula o final do exercicio. :-)
2) Pretendemos que apenas o utilizador xkform2 consiga escrever e executar no
ficheiro e que o utilizador xkform consiga ler o ficheiro indicado no exercicio 1.0.
3) Pretendemos agora que apenas o utilizador xkform consiga escrever e executar
no ficheiro e que o utilizador xkform2 consiga ler o ficheiro indicado no exercicio
1.0.

12
Miguel Costa
Ambiente Linux

2005  Gondomar
Departamento de Formação

4) Agora o utilizador xkform2 vai ter de conseguir copiar o ficheiro indicado no


exercicio 1.0 para “/home/xkform2/exerc” e a partir dessa localização, vai ter de
o poder executar sem lhe poder escrever.
5) Vamos querer agora que o utilizador xkform2 possa escrever no ficheiro indicado
no exercicio 4.0 sem o poder executar. Agora testamos as permissões de escrita
com o comando:
echo “echo 'Finalmente termino os meus exercicios sobre
permissões'” >> /home/xkform2/exerc
este comando irá adicionar o comando echo com a frase “Finalmente termino os
meus exercicios sobre permissões” ao ficheiro.
6) Vamos dar as permissões de execução para o utilizador xkform, este deverá
conseguir correr o ficheiro a partir da localização /home/xkform2/exerc, sem lhe
conseguir fazer alterações. Finalmente testamos a execução do ficheiro com o
comando: /home/xkform2/exerc ou com: cd /home/xkform2 &&
./exerc

Processos
A noção de um processo é uma chamada a uma aplicação. Um processo ao ser executado
num sistema Linux gera um PID. Um PID é a identificação de um processo, em suma, um
número que identifica uma chamada a uma aplicação. Num terminal de Linux
conseguimos ver a lista de processos a serem executados atraves do comando ps, ao
executar o comando ps sem lhe dar nenhum argumento, ele apenas nos devolve o
processo executado a partir do terminal em que estamos. Para nos ser devolvida a lista
de processos a serem executados pelo utilizador, temos de utilizar o argumento -x ou x.

Exemplo:
xkform@XK4:~$ ps x
PID TTY STAT TIME COMMAND
6605 ? Ss 0:00 gpg-agent --daemon
6650 ? S 0:00 /usr/lib/gamin/gam_server
6817 ? Ss 0:00 gpg-agent --daemon
6872 ? S 0:00 /usr/bin/ivman -s --nofork
7018 ? Ss 0:00 gpg-agent --daemon
7072 ? S 0:00 /usr/bin/ivman -s --nofork
7218 ? Ss 0:00 /bin/sh /usr/bin/startkde
7263 ? Ss 0:00 gpg-agent --daemon
7267 ? Ss 0:00 /usr/bin/ssh-agent /usr/bin/dbus-launch
--exit-with-s 7270 ? S 0:00 /usr/bin/dbus-launch --
exit-with-session /usr/bin/sta 7271 ? Ss 0:00 dbus-
daemon --fork --print-pid 8 --print-address 6 -- 7296 ? Ss
0:00 kdeinit Running...
7299 ? S 0:00 dcopserver [kdeinit] --nosid
7301 ? S 0:00 klauncher [kdeinit]
7304 ? S 0:00 kded [kdeinit]
13
Miguel Costa
Ambiente Linux

2005  Gondomar
Departamento de Formação

7309 ? S 0:00 kaccess [kdeinit]


7316 ? S 0:00 kxkb [kdeinit]
7317 ? S 0:00 /usr/bin/ivman -s --nofork
7318 ? S 0:00 kwrapper ksmserver
7320 ? S 0:00 ksmserver [kdeinit]
7323 ? S 0:00 kwin [kdeinit]
7336 ? S 0:02 kdesktop [kdeinit]
7338 ? S 0:00 kicker [kdeinit]
7340 ? S 0:00 klipper [kdeinit]
7342 ? S 0:00 kio_file [kdeinit] file /tmp/ksocket-
xk/klauncher7lA8 7344 ? S 0:00 kbluetoothd --
dontforceshow
7347 ? Ss 0:01 kiosklock --server 192.168.0.99 --port
10018 --localn 7348 ? S 0:00 knotify [kdeinit]
7350 ? S 0:00 kio_uiserver [kdeinit]
7360 pts/1 Ss 0:00 -bash
7363 pts/1 R+ 0:00 ps x
xkform@XK4:~$

Para podermos ver a lista de processos executados por todos os


utilizadores, recorremos ao comando completo ps aux.Isto seria o que
veriamos ao correr o comando ps aux ao corrermos um terminal numa sessão gráfica de
Linux no Display Environment KDE, dado que conseguimos ai ver uma
lista de processos nativos do mesmo.

xkform 7363 pts/1 R+ 0:00 ps x


| | | | |_ Tempo de duração do processo
| | | |__________Estado do processo
| | |________________Dispositivo do terminal ( em modo
| | gráfico, são geradas consolas virtuais)
| |_____________________PID, ou Identificador de Processo
|_______________________________Utilizador dono do processo

Estados que um processo pode adoptar:


D A dormir sem parar (normalmente para dispositivos IO)
R A serem executados
S A dormir interruptamente (à espera de um evento para completar)
T Parado, ou devido a um sinal de um controlador de trabalhos ou porque está a ser
seguido (traced)
X Morto (não deverá ser visto)
Z Processo Desfuncional ("zombie") , terminado mas não eliminado pelo seu pai.

14
Miguel Costa
Ambiente Linux

2005  Gondomar
Departamento de Formação

Como matar processos?


Para podermos matar um processo na consola de Linux, utilizamos o comando kill
seguido do sinal de terminio ao que lhe segue o PID correspondente a esse processo ( se
quisermos mesmo matar um processo, utilizamos o sinal 9. Para podermos ver o que
corresponde cada sinal utilizamos o comando kill -l (sinal) )
Exemplo:
( xkform @ XK0: ~ ) ps
PID TTY TIME CMD
20723 pts/7 00:00:00 bash
20964 pts/7 00:00:00 ps
( xkform @ XK0: ~) kill -9 20723
Isto terminaria o processo bash ( o processo a que corresponde a propria consola que
está a ser executada ) que resultaria na saída do konsole ( estando nós a utilizar a
konsole, aplicação para utilizar consolas virtuais no KDE )

Podemos matar processos através do nome da aplicação que esta a ser chamada pelo
processo com o comando killall, este comando funciona exactamente como o comando
kill, apenas irá matar todos os processos correspondentes à aplicações.

Exemplo:
( xkform @ XK0: ~ ) ps
PID TTY TIME CMD
20723 pts/7 00:00:00 bash
20964 pts/7 00:00:00 ps
( xkform @ XK0: ~) killall -9 bash

Noção de processos Pais e processos Filhos:


Um processo é chamado de pai quando gera um processo filho, ou seja, os processos
podem gerar novos processos, ou chamadas a novas aplicações.
Podemos verificar a arvore de geração de processos filhos através do comando pstree.
Se matarmos o gerador do processo filho ( processo pai ) este deixará de criar os mesmos
processos filhos que lhe correspondem.

Exemplo:

xkform@XK4:~$ pstree
init─┬─acpid
├─atd
├─cron

15
Miguel Costa
Ambiente Linux

2005  Gondomar
Departamento de Formação

├─cupsd
├─2*[dbus-daemon]
├─dbus-launch
├─dcopserver
├─dd
├─dirmngr
├─events/0
├─gam_server
├─6*[getty]
├─4*[gpg-agent]
├─hald───hald-addon-acpi
├─hcid
├─hpiod
├─inetd
├─2*[ivman]
├─kaccess
├─kbluetoothd
├─kded
├─kdeinit─┬─kio_file
│ ├─klauncher
│ └─kwin
├─kdesktop
├─kdm─┬─Xorg
│ └─kdm───startkde─┬─ivman
│ ├─kwrapper
│ └─ssh-agent
├─kgameportd
├─khelper
├─khubd
├─kicker───kiosklock
├─kio_uiserver
├─klipper
├─klogd
├─knotify
├─krfcommd
├─kseriod
├─ksmserver
├─ksoftirqd/0
├─kswapd0
├─kthread─┬─aio/0
│ ├─kacpid
│ ├─kblockd/0
│ ├─2*[pdflush]
│ └─reiserfs/0
├─kxkb
├─3*[mount.smbfs]

16
Miguel Costa
Ambiente Linux

2005  Gondomar
Departamento de Formação

├─python
├─sdpd
├─shpchpd_event
├─smbiod
├─sshd───sshd───sshd───bash───pstree
├─syslogd
├─udevd
└─xfstt
xk@XK4:~$

No KDE para podermos aceder à gestão da lista de processos, deveremos configurar um


atalho para o efeito. Para tal, acedemos ao painel de controlo do KDE, ou através do
menu K, ou em “Executar Comando” no mesmo digitando kcontrol , e acedemos à
secção de acessibilidade do painel de controlo para finalmente podermos configurar os
atalhos de teclado. Deverão existir varios perfis para o mesmo, se existir um chamado
de “Esquema Windows”, esse deverá ter configurado, tal como existe no MS Windows, o
atalho de teclado “ctrl + alt + del” para aceder ao “taskmanager”, ou “gestor de
tarefas”. Depois de isso feito, ao pressionarmos as teclas “ctrl + alt + del” deveremos
poder gerir a nossa lista de processos, fácilmente em modo gráfico.

Exercicios:

1) Acede à linha de comandos, procura pelo processo correspondente à bash pelo


teu utilizador e mata-o, recorrendo somente ao comando kill.
2) Abre uma nova consola e cria um novo processo com o utilizador xkform2 ( ao
abrir a consola será criado automáticamente um novo processo, uma chamada ao
bash ) minimiza essa consola e mata-o, recorrendo apenas ao comando kill.
3) Mata todos os processos correspondentes à aplicação bash.
4) Verifica a lista de processos pais e filhos.
5) Repete o exercicio 1, recorrendo ao gestor de tarefas gráfico do KDE.

17
Miguel Costa
Ambiente Linux

2005  Gondomar