Servidor Debian - Parte 0 - Estrutura de arquivos e comandos básicos

 

Estrutura de arquivos

É muito bom entender a estrutura de arquivos do linux.
Vou fazer algum comparativo com o Windows, mas nem sempre é o comparativo ideal, pois são sistemas diferentes.

 

O diretório raiz (/)

Todos os arquivos e diretórios do sistema Linux instalado no computador partem de uma única origem: o diretório raiz. Mesmo que estejam armazenados em outros dispositivos físicos, é a partir do diretório raiz – representado pela barra (/) – que você poderá acessá-los.
Também vale lembrar que o único usuário do sistema capaz de criar ou mover arquivos do diretório raiz é o root, ou seja, o usuário-administrador. Isso evita que usuários comuns cometam erros e acabem comprometendo a integridade de todo o sistema de arquivos. É equivalente ao C: do Windows.

Binários executáveis: /bin

No diretório /bin estão localizados os binários executáveis que podem ser utilizados por qualquer usuário do sistema. São comandos essenciais, usados para trabalhar com arquivos, textos e alguns recursos básicos de rede, como o cp, mv, ping e grep. Obs.: na verdade a pasta bin é um link (atalho) da pasta /usr/bin.

 Binários do sistema: /sbin

Assim como o /bin, este diretório armazena executáveis, mas com um diferencial: são aplicativos utilizados por administradores de sistema com o propósito de realizar funções de manutenção e outras tarefas semelhantes. Entre os comandos disponíveis estão o ifconfig, para configurar e controlar interfaces de rede TCP/IP, o fdisk, que permite particionar discos rígidos, por exemplo, o fsck, que permite checar e reparar sistemas de arquivos, o shutdown, utilizado para desligar e reiniciar o sistema,

Programas diversos: /usr

Se você não encontrar um comando no diretório /bin ou /sbin, ele certamente está aqui. O /usr reúne executáveis, bibliotecas e até documentação de softwares usados pelos usuários ou administradores do sistema. Além disso, sempre que você compilar e instalar um programa a partir do código-fonte, ele será instalado nesse diretório.

Configurações do sistema: /etc

No diretório /etc ficam arquivos de configuração que podem ser usados por todos os softwares, além de scripts especiais para iniciar ou interromper módulos e programas diversos. É no /etc que se encontra, por exemplo, o arquivo resolv.conf, com uma relação de servidores DNS que podem ser acessados pelo sistema, com os parâmetros necessários para isso. Grossamente falando seria equivalente à pasta Arquivos de Programas do Windows.

Bibliotecas: /lib

Neste ponto do sistema de arquivos ficam localizadas as bibliotecas usadas pelos comandos presentes em /bin e /sbin. Normalmente, os arquivos de bibliotecas começam com os prefixos ld ou lib e possuem "extensão" so.

Opcionais: /opt

Aplicativos adicionais, que não são essenciais para o sistema, terminam neste diretório.

Aquivos pessoais: /home

No diretório /home ficam os arquivos pessoais, como documentos e fotografias, sempre dentro de pastas que levam o nome de cada usuário. Vale notar que o diretório pessoal do administrador não fica no mesmo local, e sim em /root.

Inicialização: /boot

Arquivos relacionados à inicialização do sistema, ou seja, o processo de boot do Linux, quando o computador é ligado, ficam em /boot.

Volumes e mídias: /mnt e /media

Para acessar os arquivos de um CD, pendrive ou disco rígido presente em outra máquina da rede, é necessário "montar" esse conteúdo no sistema de arquivos local, isso é, torná-lo acessível como se fosse apenas mais um diretório no sistema.
Em /media ficam montadas todas as mídias removíveis, como dispositivos USB e DVDs de dados. Já o diretório /mnt fica reservado aos administradores que precisam montar temporariamente um sistema de arquivos externo.

Serviços: /srv

Dados de servidores e serviços em execução no computador ficam armazenados dentro desse diretório.

Arquivos de dispositivos: /dev

