Servidor Linux: mudanças entre as edições

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
 
(83 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 4: Linha 4:
<ref name=MORIMOTO>MORIMOTO, C. E. Seridores Linux: Guia prático, Sul Editores, Porto Alegre, 2013.</ref>
<ref name=MORIMOTO>MORIMOTO, C. E. Seridores Linux: Guia prático, Sul Editores, Porto Alegre, 2013.</ref>
-->
-->
;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''' <ref name=MORIMOTO>MORIMOTO, C. E. Seridores Linux: Guia prático, Sul Editores, Porto Alegre, 2013.</ref>.
;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''', para computadores PDP-11 (DEC - ''Digital Equipament Corporation''), demonstrando a relativa facilidade de migração para outros computadores. A DEC foi uma empresa pioneira de computadores nos EUA e tinha entre seus produtos os mini-computadores PDP e VAX, muito populares  nas comunidades científica e de engenharia nos anos 70 e 80. A DEC foi comprada pela Compaq, que por sua vez se fundiu com a Hewlett-Packard <ref>DEC na Wikipédia https://pt.wikipedia.org/wiki/Digital_Equipment_Corporation</ref>.  


;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''' <ref name=MORIMOTO/>.
: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''' <ref name=MORIMOTO>MORIMOTO, C. E. Seridores Linux: Guia prático, Sul Editores, Porto Alegre, 2013.</ref>.
*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'''.
:O nome Linux surgiu da mistura de Linus + Unix. Linus é o nome do criador do Linux, Linus Torvalds, que construiu uma implementação do Unix em linguagem C para computadores pessoais.


;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.  
;Utilização do Linux como servidores: O '''Linux''' hoje é utilizado em ''desktops'', ''laptops'',  ''smartphones'' (como o Android) computadores de placa única (como o Raspberry Pi) e outros dispositivos, como roteadores. Contudo, o papel de '''servidor''' se mantem, sendo um dos sistemas operacionais mais utilizados na montagem de '''servidores de rede local''' e '''servidores Internet''' <ref name=MORIMOTO/>:
:*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.


*Na disciplina de '''Administração de Servidores''' vamos utilizar a distribuição '''Ubuntu''' para '''servidores'''.
==Servidor dedicado e administração remota==


==Instalação e configuração==
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'''.


A instalação do '''Ubuntu server''' pode ser obtida diretamente do site do Ubuntu:
==Servidor Linux Ubuntu==


  http://www.ubuntu.com/download/server
O sistema operacional '''Ubuntu''' lança uma nova versão para '''''desktops''''' e '''servidores''' a cada seis meses, nos meses de abril (versão ano.04) e outubro (versão ano.10). Cada versão tem atualizações de segurança gratuitas por pelo menos 18 meses. A versão de '''Longo Tempo de Suporte''' ('''LTS'''), lançada nos anos pares no mês de abril, o suporte é três anos para desktops, e cinco anos para servidores.  


O processo de instalação do '''Ubuntu server''' é similar a versão ''desktop'', contudo, tudo é realizado via '''terminal de comandos'''.
;Últimas versões Lixux:
*Ubuntu 22.04 LTS
*Ubuntu 21.10
*Ubuntu 21.04
*Ubuntu 20.10
*Ubuntu 20.04 LTS
*Ubuntu 19.10
*Ubuntu 19.04
*Ubuntu 18.10
*Ubuntu 18.04 LTS
*Ubuntu 17.10
* ...
<!--Na disciplina de '''Administração de Servidores''' sugiro utilizar a última distribuição '''Ubuntu LTS'''.-->


Passos para instalação (https://help.ubuntu.com/lts/serverguide/installing-from-cd.html):
==Comandos Básicos Linux==
#Baixar a vesão '''Ubuntu server''' e gerar um CD-ROM com a '''imagem ISO''';
#Fazer o '''boot''' do sistema a partir do CD-ROM;
#Selecionar a linguagem de instalação;
#Escolher '''basic server install;
#Escolher a linguagem para o sistema, leiaute do teclado, configuração de rede, nome do host e fuso horário;
#Definir o particionamento do '''disco rígido''';
#A base do Ubuntu é então instalada.
 
;Atualizações do sistema: Existe três opções (vamos utilizar a primeira):
#Sem atualizações automáticas, o que exige que o administrador se logue no sistema e atualize o sistema manualmente;
#Atualizações automáticas;
#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):
Embora o Linux possua '''interface gráfica''', como o Gnome ou KDE, o '''administrador''' do sistema muitas vezes prefere (ou necessita) executar '''comandos de linha''' em um terminal.
#Servidor DNS: servidor BIND DNS;
#Servidor LAMP: servidor Linux/Apache/MySQL/PHP;
#Mail server;
#Servidor OpenSSH;
#Servidor de Impressão;
#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===
O ambiente tradicional do Unix é o '''CLI''' (''Command Line Interface''), onde você digita os comandos para dizer ao computador o que ele deve fazer.  
====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''' <ref name=MORIMOTO/>:
;Site para treinar comandos básicos: [http://cb.vu/ Terminal Linux].


sudo apt-get update
;Sites com comandos básicos para praticar:
Atualiza a lista de pacotes disponíveis em cada servidor. Deve ser executado regularmente, particularmente antes de fazer cada nova instalação de pacotes.
*http://www.infowester.com/comandoslinux.php
*https://www.vivaolinux.com.br/dica/Comandos-basicos-para-iniciantes
<!-- http://wiki.ubuntu-br.org/ComandosBasicos -->


sudo apt-get install apache2
===Arquivos e diretórios no Linux===
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:
;Arquivos: No Linux os '''arquivos''' armazenam informações que podem ser do tipo texto, áudio, imagem, vídeo, binários, etc.
sudo apt-get update
:O '''nome''' de um arquivo é formado por um '''nome''' e uma '''extensão''', a qual indica o tipo do arquivo. Por exemplo:
sudo apt-get install apache2
:*texto.txt -> Arquivo de texto sem formatação, codificados em ASCII.
:*figura.jpg -> Arquivo de imagem do tipo jpg.


Para atualizar todos os pacotes do sistema de uma vez, execute:  
;Diretórios: No Linux os '''diretórios''' são equivalentes as '''Pastas''' do sistema Windows. Permitem organizar as informações de forma hierárquica através de '''diretórios''' e '''subdiretórios'''.
sudo apt-get update
:Alguns dos principais diretórios do sistema Linux são:
sudo apt-get upgrade
:* '''/''' -> Diretório raiz do sistema.
:* /home/nome_usuario -> Diretório pessoal do usuário que está logado no sistema.
:* /etc -> Diretório com arquivos de configuração do sistema.


;Remoção de pacote:
===Comandos de arquivos e diretórios===
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:
;Mostrar o diretório corrente:
  sudo apt-get install --reinstall apache2
  pwd
:Quando um usuário loga no sistema o sistema automaticamente o posiciona no diretório '''/home/nome_usuario''', que é seu diretório pessoal.


;Arquivos de configuração do apt-get: O principal arquivo de configuração do '''apt-get''' é o arquivo:
;Listar o conteúdo de um diretório:
/etc/apt/sources.list
ls
:Este arquivo apresenta a lista dos '''''mirrors''''' onde ficam hospedados os repositórios de pacotes do Ubuntu.
ls -l
ls -a
:O parâmetro '''-l''' lista conteúdo do diretório incluindo detalhes das permissões de acesso, tamanho do arquivo e data de criação.
:O parâmetro '''-a''' lista também arquivos ocultos, os quais iniciam com ".", por exemplo, .profile.


====dpkg====
;Criar arquivo vazio:
touch nome_arquivo


O '''dpkg''' complementa o '''apt-get''', permitindo instalar pacotes '''.deb''' baixados manualmente <ref name=MORIMOTO/>.
;Listar conteúdo de arquivo:
cat nome_arquivo
Inserir conteúdo no arquivo a partir de edição no teclado.
cat > nome_arquivo
Acrescentar conteúdo no final de um arquivo a partir de edição no teclado.
cat >> nome_arquivo
:A edição é finalizada com:
Ctrl-d  -> Salvar e sair
Ctrl-c  -> Sair sem salvar


;Instalação de pacote .deb:
;Criar diretório:
  sudo dpkg -i pacote.deb
  mkdir nome_diretorio
:ou, para instalar vários pacotes dentro de um diretório:
;Remover diretório
  sudo dpkg -i *.deb
  rmdir nome_diretorio
:Remove diretório vazio. Se o diretório não estiver vazio não consegue remover.
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:
;Mudar para o diretório especificado:
  sudo apt-get -f remove
  cd nome_diretorio
:este comando remove os pacotes com problema.
Mudar para o diretório de nível superior.
cd ..


===Gerenciamento de serviços e processos <ref name=MORIMOTO/>===
;Copiar arquivos:
cp arquivo1 arquivo2
Copiar recursivamente, incluindo os arquivos e subdiretórios, o diretório dir1 para o dir2.
cp -r dir1 dir2


Cada '''serviço''' rodando no Linux, como um Servidor Apache, são chamados '''''deamons''''' ou '''serviços do sistema'''.
;Mover arquivos:
mv arquivo1 arquivo2


A tarefa de '''iniciar ou parar''' os '''serviços do sistema''' é automatizada por um conjunto de '''''scripts''''', localizados na pasta '''/etc/init.d''':
;Remover arquivos:
*Para iniciar um serviço usa-se o comando:
  rm nome_arquivo
  /etc/init.d/apache2 start
Remover recursivamente diretórios e seu conteúdo:
*Para parar um serviço usa-se o comando:
  rm -r nome_diretorio
  /etc/init.d/apache2 stop
 
Cada '''processo''' no Linux é um '''aplicativo''' ou '''serviço''' ativo no sistema.
 
Para listar todos os '''processos ativos''', usa-se o comando:
ps aux
 
Para saber a '''função de um processo''', pode-se usar o comando:
whatis
:Por exemplo, para saber qual o processo cron:
whatis cron
cron (8) - daemon to execute scheduled commands (Vixie Cron)


Para saber se um '''processo está rodando''', como por exemplo o firefox, pode-se usar o comando:
====Exercícios sobre comandos de arquivos e diretórios====
  ps aux | grep firefox
Em seu diretório pessoal, crie a seguinte uma estrutura de '''diretórios''' incluindo o Brasil e os estados do sul e '''arquivos''' com as cidades citadas:
  evandro  1886 10.6  3.5 980504 261976 ?      Sl  18:52  3:09 /usr/lib/firefox/firefox
  Brasil
+ PR
| + Curitiba
| + Guarapuava
| + Foz_do_Iguaçu
+ SC
| + Florianopolis
| + Blumenau
| + Joinville
  + RS
  + Porto_Alegre
  + Caxias_do_Sul
#Crie os diretórios com '''mkdir'''.
#Use '''cd''' para mudar de diretórios.
#Crie os arquivos das cidades com '''touch'''.
#Insira no arquivo Curitiba, usando '''cat >''', a frase: "Maior cidade do estado.".
#Copie o arquivo Curitiba, usando '''cp''', para os arquivos Joinville e Porto_Alegre.
#Insira no final do arquivo Curitiba, usando '''cat >>''', a frase "Capital do PR.".
#Insira no final do arquivo Porto_Alegre, usando '''cat >>''', a frase "Capital do RS.".
#Insira no final do arquivo Joinville, usando '''cat >>''', a frase "Cidade industrial.".
#Insira no arquivo das demais cidades, usando '''cat >''', frases que as caracterize.


Para '''matar um processo''' deve-se especificar o PID (Identificador do Processo), por exemplo, para matar o firefox:
===Navegador modo texto===
kill 1886


Caso processo esteja travado, deve utilizar o seguinte parâmetro:
  lynx URL
  kill -9 1886


==Comandos Básicos Linux==
===Comandos com informações correntes do sistema===


  http://wiki.ubuntu-br.org/ComandosBasicos
;Calendário:
  cal


==Sistema de arquivos==
;Data e hora:
date


O '''sistema de arquivos''' caracteriza o modo como os dados são armazenados em uma '''partição''' do dispositivo de armazenamento.
;Usuários logados no sistema:
who
Usuário logado na seção:
whoami
Informações sobre um usuário:
finger nome_usuario


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'''.
==Estrutura de arquivos e diretórios do Linux==
 
;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:
O '''diretório raiz''' ('''/''') do Linux apresenta a seguinte lista de diretórios:
  $ ls /
  $ ls /
Linha 182: Linha 178:
*'''/var''': '''Arquivos de dados variáveis''', como ''spool'' de impressão, os arquivos de ''cache'' e arquivos de log.
*'''/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  <ref name=VALLE>VALLE, O. T. Adminstração de Redes com Linux: Fundamentos e práticas, IFSC, Florianópolis, 2010.</ref>==
<!--==Sistema de arquivos==


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.
O '''sistema de arquivos''' caracteriza o modo como os dados são armazenados em uma '''partição''' do dispositivo de armazenamento.  


Um '''grupo''' é um '''conjunto de usuários''', e também possui '''nome''' e um '''número de identificação'''.
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'''.


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.
;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'''.


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.
===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.
*'''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.


===Criação de contas de usuários e grupos===
O arquivo '''/proc/filesystems''' mostra os sistemas de arquivos são suportados pelo seu kernel atual.
-->


Para '''criar um grupo''', usa-se o comando:
<!--==Gerenciador da inicialização==
groupadd nome_grupo
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'''.
: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'''.
: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
-->


Exemplo de linha do arquivo '''/etc/passwd''', com cada campo separado por ":"
==Gerenciamento de serviços e processos==
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.
Cada '''serviço''' rodando no Linux, como um Servidor Apache, são chamados '''''deamons''''' ou '''serviços do sistema''' <ref name=MORIMOTO/>.


;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.
A tarefa de '''iniciar ou parar''' os '''serviços do sistema''' é automatizada por um conjunto de '''''scripts''''', localizados na pasta '''/etc/init.d''':
*Para visualizar os serviços no init.d:
cd /etc/init.d
ls
*Para iniciar um serviço usa-se o comando:
sudo service apache2 start
*Para parar um serviço usa-se o comando:
sudo service apache2 stop


;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.
Cada '''processo''' no Linux é um '''aplicativo''' ou '''serviço''' ativo no sistema.


;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.
Para listar todos os '''processos ativos''', usa-se o comando:
ps aux


==Permissões de acesso a arquivos e diretórios==
Para saber a '''função de um processo''', pode-se usar o comando:
whatis
:Por exemplo, para saber qual o processo cron:
whatis cron
cron (8) - daemon to execute scheduled commands (Vixie Cron)


As '''permissões''' de acesso a arquivos e diretórios permitem protejer o sistema de
Para saber se um '''processo está rodando''', como por exemplo o firefox, pode-se usar o comando:
arquivos do Linux do acesso indevido por pessoas ou programas não autorizados.
ps aux | grep firefox
evandro  1886 10.6  3.5 980504 261976 ?      Sl  18:52  3:09 /usr/lib/firefox/firefox


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'').
Para '''matar um processo''' deve-se especificar o PID (Identificador do Processo), por exemplo, para matar o firefox:
kill 1886


O '''grupo''' (''group'') permite atribuir permissões de acesso a arquivos e diretórios
Caso processo esteja travado, deve utilizar o seguinte parâmetro:
comuns a um grupo de usuários.
  kill -9 1886
 
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''' ('''''R'''ead'') para arquivos, ou no caso de diretório listar seu conteúdo (por exemplo com ls);
*'''Escrita''' ('''''W'''rite'') no arquivo, ou no caso de diretório a criação de arquivos ou sub-diretórios dentro dele;
*'''Execução''' (''e'''X'''ec'') 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:
:#Esquema de permissões (-rw-r-----);
:#Número de ligações do arquivo ou diretório;
:#Dono do arquivo;
:#Grupo do dono do arquivo;
:#Tamanho do arquivo;
:#Mês Dia e Hora da criação do arquivo;
:#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:
{| border="1" cellpadding="2" style="text-align: center;"
!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 <ref name=VALLE/>:
*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''').
 
