Servidor Linux

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar

Servidor Linux

Origem
A origem do sistema operacional Linux é o Unix, o qual era um sistema operacional para servidores e computadores de médio porte das décadas de 1980 e 1990. O Unix foi escrito em Linguagem C, originalmente para computadores PDP-11 (Digital), demonstrando a relativa facilidade de migração para outros computadores. Vários sistemas comerciais foram desenvolvidos a partir do Unix, como o Unix BSD (Universidade de Berkeley), o Unix System V (AT&T) e, com o desenvolvimento dos computadores pessoais, o Linux [1].
Utilização do Linux como servidores
O Linux hoje é utilizado em desktops, laptops, smartphones e outros dispositivos. Contudo, o papel de servidor se mantem, sendo o um sistemas operacionais mais utilizados na montagem de servidores de rede local e servidores Internet [1].
  • Um servidores de rede local provê serviços de rede aos usuários em uma rede local, incluindo o papel de roteador provendo acesso a Internet, servidor proxy (Squid), servidor DHCP, roteador NAT, firewall (iptables) e servidor de arquivos e impressão (Samba).
  • Um servidor Internet é um servidor dedicado a prover serviços na Internet. Um exemplo é um servidor Web montado com Apache, um interpretador PHP e um banco de dados MySQL, conhecido como servidor LAMP. Outros serviços de rede também podem fazer parte do servidor, como servidor FTP para disponibilizar arquivos de forma pública, sistema de quotas para administrar espaço de armazenamento, servidor DNS, servidor de Email e outros.
Servidor dedicado e administração remota
Um servidor Linux pode ser uma máquina física dedicada para prover serviços de rede ou uma máquina virtual hospedada em um datacenter. Em ambos os casos, normalmente o servidor é montado com uma estrutura enxuta, com o modo gráfico desativado, liberando os recursos do hardware para o papel de servidor. Neste caso, a administração do servidor acaba sendo feita remotamente, principalmente utilizando SSH.
Servidor Linux Ubuntu
O sistema operacional Ubuntu lança uma nova versão para desktops e servidores a cada seis meses. Cada versão tem atualizações de segurança gratuitas por pelo menos 18 meses. A versão de Longo Tempo de Suporte (LTS) o suporte é três anos para desktops, e cinco anos para servidores.
  • Na disciplina de Administração de Servidores vamos utilizar a distribuição Ubuntu para servidores.

Instalação e configuração

A instalação do Ubuntu server pode ser obtida diretamente do site do Ubuntu:

http://www.ubuntu.com/download/server

O processo de instalação do Ubuntu server é similar a versão desktop, contudo, tudo é realizado via terminal de comandos.