No Linux, tudo é apresentado na forma de arquivos. Ao plugar um pendrive no computador, por exemplo, um arquivo será criado dentro do diretório /dev e ele servirá como interface para acessar ou gerenciar o drive USB. Nesse diretório, você encontra caminhos semelhantes para acessar terminais e qualquer dispositivo conectado ao computador, como o mouse e até modems.

Arquivos variáveis: /var

Todo arquivo que aumenta de tamanho ao longo do tempo está no diretório de arquivos variáveis. Um bom exemplo são os logs do sistema, ou seja, registros em forma de texto de atividades realizadas no Linux, como os logins feitos ao longo dos meses.

Processos do sistema: /proc

Lembra da história de que tudo funciona como um arquivo no Linux? Pois o /proc é a prova disso. Nesse diretório são encontrados arquivos que revelam informações sobre os recursos e processos em execução no sistema. Quer um exemplo? Para saber há quanto tempo o Linux está sendo usado desde a última vez em que foi iniciado, basta ler o arquivo /proc/uptime.

Arquivos temporários: /tmp

Arquivos e diretórios criados temporariamente tanto pelo sistema quanto pelos usuários devem ficar nesse diretório. Boa parte deles é apagada sempre que o computador é reiniciado.

Como fica fácil perceber, os nomes dos diretórios dão dicas do que pode ser encontrado em seu interior e, com alguns meses de uso, você estará navegando por eles com facilidade.


Comandos básicos

Bom, com o sistema instalado, vamos conhecer um pouco sobre o Linux.

Quando se logar no sistema você se deparará com o seguinte:

altair@servidor:~$

altair: Nome do usuário logado atualmente;
@servidor: "AT" hostname. Indica que você está logado no computador com nome servidor;
~: O "~" representa que você está na sua pasta home, ou seja, "/home/altair"; 
$: Esse símbolo significa que o usuário "altair" é um usuário, não um Super Usuário, (nesse caso o símbolo seria "#").

Então olhando essa linha você sabe o nome do usuário logado, o computador em que está trabalhando, a pasta em que você se encontra atualmente e seu privilégio de usuário.

ls

Lista os arquivos do diretório.
Você pode apenas digitar "ls", como "ls /etc" (ls e o nome da pasta) ou passar alguma opção para ele, como em "ls -lha".
A opção -a exibe os arquivos ocultos;
O -l exibe as informações dos arquivos;
O -h exibe de uma forma mais humanizada, melhor para entendermos os tamanhos dos arquivos.

more

Caso o ls traga muito conteúdo, é possível ver linha a linha com o "|more".
Ex.: ls -lha /etc |more

cd

Esse comando acessa o diretório:
Ex.: cd /home/ezio
Nesse exemplo acessamos o diretório "/home;ezio".

Caso quisermos sair de um diretório, acessamos a pasta "..".
Ex.: cd ..

E caso quisermos ir direto para a raiz, basta acessar a "/".
Ex.: cd /

cp

Este comando faz a cópia do arquivo apontado.
Ex.: cp /etc/samba/smb.conf /etc/samba/bkp_smb.conf
No exemplo efetuamos a cópia do arquivo smb.conf para o mesmo diretório com o nome bkp_smb.conf.

mv

Funciona como o cp, porém move o arquivo.

mkdir

Cria uma pasta.
Ex.: mkdir /arquivos
Cria uma pasta chamada "arquivos" na raiz "/".

rm

Exclui um diretório.
Muitas vezes não será possível excluir o diretório pois o memso possui algum conteúdo, nesse caso utilizamos o -R para apagar também todo seu conteúdo. (Mas cuidado!! Pois você está apagando o diretório.)

ip addr

Verifica o IP de seu computador.

neofetch

Exibe as informações básicas de seu hardware e software como processador, sistema operacional, kernel, resolução, placa de vídeo, memória, etc.

man

Serve como um manual do comando. Lá você encontrará a função do comando e todas as opçoes dele.
Ex.: man mkdir
 

history

Exibe um histórico com os comandos que você já digitou.

apt