===Alterando permissões padrão===
 
;Comando umask: Permite alterar o padrão de permissões para arquivos novos a serem criados.
 
O comando '''umask''' usa três algarismos '''octal''' que formam uma '''máscara''' para as permissões dos novos arquivos e diretórios que serão criados.
 
Exemplos:
umask 777
:Usuário, grupo e outros não terão nenhuma permissão sobre novos arquivos criados. Seria equivalente a chmod 000.
umadk 000
:Usuário, grupo e outros terão permissão de leitura, escrita e execução sobre novos arquivos criados. Seria equivalente a chmod 777.
umask 022
:Usuário terá permissão de leitura, escrita e execução e o grupo e outros terão permissão de leitura e execução sobre novos arquivos criados. Seria equivalente a chmod 755. Este é o modo padrão para criação de arquivos e diretórios no Linux.
 
;Alterar de forma permanente a máscara umask: Deve editar o arquivo '''~.profile''' e redefinir o o valor de '''umask'''.
 
===Modificando o dono e o grupo de um arquivo===
 
;Comando chown: Modifica o '''dono''' de um arquivo.
chown novo_dono arquivo
;Comando chgrp: Modifica o '''grupo''' de um arquivo.
chgrp novo_grupo arquivo


==Referências==
==Referências==
Linha 365: Linha 245:


----
----
--[[Usuário:Evandro.cantu|Evandro.cantu]] ([[Usuário Discussão:Evandro.cantu|discussão]]) 18h21min de 5 de julho de 2015 (BRT)
[[Usuário:Evandro.cantu|Evandro.cantu]] ([[Usuário Discussão:Evandro.cantu|discussão]]) 10h25min de 22 de junho de 2021 (-03)
----
----


[[Categoria:Administração de Servidores]]
[[Categoria:Administração de Servidores]]  [[Categoria:Introdução a Informática e as Redes de Computadores]]

Edição atual tal como às 20h42min de 23 de setembro de 2022

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, para computadores PDP-11 (DEC - Digital Equipament Corporation), demonstrando a relativa facilidade de migração para outros computadores. A DEC foi uma empresa pioneira de computadores nos EUA e tinha entre seus produtos os mini-computadores PDP e VAX, muito populares nas comunidades científica e de engenharia nos anos 70 e 80. A DEC foi comprada pela Compaq, que por sua vez se fundiu com a Hewlett-Packard [1].
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 [2].
O nome Linux surgiu da mistura de Linus + Unix. Linus é o nome do criador do Linux, Linus Torvalds, que construiu uma implementação do Unix em linguagem C para computadores pessoais.
Utilização do Linux como servidores
O Linux hoje é utilizado em desktops, laptops, smartphones (como o Android) computadores de placa única (como o Raspberry Pi) e outros dispositivos, como roteadores. Contudo, o papel de servidor se mantem, sendo um dos sistemas operacionais mais utilizados na montagem de servidores de rede local e servidores Internet [2]:
  • 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, nos meses de abril (versão ano.04) e outubro (versão ano.10). Cada versão tem atualizações de segurança gratuitas por pelo menos 18 meses. A versão de Longo Tempo de Suporte (LTS), lançada nos anos pares no mês de abril, o suporte é três anos para desktops, e cinco anos para servidores.

