Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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.
2
Miguel Costa
Ambiente Linux
2005 Gondomar
Departamento de Formação
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).
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.
2005 Gondomar
Departamento de Formação
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.
6
Miguel Costa
Ambiente Linux
2005 Gondomar
Departamento de Formação
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:
7
Miguel Costa
Ambiente Linux
2005 Gondomar
Departamento de Formação
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.
Procede assim:
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:
2005 Gondomar
Departamento de Formação
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
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:
O comando chmod pode ser usado para mudar os FLAGS 'rwx' dos ficheiros e/ou diretórios, a
sintaxe básica é:
Exemplo:
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:
10
Miguel Costa
Ambiente Linux
2005 Gondomar
Departamento de Formação
O comando chmod pode também ser usado com números, em vez dos flags,
como mostra o exemplo:
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)
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
Como exemplo, vamos definir que um ficheiro 'teste4.txt' terá como dono 'xkform' e como grupo
'users':
Outros exemplos:
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
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
14
Miguel Costa
Ambiente Linux
2005 Gondomar
Departamento de Formação
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
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:~$
Exercicios:
17
Miguel Costa
Ambiente Linux
2005 Gondomar