Apt é o comando para gerenciarmos pacotes. Se quisermos instalar um novo recurso, digitamos o nome do programa que queremos instalar. Na minha opinião, muito mais prático que no Windows, onde vem todo aquele instalador te oferecendo Baidu,  Opera, e outros programas que você não está interessado.
Ex.: apt install samba

Mas caso você não conheça exatamente o nome do programa que precisa, basta procurar utilizando o apt search.
Ex.: apt search apache

Buscando nesse site você consegue encontrar diversas alternativas para programas que utilizamos.

Para desinstalar um programa basta utilizar apt remove ou apt purge.
O comando "apt remove" remove apenas os binários e dependências que não são mais utilizados, mas os arquivos de configuração permanecem.
Já o comando "apt purge" remove tudo, até os arquivos de configuração.


apt autoremove: autoremove é usado para remover pacotes que foram instalados automaticamente para satisfazer dependências de outros pacotes e que já não são mais necessários.

nano

As configurações dos programas no linux são feitos em "arquivos de texto", portanto para editá-los utilizaremos o Nano que nada mais é do que nosso editor de texto e, na minha opinião, mais amigável.
Existem diversos outros programas como o Vi, Vim, Emacs, etc.

fdisk [opções]

O fdisk permite gerenciar partições, é obrigatório o uso das seguintes opções:

-b tamanho: especifica o tamanho do setor. São valores válidos: 512, 1024, 2048 or 4096. Usado apenas nas versões antigas do kernel.
-C tamanho: especifica o número de cilindros do disco.
-h: exibe informações sobre o fdisk.
-l: lista as partições existentes no disco atual (caso o usuário não especifique o disco).
-s partição: lista o tamanho da partição em blocos. 
-v: exibe versão do aplicativo.
 

df

Utilizado para saber como anda o espaço em disco ou de um diretório específico:
Ex.: df -h /var
Ex.: df -h
Sist. Arq.      Tam. Usado Disp. Uso% Montado em
udev            486M     0  486M   0% /dev
tmpfs           101M  5,6M   95M   6% /run
/dev/sda1        26G  6,1G   18G  26% /
tmpfs           502M     0  502M   0% /dev/shm
tmpfs           5,0M  4,0K  5,0M   1% /run/lock
tmpfs           502M     0  502M   0% /sys/fs/cgroup
/dev/sda2        22G  704M   21G   4% /var
tmpfs           101M   12K  101M   1% /run/user/1000


Obs.: Aqui podemos ver que o /dev/sda1 com o Debian 10 recém-instalado ocupa cerca de 6,1GB em disco.

mount

Para montar unidades de disco, pendrives, etc, muitas vezes é necessário monta-las manualmente. Para isso usamos o comando mount.
Ex.: mount /dev/sdc1 /media/pendrive

Com isso ele ira montar o pendrive (/dev/sdc1) na pasta /media/pendrive.
Para saber os discos que o linux está reconhecendo utilize o comando fdisk -l.

Para montar uma pasta compartilhada na rede em um PC Windows, basta usar:
mount -t cifs //192.168.1.100/compartilhamento /media/arquivos -o username=usuario,password=senha

Para que o linux monte sua unidade automaticamente, na inicialização, precisamos acessar o arquivo fstab
sudo nano /etc/fstab

E adicionar o comando de montagem da unidade que precisar:
Ex.:

/dev/sdb2 /media/arquivos ntfs  auto,rw,exec,users,dmask=000,fmask=111,nls=utf8 0 0

Reiniciar o PC.
 
No caso de um compartilhamento Windows, no fstab, usar:
//192.168.1.100/compartilhamento /media/arquivos cifs  rw,username=usuario,password=senha 0 0

su

Lembra que comentei que o usuário root é um super-usuário?
Utilizando o comando "su", você pode deixar o seu usuário como super-usuário, desde que ele seja autorizado a isso. Basta digitar "su", então o sistema solicitará a senha de root e você estará logado como super-usuário.
Obs.: No Linux Mint, durante a instalação não é solicitado o cadastro da senha de root, então, com seu usuário, digite:
sudo passwd root
E crie a senha de root

sudo