Últimas versões Lixux
  • Ubuntu 22.04 LTS
  • Ubuntu 21.10
  • Ubuntu 21.04
  • Ubuntu 20.10
  • Ubuntu 20.04 LTS
  • Ubuntu 19.10
  • Ubuntu 19.04
  • Ubuntu 18.10
  • Ubuntu 18.04 LTS
  • Ubuntu 17.10
  • ...

Comandos Básicos Linux

Embora o Linux possua interface gráfica, como o Gnome ou KDE, o administrador do sistema muitas vezes prefere (ou necessita) executar comandos de linha em um terminal.

O ambiente tradicional do Unix é o CLI (Command Line Interface), onde você digita os comandos para dizer ao computador o que ele deve fazer.

Site para treinar comandos básicos
Terminal Linux.
Sites com comandos básicos para praticar

Arquivos e diretórios no Linux

Arquivos
No Linux os arquivos armazenam informações que podem ser do tipo texto, áudio, imagem, vídeo, binários, etc.
O nome de um arquivo é formado por um nome e uma extensão, a qual indica o tipo do arquivo. Por exemplo:
  • texto.txt -> Arquivo de texto sem formatação, codificados em ASCII.
  • figura.jpg -> Arquivo de imagem do tipo jpg.
Diretórios
No Linux os diretórios são equivalentes as Pastas do sistema Windows. Permitem organizar as informações de forma hierárquica através de diretórios e subdiretórios.
Alguns dos principais diretórios do sistema Linux são:
  • / -> Diretório raiz do sistema.
  • /home/nome_usuario -> Diretório pessoal do usuário que está logado no sistema.
  • /etc -> Diretório com arquivos de configuração do sistema.

