Comandos Linux
2
Segurança do sistema de ficheiros Instalação de software
3
A permissão de acesso protege o sistema de ficheiros Linux do acesso indevido a utilizadores ou programas não autorizados A permissão de acesso também impede que um programa malintencionado, por exemplo, apague um ficheiro indevidamente, envie ficheiros para outros utilizadores ou forneça o acesso da rede para que outros utilizadores invadam o sistema
4
ď ą O sistema Linux como qualquer outro sistema seguro e fiĂĄvel, impede que utilizadores inexperientes (ou mal-intencionados) instalem programas enviados por terceiros sem saber exatamente qual o seu objetivo, causando danos irreparĂĄveis ao sistema
5
O princípio da segurança no sistema de ficheiros Linux é definir o acesso aos ficheiros por donos, grupos e outros utilizadores Dono – É o utilizador que criou o ficheiro ou diretório – Apenas o dono pode modificar as permissões de acesso ao ficheiro – As permissões de acesso do dono só se aplicam a esse mesmo dono do ficheiro/diretórios – A identificação do dono é chamada de User Id (UID) – A identificação de utilizadores e grupo são armazenados respetivamente nos ficheiros de texto /etc/passwd e /etc/group. Podem ser editados mas é preciso ter atenção especial para não modificar o campo que contém a senha do utilizador encriptada
6
Grupo – Este recurso foi criado para permitir que vários utilizadores diferentes tenham acesso a um mesmo ficheiro (caso contrário só o dono o poderia aceder) – Cada utilizador pode fazer parte de um ou mais grupos e aceder aos ficheiros que pertençam ao mesmo grupo que o seu (mesmo que os ficheiros tenham outro dono) – A identificação do grupo é chamada de Group Id (GID)
Outros – É a categoria de utilizadores que não são donos do ficheiros/diretórios ou não pertencem ao grupo do ficheiros/diretórios
7
Existem três tipos de permissões básicas que se podem aplicar ao dono, ao grupo e a outros utilizadores: – r: permissão de leitura para ficheiros ou listagem do conteúdo no caso dos diretórios – w: permissão de escrita para ficheiros ou diretórios. Para que um ficheiro/diretório possa ser apagado, é necessário que o utilizador tenha um acesso de escrita – x: permite executar um ficheiro (caso seja um programa) no caso de um diretório, permite que seja acedido através do comando cd
8
As permissões de acesso a um ficheiro/diretório podem ser visualizados através do comando ls –l As três letras (rwx) são agrupadas como poderá constatar pela imagem
9
O primeiro caráter identifica o tipo de ficheiro: Letra
Tipo de ficheiro
d l c b s p
Ficheiro normal
Diretório Link Dispositivo do tipo caráter e bloco (ficheiros virtuais associados a periféricos) Sockets e pipes (ficheiros virtuais associados a comunicação entre aplicações)
10
Diretório Pasta
d rwx rwx r-x
Diretório
dono (liveuser)
grupo (liveuser)
outros
Tipo de acesso
r - leitura w - escrita x - execução
r - leitura w - escrita x - execução
r - leitura x - execução
11
ď ą Ficheiro texto.doc
- rw- rw- r--
Ficheiro
dono (liveuser)
grupo (liveuser)
outros
Tipo de acesso
r - leitura w - escrita -
r - leitura w - escrita -
r - leitura -
12
O acesso a um ficheiro/diretório é feito verificando primeiro se o utilizador que o vai aceder é o seu dono Em caso afirmativo, as permissões de dono do ficheiro são aplicadas Caso não seja o dono do ficheiro/diretório, o sistema verifica se pertence ao grupo correspondente Caso pertença, as permissões de grupo são aplicadas, caso contrário são verificadas as permissões de acesso para os outros utilizadores
13
Após verificar o tipo de utilizador nas permissões de acesso, é verificado se tem permissões para o que deseja fazer (ler, gravar ou executar) Caso não tenha, o acesso é negado, mostrando uma mensagem: permission denied (permissão negada) Mesmo sendo o dono do ficheiro, mas tendo definido o acesso (comando chmod) como leitura (r) mas outros tenham acesso de leitura e escrita, apenas poderá ler o seu ficheiro enquanto os outros podem ler e/ou escrever
14
As permissões de acesso (leitura, escrita, execução) para donos, grupos e outros utilizadores são definidas de forma independente, permitindo assim um nível de acesso diferenciado: Dono
Grupo
Outros
15
O utilizador root não tem nenhuma restrição de acesso ao sistema Caso um utilizador com permissões de escrita no diretório tente apagar um ficheiro para o qual não tenha permissões de escrita, o sistema pergunta se confirma a exclusão do ficheiro apesar do modo de leitura. Caso tenha permissões de escrita no ficheiro, o ficheiro será apagado sem mostrar nenhuma mensagem de erro Mesmo que o utilizador tenha permissões de escrita num ficheiro mas não tenha permissões de escrita num diretório, a exclusão do ficheiro será negada
16
chmod [opções] [permissões] [diretório/ficheiro] altera as permissões de acesso a um ficheiro ou diretório diretório/ficheiro Diretório ou ficheiro que terá as suas permissões alteradas
Opções -v --verbose
Mostra todos os ficheiros que estão a ser processados
-f --silent
Não mostra a maior parte das mensagens de erro
-c --change
Semelhante à opção –v, mas só mostra os ficheiros que tiverem as permissões modificadas
-R --recursive
Muda permissões de acesso do diretório/ficheiro no diretório atual e subdiretório
17
Exemplos: – chmod g+r* (permite que todos os utilizadores que pertençam ao grupo dos ficheiros (g) tenham (+) permissões de leitura (r) em todos os ficheiros do diretório atual) – chmod o-r teste.txt (retira (-) a permissão de leitura (r) do ficheiro teste.txt para os outros utilizadores) – chmod ug+x teste.txt (inclui (+) a permissão de execução do ficheiro teste.txt para o dono (u) e grupo (g) do ficheiro) – chmod a+x teste.txt (inclui (+) a permissão de execução do ficheiro teste.txt para o dono, grupo e outros)
18
É possível copiar as permissões de acesso ao ficheiro/diretório: Se por exemplo o ficheiro teste.txt tiver a permissão de acesso r-x r-- ---, digitando chmod o=u as permissões de acesso dos outros utilizadores (o) serão idênticas às do dono (u) As novas permissões serão r-x r-- r-x
19
chgrp [opções] [grupo] [ficheiro/diretório] altera o grupo de um ficheiro ou diretório grupo
Novo grupo do ficheiro/diretório
ficheiro/diretório Ficheiro ou Diretório que terá o grupo alterado
Opções -v --verbose
Mostra os ficheiros enquanto são alterados
-f --silent
Não mostra a mensagens de erro para ficheiros/diretórios que não puderam ser alterados
-c --change
Mostra apenas os ficheiros ou grupos que foram alterados
-R --recursive
Altera os grupos de ficheiros/subdiretórios do diretório atual
20
chown [opções] [dono.grupo] [diretório/ ficheiro] muda o dono de um ficheiro/diretório; opcionalmente, pode também ser usado para mudar o grupo dono.grupo
Nome do dono.grupo que será atribuído ao diretório/ficheiro. O grupo é opcional
diretório/ficheiro Diretório ou Ficheiro cujo dono.grupo será modificado
Opções -v --verbose
Mostra os ficheiros enquanto são alterados
-f --supress
Não mostra mensagens de erro durante a execução do programa
-c --change
Mostra apenas os ficheiros alterados
-R --recursive
Altera dono.grupo de ficheiros no diretório atual e subdiretórios
21
É necessário ter permissões de escrita no diretório/ficheiro para alterar o seu dono.grupo Exemplos: – chown david teste.txt (muda o dono do ficheiro teste.txt para david) – chown david.users teste.txt (muda o dono do ficheiro teste.txt para david e o seu grupo para users) – chown –R david.users * (muda o dono.grupo dos ficheiros do diretório atual e subdiretórios para david.users)
22
Em vez de utilizar os modos de permissões +r, -r pode ser utilizado o modo octal para se alterar a permissão de acesso a um ficheiro O modo octal é um conjunto de oito números, definindo para cada um deles um tipo de acesso diferente, tornando assim mais flexível a gestão das permissões de acesso
23
A lista de permissões de acesso octal é: – – – – – – – –
0: nenhuma permissão de acesso (equivalente a -rwx) 1: permissão de execução (x) 2: permissão de escrita (w) 3: permissão de escrita e execução (wx) 4:permissão de leitura (r) 5: permissão de leitura e execução (rx) 6: permissão de leitura e escrita (rw) 7: permissão de leitura, escrita e execução (equivalente a +rwx)
24
A utilização destes números define a permissão de acesso do dono, grupo ou outros O comando chmod poderá ser utilizado da seguinte forma: – Chmod <código> <nome do ficheiro>
Exemplo – Chmod 664 teste.txt (permissão de leitura e escrita para dono (6); leitura e escrita para grupo (6); permissão apenas de leitura para outros (4)
25
Existem diversos processos para instalar software no Linux Normalmente, as aplicações comerciais são fornecidas em pacotes binários Enquanto que as aplicações de código-fonte aberto podem ser disponibilizadas através de pacotes binários ou ficheiros com código-fonte
26
Uma grande maioria de distribuições Linux utiliza sistemas de gestão de pacotes de sofware instalados O Red Hat criou o sistema de pacotes RPM – RedHat Package Management: sendo utilizado em várias distribuições (incluindo Fedora, Centos, Etc.) Por outro lado, a comunidade Debian criou o sistema de pacotes DEB e utiliza a ferramenta APT- Advanced Package Tool
27
A gestão dos pacotes DEB pode ser realizada a partir dos programas dpkg ou apt-get O sistema de pacotes DEB é utilizado em diversas distribuições, como Ubuntu, Knoppix, etc. É possível instalar pacotes DEB no Red Hat ou no Fedora, mas para tal é necessário instalar o programa apt-get na versão Red Hat Existem outros formatos de sistemas de pacotes, como é o caso do SLACK, BSD, KISS, mas os sistemas de pacotes RPM e DEB são os mais utilizados
28
Formato Distribuições
RPM
DEB
Programa
Red Hat, Fedora, RPM Centos, Mandriva, etc. YUM URPMI GNORPM KPACKAGE REDHAT-CONFIG-PACKAGES SYSTEM-CONFIG-PACKAGES Debian, Ubuntu, DPKG Knoppix, Kurumin, APT-GET etc.
29
Os sistemas RPM e DEB são flexíveis e poderosos e normalmente possibilitam: – Instalar, apagar e atualizar software; – Visualizar a hierarquia dos programas instalados; – Testar as dependências dos programas (por exemplo, ao instalar um programa, é verificado se faltam instalar, antecipadamente outros programas); – Verificar a integridade dos programas (por exemplo, se um vírus ou um utilizador apagar ou modificar um programa indevidamente, o sistema pode detetar e retificar o programa); – Resolver conflitos entre programas instalados.
30
Usando a linha de comandos numa shell e como utilizador root, podemos usar o comando rpm, para instalar, apagar e atualizar um programa no formato RPM Exemplos: – rpm –ih ficheiro.rpm (instalar programa contido no ficheiro ficheiro.rpm) – rpm –Uvh ficheiro.rpm (atualizar uma versão nova do programa ficheiro.rpm) – rpm –ivh –force –nodeps ficheiro.rpm (forçar a instalação do programa ficheiro.rpm sem ter de instalar pacotes dependentes)
31
No Fedora, o programa yum facilita a instalação de programas e dos respetivos programas dependentes Ao utilizarmos o gestor rpm para instalar um pacote, caso existam pacotes dependentes, teremos de instalar, inicialmente, os pacotes dependentes e, só por fim o pacote final Com o yum e com o sistema configurado para ter acesso à internet, podemos instalar os pacotes e respetivas dependências usando um único comando
32
O gestor yum é equivalente a nível de funcionalidades ao gestor apt-get existente no Debian Para quem está habituado a usar o apt-get pode instalar a versão do apt-get existente para o Fedora Por defeito, o yum vem instalado no Fedora, caso não esteja, podemos instalá-lo a partir do pacote RPM, disponível no DVD de instalação Fedora: – Diretório Packages/yum-*.noarch.rpm (* é substituído pela versão existente)
33
O yum pode ser ainda instalado no Red Hat usando o comando: rpm –ivh yum-*.noarch.rpm
No ficheiro /etc/yum.conf e nos ficheiros que se encontram no diretório /etc/yum.respos.d situam-se os endereços dos repositórios dos pacotes a instalar ou a atualizar No ficheiro var/log/ yum.conf encontram-se os registos das operações realizadas com o gestor yum No diretório /var/cache/yum podemos encontrar os ficheiros descarregados da internet e que são instalados
34
Exemplos: – yum list(listar todos os pacotes disponíveis) – yum check-update ou yum list updates (verificar se existem pacotes disponíveis para uma atualização) – yum update (fazer atualização ao sistema) – yum install nome programa (instalar programa e respetivas dependências) – yum info nome programa (apresentar informações básicas de um programa)
35
O yum Extender é um programa semelhante ao yum, que funciona em ambiente gráfico Numa instalação por defeito o yumex não vem instalado A instalação do yum Extender pode ser feita realizando os seguintes procedimentos: – Abrir uma shell – Realizar o login como root, executando: su – – Com o computador ligado corretamente à internet, executar o comendo: • yum install yumex
36
Após a instalação do yum Extender pode ser lançado, executando o comando yumex a partir de uma shell O lançamento da aplicação também pode ser feito a partir de uma sessão gráfica: – Em menu Aplicações Ferramentas de Sistema Yum Extender (caso não esteja ligado como root será pedida a palavra passe de root)
37
O Yum Extender apresenta uma interface gráfica onde se realiza um pesquisa e depois analisa se o programa já está instalado ou se existe uma atualização do pacote Para instalar o pacote seleciona-se o(s) pacote(s) a instalar e de seguida clica-se em Aplicar (será necessário uma correta e estável ligação à internet para descarregar os pacotes)
38
O Fedora incorpora um instalador gráfico que pode ser lançado a partir de uma sessão gráfica: Em menu Sistema Administração Add/Remove Software (Caso não esteja ligado como root será pedida a palavra passe de root)
39
ď ą No gestor de aplicaçþes pode selecionar o tipo de pacote a instalar e verificar quais os pacotes que se encontram instalados
40
Pode ainda realizar uma pesquisa pelo nome do pacote e verificar se o pacote está ou não instalado (na pesquisa os ícones com a caixa fechada e mais claros: ainda não estão instalados; os com a caixa aberta e mais escuros: estão instalados)
41
A instalação de um pacote é realizada através da marcação de um visto num pacote não instalado e, de seguida, clicar em Aplicar Na desinstalação de um pacote o realiza-se o processo inverso: desmarca-se um pacote instalado e de seguida clica-se em Aplicar
42
Em versões mais recentes da distribuição Fedora usando o KDE ou GNOME se clicar sobre um ficheiro RPM será, automaticamente, lançado um gestor gráfico que pergunta se pretende ou não instalar o ficheiro
43
Quando o programa a instalar não tem um pacote pré-compilado, é necessário obter o código-fonte e compilá-lo A grande diferença entre software livre e código aberto, relativamente ao software proprietário reside no fato de no caso dos primeiros existir o acesso ao código-fonte do programa e ser possível compila-lo de forma que se achar mais conveniente
44
O primeiro passo para compilar um programa no Linux será obter o seu código-fonte (normalmente descarregando-o da internet) A maioria dos programas existentes para Linux são escritos na linguagem C ou C++ e normalmente encontra-se compactados nos formatos .tar.gz e .tar.bz2 O segundo passo será colocar o programa num diretório do sistema criado para o efeito De seguida será necessário descompactar o programa
45
Para descomprimir, por exemplo o programa nome_programa-2.2.tar.gz: – tar xvfz nome_programa-2.2.tar.gz – A execução deste comando tem de ser realizada no diretório onde se encontra o ficheiro compactado
Após a descompressão do ficheiro, devem-se ler os ficheiros README e INSTALL, para conhecer as informações sobre o pacote e a instalação Qualquer informação específica do programa que o torne diferente no processo de instalação encontra-se nestes ficheiros
46
Para se poder compilar programas no Linux tem de ter instalado: – O compilador C, C++ e GCC (geralmente encontra-se nas distribuições Linux separado em três pacotes: gcc, cpp e g++) – O GNU Make – E para alguns casos o autoconf e o automake
O processo de compilação de um programa é iniciado quando se executa o script configure
47
Este script é gerado por quem desenvolveu o programa, usando normalmente o autoconf Este script examina o sistema procurando bibliotecas, ficheiros de configuração e executáveis necessários para a compilação do programa Se tudo estiver correto, é gerado o ficheiro Makefile (usado posteriormente pelo make) Se alguma dependência não for encontrada a compilação pára e mostra uma mensagem de erro especificando o que ocorreu
48
A execução do script configure deve ser realizada a partir do diretório onde se encontram os ficheiros descompactados, usando o comando: – ./configure
De seguida executa-se a compilação propriamente dita, a compilação é coordenada pelo make, que segue um roteiro definido no Kakefile compilando e gerando os ficheiros binários usando o gcc A compilação é iniciada executando o comando: – make
49
Terminada a compilação (caso não existam erros) será a hora de se instalar o programa O processo até esta fase poderá ser realizado por um utilizador que não é administrador (root) A instalação só pode ser feita pelo utilizador root A mudança para o utilizador poderá ser feita executando o comando: – su - (terá de introduzir de seguida a palavra passe do utilizador root)
50
Após a mudança para o utilizador root, pode instalar o programa usando o comando make: – make install
Qualquer alteração a este processo estará descrita nos ficheiros README e INSTALL Após a conclusão da instalação, pode-se usar o comando make clean para remover todos os ficheiros temporários, criados durante a instalação Na maioria dos programas, o processo para a desinstalação poderá ser feita com o comando: – make uninstall
51
SÁ, João Paulo, CARVALHO, Rui, CORREIA e SILVA, Teotónio, Sistemas Operativos, 1ª Edição, Porto Editora, 2010.