O sudo siginifica "Super User Does", ou seja, fazer como super usuário.
É utilizado na hora de fazer tarefas administrativas como instalação de programas, alteração de configurações, alteração de arquivos importantes, etc.
Basta, com seu usuário, colocar o sudo antes do comando:
sudo apt update
Obs.: No Debian o sudo não vem instalado, então precisamos instalar:
apt install sudo
Depois precisamos adicionar o nosso usuário ao grupo sudo:
adduser altair sudo
 

shutdown, halt, poweroff, reboot

Shutdown
O shutdown serve para reiniciar ou desligar o computador.
Ex.:
# shutdown 
# shutdown now 
# shutdown 13:20
# shutdown -r now    #reinicia o sistema agora
# shutdown -p now    # faz um poweroff agora
# shutdown -H now    # executa o halt agora
# shutdown -r09:35   # reinicia a máquina no horário especificado, no caso, 09:35am
shutdown -c          # Cancela o desligamento agendado
 
Halt
O halt instrui o hardware a parar todas as funções de CPU, mais sem desligar. Você pode usá-lo para deixar o sistema em um estado onde você pode executar manutenção de baixo nível.
Note que em alguns casos, ele desliga completamente o sistema. Vamos ver alguns exemplos de comandos:
Ex.:
# halt                # para a máquina 
# halt -p             # executa um poweroff
# halt --reboot       # reinicia a máquina
 
Power off
Poweroff envia um sinal ACPI com instruções para desligar o sistema. Vejamos alguns exemplos:
Ex.:
# poweroff              #poweroff 
# poweroff --halt     #executa um halt
# poweroff --reboot #reinicia a máquina

Reboot
O reboot envia instruções para reiniciar o sistema.
Ex.:
# reboot                  #reinicia a máquina
# reboot --halt         #executa um halt 
# reboot -p              #executa um poweroff

systemctl

O Systemd é um gerenciador de sistema de inicialização que é amplamente usado tornando-se o novo padrão para computadores com Linux.
O systemctl serve para reiniciar, parar ou iniciar um serviço.

Para verificar o status de um serviço em seu sistema, você pode usar o comando status:

systemctl status application.service

Para iniciar um serviço no boot, utilize o comando enable:

sudo systemctl enable application.service
 