Comandos de arquivos e diretórios

Mostrar o diretório corrente
pwd
Quando um usuário loga no sistema o sistema automaticamente o posiciona no diretório /home/nome_usuario, que é seu diretório pessoal.
Listar o conteúdo de um diretório
ls
ls -l
ls -a
O parâmetro -l lista conteúdo do diretório incluindo detalhes das permissões de acesso, tamanho do arquivo e data de criação.
O parâmetro -a lista também arquivos ocultos, os quais iniciam com ".", por exemplo, .profile.
Criar arquivo vazio
touch nome_arquivo
Listar conteúdo de arquivo
cat nome_arquivo

Inserir conteúdo no arquivo a partir de edição no teclado.

cat > nome_arquivo

Acrescentar conteúdo no final de um arquivo a partir de edição no teclado.

cat >> nome_arquivo
A edição é finalizada com:
Ctrl-d  -> Salvar e sair
Ctrl-c  -> Sair sem salvar
Criar diretório
mkdir nome_diretorio
Remover diretório
rmdir nome_diretorio
Remove diretório vazio. Se o diretório não estiver vazio não consegue remover.
Mudar para o diretório especificado
cd nome_diretorio

Mudar para o diretório de nível superior.

cd ..
Copiar arquivos
cp arquivo1 arquivo2