Passos para instalação (https://help.ubuntu.com/lts/serverguide/installing-from-cd.html):

  1. Baixar a vesão Ubuntu server e gerar um CD-ROM com a imagem ISO;
  2. Fazer o boot do sistema a partir do CD-ROM;
  3. Selecionar a linguagem de instalação;
  4. Escolher basic server install;
  5. Escolher a linguagem para o sistema, leiaute do teclado, configuração de rede, nome do host e fuso horário;
  6. Definir o particionamento do disco rígido;
  7. A base do Ubuntu é então instalada.
Atualizações do sistema
Existe três opções (vamos utilizar a primeira):
  1. Sem atualizações automáticas, o que exige que o administrador se logue no sistema e atualize o sistema manualmente;
  2. Atualizações automáticas;
  3. Controle de atualizações via landscape (pesquisar detalhes).
Tarefas de pacotes
Durante a instalação do Ubuntu server é possível instalar pacotes adicionais, incluindo entre outros (https://help.ubuntu.com/lts/serverguide/installing-from-cd.html#install-tasks):
  1. Servidor DNS: servidor BIND DNS;
  2. Servidor LAMP: servidor Linux/Apache/MySQL/PHP;
  3. Mail server;
  4. Servidor OpenSSH;
  5. Servidor de Impressão;
  6. Servidor de Arquivos Samba.

Uma vez que o processo de instalação tenha terminado você pode ver uma lista de tarefas disponíveis entrando no seguinte no terminal:

tasksel --list-tasks

Instalação de pacotes

apt-get

Sistema de gerenciamento de pacotes que trabalha baixando pacotes de repositórios oficiais do Ubuntu.

A seguir estão descritas as principais utilizações do apt-get [1]:

sudo apt-get update

Atualiza a lista de pacotes disponíveis em cada servidor. Deve ser executado regularmente, particularmente antes de fazer cada nova instalação de pacotes.

sudo apt-get install apache2

Exemplo de comando para instalação de pacote, no caso o servidor Web apache. O apt-get instala automaticamente todas as dependências do pacote, pedindo confirmação.

Atualização de pacote
Para atualizar um pacote rode em sequência os comandos:
sudo apt-get update
sudo apt-get install apache2

Para atualizar todos os pacotes do sistema de uma vez, execute:

sudo apt-get update
sudo apt-get upgrade
Remoção de pacote
sudo apt-get remove apache2
Este comando remove o pacote e preserva os arquivos de configuração, que podem ser aproveitados caso se queira reinstalar o pacote.
sudo apt-get remove --purge apache2
Remove o pacote e os arquivos de contiguração.
Reinstalação de um pacote
sudo apt-get install --reinstall apache2
Arquivos de configuração do apt-get
O principal arquivo de configuração do apt-get é o arquivo:
/etc/apt/sources.list
Este arquivo apresenta a lista dos mirrors onde ficam hospedados os repositórios de pacotes do Ubuntu.

dpkg

O dpkg complementa o apt-get, permitindo instalar pacotes .deb baixados manualmente [1].

Instalação de pacote .deb
sudo dpkg -i pacote.deb
ou, para instalar vários pacotes dentro de um diretório:
sudo dpkg -i *.deb

O dpkg instala apenas o pacote indicado, não instala dependências. Para resolver isto, pode usar o comando:

sudo apt-get -f install
este comando resolve as dependências e corrige problemas que possam ter havido na instalação.

Se não conseguir resolver os problemas, pode-se experimentar o comando:

sudo apt-get -f remove
este comando remove os pacotes com problema.

Comandos Básicos Linux

http://wiki.ubuntu-br.org/ComandosBasicos

Sistema de arquivos

O sistema de arquivos caracteriza o modo como os dados são armazenados em uma partição do dispositivo de armazenamento.

Cada sistema operacional pode trabalhar com um sistema de arquivos específico. Deste modo, caso se queira instalar vários sistemas operacionais em uma máquina, o disco rígido deve ser particionado.

Particionamento
O particionamento do disco rígido pode ser realizado durante a instalação do sistema. Geralmente o software de instalação oferece ferramentas para particionar o disco. Entretanto, há ferramentas específicas para isto, como o GParted, disponível nos repositórios do Ubuntu.
Gerenciador da inicialização
Caso o computador tenha mais de um sistema operacional instalado há necessidade de um gerenciador da inicialização para definir a ordem de iniciação do sistema. No Ubuntu o gerenciador da inicialização é o GRUB.
A edição do arquivo de configuração do GRUB permite alterar a ordem de iniciação dos sistemas operacionais:
sudo gedit /etc/default/grub
Caso a ordem de inicialização seja alterada o GRUB deve ser atualizado:
sudo update-grub

Sistemas de arquivos suportados pelo Linux

O Linux tem suporte a vários de sistemas de arquivos, sendo que os principais são:

  • ext: extended filesystem, é o mais utilizado pelo Linux. Existem várias extensões (ext2, ext3, ext4) que melhoram a performance do sistema.
  • vfat: é o sistema de arquivos do DOS e Microsoft Windows 95 e NT.
  • ntfs: é o sistema de arquivos do Microsoft Windows XP e NT.
  • nfs: é um sistema de arquivos para redes usado para acessar discos localizados em computadores remotos.http://wiki.ubuntu-br.org/ComandosBasicos
  • smb: é um sistema de arquivos para redes que suporta o protocolo SMB, usado pelos Windows for Workgroups e NT. No Linux o Samba implementa o protocolo SMB fazendo com que pareça como sendo um servidor de arquivos Windows.
  • iso9660: é o sistema de arquivos para CD-ROM.

O arquivo /proc/filesystems mostra os sistemas de arquivos são suportados pelo seu kernel atual.

Estrutura de arquivos e diretórios do Linux

O diretório raiz (/) do Linux apresenta a seguinte lista de diretórios:

$ ls /
bin    dev   lib     proc  sbin  tmp  
boot   etc   media   root  opt   usr  
cdrom  home  mnt

Descrição e função dos diretórios:

  • /bin: Arquivos binários executáveis de comandos essenciais, como o cp, mv e grep.
  • /boot: Arquivos relacionados ao boot e ao kernel.
  • /dev: Arquivos associados a ponteiros para dispositivos físicos, como os discos rígidos, placas de som e vídeo etc.
  • /etc: Arquivos de configuração dos sistemas e aplicativos instalados na máquina.
  • /lib: Bibliotecas do sistema.
  • /mnt: Diretório de montagem dos dispositivos de armazenamento .
  • /media: Diretório de montagem dos sistemas de arquivos temporários, como pendriver.
  • /cdrom: Diretório de montagem do CD-ROM.
  • /opt: Arquivos de programas de terceiros, que não acompanham a distribuição.
  • /proc: Diretório de informações de processos e hardware do sistema.
  • /root: Diretório home do superusuário.
  • /sbin: Arquivos binários executáveis do superusuário.
  • /tmp: Arquivos temporários.
  • /usr: Onde ficam a maioria dos aplicativos instalados no sistema.
  • /var: Arquivos de dados variáveis, como spool de impressão, os arquivos de cache e arquivos de log.

Administração de Usuários e Grupos [2]

Um usuário Linux é uma entidade que possui um login, uma senha e um número de identificação. Estas informações permitem ao Linux controlar o acesso do usuário ao sistema e definir, a partir de suas permissões de acesso, o que ele pode fazer.

Um grupo é um conjunto de usuários, e também possui nome e um número de identificação.

Os grupos devem ser formados a partir de usuários afins, como por exemplo em uma escola, o grupo professores, o grupo técnicos e o grupo alunos. A criação dos grupos deve refletir a estrutura organizacional da instituição. Os grupos compartilham recursos e permissões, como por exemplo, acesso a determinados arquivos, impressoras, etc.

Cada usuário deve pertencer a pelo menos um grupo, que é seu grupo primário. Outros grupos podem ser associados e serão seus grupos secundários.

Criação de contas de usuários e grupos

Para criar um grupo, usa-se o comando:

groupadd nome_grupo
para remover um grupo:
groupdel nome_grupo

Para criar um usuário

adduser login
Parâmetros adicionais:
  • -g para definir o grupo primário do usuário. Caso não seja informado, o Linux cria um grupo com o mesmo nome do usuário.
  • -G para definir grupos secundários
  • -c para definir o nome completo do usuário, endereço, telefone, email (4 campos separados por vírgula).

Para definir a senha do usuário, usa-se o comando:

passwd login

Para remover um usuário:

userdel login
Parâmetro adicional:
  • -d apaga o diretório /home do usuário e todo seu conteúdo.

Arquivos de cadastro e definição das contas dos usuários do sistema

As contas de usuários, grupos e senhas ficam armazenadas nos arquivos:

/etc/passwd
/etc/group
/etc/shadow
Arquivo /etc/passwd
Neste arquivo estão cadastrados todos os usuários do sistema. Contas com UID (identificação de usuário) e GID (identificação de grupo) menor que 500 são contas do sistema. O primeiro usuário e grupo cadastrado tem o número 1000. Este arquivo deve ter permissão de leitura por todos os usuários.

Exemplo de linha do arquivo /etc/passwd, com cada campo separado por ":"

login:x:1000:1000:Nome Completo,,,:/home/login:/bin/bash

Descrição dos campos:

  • login: Login do usuário;
  • x:Este campo continha a senha do usuário. Nos sistemas modernos as senhas são criptografadas e ficam armazenadas no arquivo /etc/shadow;
  • 1000: UID
  • 1000: GID
  • Nome completo e outras informações separadas por vírgula;
  • /home/login: Diretório home do usuário;
  • /bin/bash: Shell do usuário.
Arquivo /etc/group
Contem a relação dos grupos do sistema. Cada linha do arquivo contem o nome do grupo, a senha, o GID (identificação de grupo) e a lista de usuários do grupo.
Arquivo /etc/shadow
Contém as senhas criptografadas dos usuários . Este arquivo é de uso exclusivo do administrador, somente ele consegue visualizar, editar ou copiar este arquivo.
Arquivo /etc/login.defs
Contem diretivas e padrões utilizados na criação das contas de usuários, incluindo número de caracteres para senhas, número de dias para que as senhas expirem, UID e GIU mínimo e máximo, criação ou não de diretório /home, etc.
Arquivo /etc/default/useradd
Também contem diretivas para criação das contas de usuários, incluindo a definição do grupo primário, o local do diretório /home, o shell padrão do usuário, etc.

Permissões de acesso a arquivos e diretórios

As permissões de acesso a arquivos e diretórios permitem protejer o sistema de arquivos do Linux do acesso indevido por pessoas ou programas não autorizados.

O princípio da segurança está baseado no conceito de usuário, grupo e outros usuários. Um arquivo ou diretório sempre possui um usuário que é o seu dono (owner).

O grupo (group) permite atribuir permissões de acesso a arquivos e diretórios comuns a um grupo de usuários.

Os outros são usuários que não são donos nem pertencem ao grupo do arquivo ou diretório.

As permissões podem do tipo:

  • Leitura (Read) para arquivos, ou no caso de diretório listar seu conteúdo (por exemplo com ls);
  • Escrita (Write) no arquivo, ou no caso de diretório a criação de arquivos ou sub-diretórios dentro dele;
  • Execução (eXec) de arquivo (caso seja executável) ou de entrar para dentro do diretório (por exemplo com cd).

Exibição das permissões de acesso

Comando ls -l
Quando executamos este comando em um diretório qualquer, os arquivos e sub-diretórios são listados com as permissões de acesso correspondentes. Por exemplo:
evandro@evandro-HP:~/AulasIFPR$ ls -l
total 20
-rw-r-----  1 evandro professores   46744 Fev 18  2013 Modelo-PlanoEnsino.odt
drwxr-x---  3 evandro professores    4096 Jun 11 16:15 TADS-AdministracaoServidores
As colunas que aparecem na listagem são:
  1. Esquema de permissões (-rw-r-----);
  2. Número de ligações do arquivo ou diretório;
  3. Dono do arquivo;
  4. Grupo do dono do arquivo;
  5. Tamanho do arquivo;
  6. Mês Dia e Hora da criação do arquivo;
  7. Nome do arquivo.
Esquema de permissões
O esquema de permissões usa 10 caracteres, o primeiro identifica o tipo (- arquivo; d diretório; l link; ...) e os outros 9 formam 3 grupos de 3 caracteres que mostram as permissões (r leitura; w escrita; x execução) para o dono, grupo e outros.
Por exemplo, analisando a primeira da saída do comando ls -l acima, referente ao arquivo Modelo-PlanoEnsino.odt. temos:
  • dono possui permissão de leitura e escrita (r w -);
  • grupo possui permissão de leitura (r - -);
  • outros não possuem permissões sobre o arquivo (- - -).

Alteração das permissões de acesso

Comando chmod
Permite alterar as permissões de acesso, pode ser utilizado de dois modos:
  • Formato Octal;
  • Formato Simbólico;

Formato Octal

O formato octal usa três algarismos octal para atribuir permissões ao dono, grupo ou outros, conforme a tabela abaixo:

Octal Permissões
0 ---
1 --x
2 -w-
3 -wx
4 r--
5 r-x
6 rw-
7 rwx

Exemplo:

chmod 755 arquivo1
Atribui permissão de leitura, escrita e execução (rwx) ao dono, leitura e execução (r-x) ao grupo e leitura e execução (r-x) aos outros.

Formato simbólico

O formato simbólico usa letras e símbolos para indicar as permissões. É composto de três elementos Erro de citação: A tag de abertura <ref> está mal formada ou tem um nome ruim:

  • Alcance das permissões:
    • u -> Usuário;
    • g -> Grupo;
    • o -> Outros.
  • Ação sobre as permissões:
    • + -> Acrescenta permissões;
    • - -> Remove permissões;
    • = -> Atribui permissão explicitamente.
  • Tipo das permissões:
    • r -> Leitura,
    • w -> Escrita,
    • x -> Execução.

Exemplo:

ls -l 
-rwx------ 1 evandro evandro   87475 Jun 11 18:07 netkit2-installer
chmod go+rw netkit2-installer
ls -l 
-rwxr-xr-x 1 evandro evandro   87475 Jun 11 18:07 netkit2-installer
Acrescenta ao grupo e outros (go+) permissões de leitura e execução (rw).

Referências

  1. 1,0 1,1 1,2 1,3 MORIMOTO, C. E. Seridores Linux: Guia prático, Sul Editores, Porto Alegre, 2013.
  2. VALLE, O. T. Adminstração de Redes com Linux: Fundamentos e práticas, IFSC, Florianópolis, 2010.

--Evandro.cantu (discussão) 18h21min de 5 de julho de 2015 (BRT)