Obs.: Isto irá criar um link simbólico de cópia do sistema do arquivo de serviço (normalmente em /lib/systemd/system ou /etc/systemd/system) para o local no disco onde systemd procura por arquivos de inicialização automática (geralmente /etc/systemd/system/some_target.target.wants

Para desativar o serviço que é iniciado automaticamente, você pode usar o disable:

sudo systemctl disable application.service


Para iniciar um serviço do systemd, executando instruções no arquivo de unidade do serviço, use o prefixo start no comando

sudo systemctl start application.service

Para parar um serviço em execução, você pode usar o comando prefixo stop no comando:

sudo systemctl stop application.service

Para reiniciar um serviço em execução, você pode usar o comando restart:

sudo systemctl restart application.service

Se a aplicação em questão é capaz de recarregar seus arquivos de configuração (sem reiniciar), você pode usar o comando reload comando para iniciar esse processo:

sudo systemctl reload application.service
 

pwd

Serve para saber em qual pasta você está.

whoami (Who am I) 

Serve para saber qual usuário está logado.

&&

É utilizado para executar mais de um comando por vez:
Ex.: apt update && apt upgrade
 

chmod

Define as permissões do arquivo ou diretório.
Muitas vezes queremos alterar a permissão do diretório e de todo o seu conteúdo, então utilizamos chmod 777 -R /arquivos (altera a permissão para 777 do diretório "arquivos" localizado na raiz "/" e de todo o seu conteúdo -R redundantemente).
 

neofetch

Exibe informações do sistema, como versão do kernel, informalções do SO., resolução da tela, interface gráfica, terminal, tema, processador, placa de vídeo, e memória.

Permissões de arquivos 

Na seção de comandos básicos vimos o comando chmod.
Aqui entenderemos como funcionam as permissões no linux.
Ex.:

root@servidor:/# ls -lha
total 72K
drwxr-xr-x  19 root root 4,0K mar 24 17:53 .
drwxr-xr-x  19 root root 4,0K mar 24 17:53 ..
drwxr-xr-x   2 root root 4,0K mar 24 17:53 arquivos
lrwxrwxrwx   1 root root    7 mar 23 14:56 bin -> usr/bin
drwxr-xr-x   3 root root 4,0K mar 24 00:07 boot
drwxr-xr-x  16 root root 3,2K mar 24 12:15 dev
drwxr-xr-x 125 root root 4,0K mar 24 12:36 etc
drwxr-xr-x   3 root root 4,0K mar 23 20:32 home
lrwxrwxrwx   1 root root    7 mar 23 14:56 lib -> usr/lib

drwxr-xr-x   3 root root 4,0K fev  8 09:51 media
drwxr-xr-x   2 root root 4,0K fev  8 09:51 mnt
drwxr-xr-x   2 root root 4,0K fev  8 09:51 opt
dr-xr-xr-x 144 root root    0 mar 25  2020 proc
drwx------   6 root root 4,0K mar 24 12:15 root
drwxr-xr-x  26 root root  740 mar 24 17:52 run
lrwxrwxrwx   1 root root    8 mar 23 14:56 sbin -> usr/sbin
drwxr-xr-x   2 root root 4,0K fev  8 09:51 srv
dr-xr-xr-x  12 root root    0 mar 24 12:15 sys
drwxrwxrwt  16 root root 4,0K mar 24 15:26 tmp
drwxr-xr-x  12 root root 4,0K mar 23 15:01 usr
drwxr-xr-x  12 root root 4,0K mar 23 15:01 var


Vamos analisar a linha em negrito:
drwxr-xr-x   2 root root 4,0K mar 24 17:53 arquivos

O diretório "arquivos", possui 4Kbytes, foi alterado em 24 de março às 17:53, seu dono é o root e o grupo do criador é root e possui as permissões:

drwxr-xr-x

O primeiro caractere "d" indica o tipo do arquivo, neste caso "d" indica que é um diretório.

Cada arquivo ou pasta tem 3 permissões.

(Usuário Dono) (Grupo Dono) (Outros)

Usuário dono: é o proprietário do arquivo;
Grupo Dono: é um grupo, que pode conter vários usuários;
Outros: se encaixam os outros usuários em geral.

As permissões vão aparecer assim:

(r) Leitura
(w) Escrita
(x) Execução

Como as permissões são divididas em 3, irá aparecer assim:

(_ _ _) (_ _ _) (_ _ _), ou seja, (rwx)(rwx)(rwx)

Caso não haja todas as permissões, poderá aparecer incompleto:

rwxr-xr-x, ou seja, neste exemplo:

Dono do arquivo tem permissão de Ler, Escrever e Executar (rwx);
Grupo tem permissão de Ler e Executar (r-x);
Outros tem permissão de Ler e Executar. (r-x);

Textual

Usamos letras antes das permissões (chmod é o comando para modificar permissões de arquivos):

chmod u+rw, g+w, o-rwx teste.txt

Onde:

U - representa usuário;
G - representa grupo;
O - representa outros.

Octal

O modo Octal tem a mesma função de definir permissões, só que em números. Exemplo:

$ chmod 620 teste.txt

(comando) (permissão) (arquivo)

Tipo de permissão Octal:

4 - Indica permissão de leitura;
2 - Permissão de escrita;
1 - Indica permissão de execução;
0 - Indica sem permissões.

Agora é simples, é só somar e ditar as permissões, exemplo:

4 + 2 + 1 = 7 (permissão de rwx)
4 + 2 = 6 (permissão rw)
4 = (permissão r)

Exemplo: A permissão 610 indica que o arquivo tem permissão:

6 para dono do arquivo
1 para grupo e
0 para outros


Ou seja

dono= (rw_) Grupo=(_ _ x) Outros=(_ _ _)


Fonte:

Mais vistos:

Utilitários

Disco 100% no Windows 10