Copiar recursivamente, incluindo os arquivos e subdiretórios, o diretório dir1 para o dir2.

cp -r dir1 dir2
Mover arquivos
mv arquivo1 arquivo2
Remover arquivos
rm nome_arquivo

Remover recursivamente diretórios e seu conteúdo:

rm -r nome_diretorio

Exercícios sobre comandos de arquivos e diretórios

Em seu diretório pessoal, crie a seguinte uma estrutura de diretórios incluindo o Brasil e os estados do sul e arquivos com as cidades citadas:

Brasil
+ PR
| + Curitiba
| + Guarapuava
| + Foz_do_Iguaçu
+ SC
| + Florianopolis
| + Blumenau
| + Joinville
+ RS
  + Porto_Alegre
  + Caxias_do_Sul
  1. Crie os diretórios com mkdir.
  2. Use cd para mudar de diretórios.
  3. Crie os arquivos das cidades com touch.
  4. Insira no arquivo Curitiba, usando cat >, a frase: "Maior cidade do estado.".
  5. Copie o arquivo Curitiba, usando cp, para os arquivos Joinville e Porto_Alegre.
  6. Insira no final do arquivo Curitiba, usando cat >>, a frase "Capital do PR.".
  7. Insira no final do arquivo Porto_Alegre, usando cat >>, a frase "Capital do RS.".
  8. Insira no final do arquivo Joinville, usando cat >>, a frase "Cidade industrial.".
  9. Insira no arquivo das demais cidades, usando cat >, frases que as caracterize.

Navegador modo texto

lynx URL

Comandos com informações correntes do sistema

Calendário
cal
Data e hora
date
Usuários logados no sistema
who

Usuário logado na seção:

whoami

Informações sobre um usuário:

finger nome_usuario

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.


Gerenciamento de serviços e processos

Cada serviço rodando no Linux, como um Servidor Apache, são chamados deamons ou serviços do sistema [2].

A tarefa de iniciar ou parar os serviços do sistema é automatizada por um conjunto de scripts, localizados na pasta /etc/init.d:

  • Para visualizar os serviços no init.d:
cd /etc/init.d
ls
  • Para iniciar um serviço usa-se o comando:
sudo service apache2 start
  • Para parar um serviço usa-se o comando:
sudo service apache2 stop

Cada processo no Linux é um aplicativo ou serviço ativo no sistema.

Para listar todos os processos ativos, usa-se o comando:

ps aux

Para saber a função de um processo, pode-se usar o comando:

whatis
Por exemplo, para saber qual o processo cron:
whatis cron
cron (8) - daemon to execute scheduled commands (Vixie Cron)

Para saber se um processo está rodando, como por exemplo o firefox, pode-se usar o comando:

ps aux | grep firefox
evandro   1886 10.6  3.5 980504 261976 ?       Sl   18:52   3:09 /usr/lib/firefox/firefox

Para matar um processo deve-se especificar o PID (Identificador do Processo), por exemplo, para matar o firefox:

kill 1886

Caso processo esteja travado, deve utilizar o seguinte parâmetro:

kill -9 1886

Referências

  1. DEC na Wikipédia https://pt.wikipedia.org/wiki/Digital_Equipment_Corporation
  2. 2,0 2,1 2,2 MORIMOTO, C. E. Seridores Linux: Guia prático, Sul Editores, Porto Alegre, 2013.

Evandro.cantu (discussão) 10h25min de 22 de junho de 2021 (-03)