Portal IDEA

Linux Intermediário

 LINUX INTERMEDIÁRIO

 

Aprofundamento no Terminal e Sistema de Arquivos 

Comandos Avançados de Manipulação de Arquivos 

 

O sistema operacional Linux oferece uma poderosa interface de linha de comando (CLI), que permite aos usuários realizarem tarefas complexas de manipulação de arquivos com extrema precisão e eficiência. Neste contexto, o domínio de comandos avançados como find, locate, grep, cut, sort, uniq e xargs torna-se essencial para administradores de sistemas, desenvolvedores e usuários intermediários. Além desses comandos, a capacidade de combinar instruções com pipes (|) e realizar redirecionamentos de entrada e saída (>, >>, 2>, &>) potencializa a automatização e a versatilidade das operações.

1. Comando find

O find é utilizado para localizar arquivos e diretórios com base em critérios como nome, tipo, permissões, tamanho e data de modificação. Sua sintaxe básica é:

find [caminho] [condição] [ação]

Exemplo:

find /home/user -name "*.txt"

Este comando busca todos os arquivos com a extensão .txt dentro do diretório /home/user. O find permite ainda ações diretas sobre os arquivos encontrados, como -exec, -delete e -print.

Exemplo com ação:

find . -type f -name "*.log" -exec rm {} \;

2. Comando locate

Diferente do find, o locate utiliza um banco de dados indexado para encontrar arquivos de maneira extremamente rápida. Esse banco é atualizado periodicamente com o comando updatedb.

Exemplo:

locate arquivo.conf

Por usar indexação, o locate pode retornar resultados obsoletos se o banco de dados não estiver atualizado.

3. Comando grep

O grep é uma ferramenta de busca que localiza padrões em arquivos de texto. É extremamente útil em análise de logs, filtros e relatórios.

Exemplo:

grep "erro" arquivo.log

A opção -r permite buscas recursivas em diretórios, e -i ignora diferenciação entre maiúsculas e minúsculas:

grep -ri "falha" /var/log

4. Comando cut

O cut extrai colunas específicas de arquivos delimitados por caracteres como tabulações ou vírgulas. Sua aplicação é comum na extração de campos de logs e planilhas.

Exemplo:

cut -d':' -f1 /etc/passwd

Neste caso, extrai-se o primeiro campo (nome de usuário) do arquivo /etc/passwd, utilizando: como delimitador.

5. Comando sort

Ordena as linhas de um arquivo ou fluxo de entrada. Suporta ordenações alfabéticas, numéricas, inversas e baseadas em colunas específicas.

Exemplo:

sort nomes.txt

Para ordenar numericamente:

sort -n

numeros.txt

6. Comando uniq

O uniq remove linhas duplicadas consecutivas. Para funcionar corretamente, é comum utilizá-lo em conjunto com o sort.

Exemplo:

sort arquivo.txt | uniq

Para contar quantas vezes cada linha aparece:

sort arquivo.txt | uniq -c

7. Comando xargs

O xargs lê itens da entrada padrão e os passa como argumentos para um comando. É essencial para manipulações em massa.

Exemplo com find:

find . -name "*.bak" | xargs rm

Neste caso, todos os arquivos .bak encontrados serão removidos. Para tratar nomes com espaços, recomenda-se usar:

find . -name "*.bak" -print0 | xargs -0 rm

8. Filtragem e Pipes (|)

O pipe (|) permite a saída de um comando ser usada como entrada de outro. Isso possibilita a criação de pipelines de processamento de dados de forma elegante e poderosa.

Exemplo:

cat arquivo.txt | grep "erro" | sort | uniq -c | sort -nr

Esse encadeamento retorna os erros únicos no arquivo, contados e ordenados por frequência.

9. Redirecionamentos

Redirecionamentos controlam a entrada e saída de dados no shell:

  • >: redireciona a saída padrão para um arquivo, sobrescrevendo-o.
  • >>: redireciona a saída padrão, mas acrescenta ao final do arquivo.
  • 2>: redireciona a saída de erro (stderr).
  • &>: redireciona tanto stdout quanto stderr para um mesmo destino.

Exemplo:

comando > saida.txt 2> erro.txt

Ou:

comando &> tudo.txt

Também é possível descartar saídas usando /dev/null:

comando > /dev/null 2>&1

Considerações Finais

O domínio desses comandos e conceitos é um divisor de águas para quem busca eficiência e controle em ambientes Linux. Eles permitem o tratamento de grandes volumes de dados, automatização de tarefas e inspeção detalhada de sistemas. A prática e o uso combinado dessas ferramentas formam a base de habilidades que todo usuário intermediário precisa desenvolver para evoluir rumo à administração avançada de sistemas Linux.

Referências Bibliográficas

  • BLUM, Richard. Linux Command Line and Shell Scripting Bible. 4th ed. Wiley, 2021.
  • SHOTTS, William. The Linux Command Line: A Complete Introduction. No Starch Press, 2019.
  • NEGUS, Christopher. Linux Bible. 10th ed. Wiley, 2020.
  • GNU Project. GNU Core Utilities Documentation. Disponível em: https://www.gnu.org/software/coreutils/manual/
  • TLDP. The Linux Documentation Project. Disponível em: http://www.tldp.org/


Permissões e Propriedades de Arquivos no Linux

 

O gerenciamento de permissões e propriedades de arquivos é um dos

fundamentos mais importantes da administração de sistemas Linux. Por meio de um modelo de permissões simples e eficaz, o Linux garante a segurança, a integridade e a organização dos dados e usuários em um sistema multiusuário. Compreender os mecanismos de controle de acesso baseados em permissões e os comandos chmod, chown e chgrp, bem como os bits especiais SUID, SGID e sticky bit, é essencial para a manutenção segura e funcional de ambientes Linux.

1. Modelo de Permissões no Linux

No Linux, cada arquivo ou diretório possui três tipos de permissões: leitura (read – r), escrita (write – w) e execução (execute – x). Essas permissões são atribuídas a três categorias de usuários:

  • Usuário (user): o proprietário do arquivo.
  • Grupo (group): o grupo ao qual o arquivo pertence.
  • Outros (others): todos os demais usuários.

Essas permissões são visualizadas com o comando ls -l, que exibe os arquivos em formato longo. Por exemplo:

-rwxr-xr-- 1 joao desenvolvedores 1234 jun  3 10:15 script.sh

Neste exemplo:

  • O proprietário "joao" tem permissão de leitura, escrita e execução.
  • O grupo "desenvolvedores" tem leitura e execução.
  • Os outros têm apenas leitura.

2. Comando chmod: Modificando Permissões

O comando chmod (change mode) é utilizado para modificar as permissões de arquivos e diretórios. Existem duas formas principais de usá-lo: simbólica e octal.

Forma simbólica

A sintaxe é:

chmod [quem][+/-=][permissão] arquivo

Exemplos:

  • chmod u+x script.sh: adiciona permissão de execução para o usuário.
  • chmod g-w arquivo.txt: remove permissão de escrita do grupo.
  • chmod o=r arquivo.txt: define somente leitura para outros.

Forma octal

Na forma octal, utiliza-se uma combinação de três números que representam as permissões:

  • Leitura (4), escrita (2), execução (1)

Exemplo:

  • chmod 755 script.sh equivale a:
    • Usuário: 7 = r+w+x
    • Grupo: 5 = r+x
    • Outros: 5 = r+x

Outros exemplos comuns:

  • chmod 644: leitura/escrita para o dono, leitura para grupo e outros.
  • chmod 700: acesso total para o dono, nenhum para grupo e outros.

3. Comandos chown e chgrp: Alterando Propriedades

Cada arquivo pertence a um usuário e a um grupo. Para modificar essas propriedades, utilizamos os comandos chown e chgrp.

chown (change owner)

Altera o proprietário e/ou o grupo de um arquivo.

Exemplo:

chown maria arquivo.txt

Define "maria" como nova proprietária.

Para mudar dono e grupo:

chown maria:devs arquivo.txt

chgrp (change group)

Altera apenas o grupo do

arquivo.

Exemplo:

chgrp professores relatorio.pdf

Estes comandos exigem privilégios de superusuário (sudo) para modificar arquivos de outros usuários.

4. Permissões Especiais: SUID, SGID e Sticky Bit

Além das permissões padrão, o Linux possui três bits especiais que controlam comportamentos específicos em arquivos e diretórios: SUID, SGID e sticky bit.

SUID (Set User ID)

Aplicável a arquivos executáveis, faz com que o processo execute com os privilégios do proprietário do arquivo, e não do usuário que o executou.

Exemplo:

chmod u+s arquivo

É representado como s na permissão do usuário (rwsr-xr-x). Um exemplo clássico é o comando passwd, que necessita modificar arquivos do sistema:

-rwsr-xr-x 1 root root /usr/bin/passwd

SGID (Set Group ID)

Quando aplicado a arquivos, tem efeito semelhante ao SUID, mas no contexto do grupo. Em diretórios, o SGID assegura que todos os arquivos criados herdem o grupo do diretório, promovendo colaboração entre usuários de um mesmo grupo.

Exemplo:

chmod g+s /diretório

A permissão aparecerá como rwxr-sr-x.

Sticky Bit

Usado em diretórios, o sticky bit garante que apenas o proprietário do arquivo (ou o root) possa deletá-lo, mesmo que outros usuários tenham permissão de escrita no diretório. É fundamental em diretórios públicos como /tmp.

Exemplo:

chmod +t /publico

Visualmente, aparece como drwxrwxrwt.

5. Boas Práticas de Permissões

  • Evite permissões 777, que concedem total acesso a todos.
  • Use SGID em diretórios compartilhados por grupos.
  • Aplique sticky bit em diretórios públicos.
  • Prefira chmod simbólico para clareza em alterações específicas.
  • Revise permissões com find e ls regularmente para garantir segurança.

Considerações Finais

As permissões de arquivos são um dos pilares da segurança em sistemas Linux. Através de um modelo claro e comandos eficientes, o sistema permite controle refinado sobre quem pode acessar, modificar e executar arquivos. O conhecimento e uso correto de chmod, chown, chgrp e dos bits especiais permite criar ambientes seguros e colaborativos. Em contextos multiusuários ou servidores, dominar essas ferramentas não é apenas útil, mas indispensável.

Referências Bibliográficas

  • SHOTTS, William. The Linux Command Line: A Complete Introduction. No Starch Press, 2019.
  • BLUM, Richard. Linux Command Line and Shell Scripting Bible. 4th ed. Wiley, 2021.
  • NEGUS, Christopher. Linux Bible. 10th ed. Wiley, 2020.
  • GNU Core Utilities. Documentation. Disponível em:
  • https://www.gnu.org/software/coreutils/manual/
  • TLDP. The Linux Documentation Project. Disponível em: http://www.tldp.org/


Gerenciamento de Links e Montagens no Linux

 

O sistema operacional Linux fornece um conjunto robusto de ferramentas para gerenciar arquivos, diretórios e dispositivos de armazenamento. Entre os elementos fundamentais dessa gestão estão os links simbólicos e hard links, bem como os comandos ln, mount, umount e a configuração persistente de montagens via /etc/fstab. O domínio desses recursos permite manipulação avançada da estrutura de diretórios, organização de dispositivos e definição de sistemas de arquivos no ambiente Linux.

1. Links Simbólicos e Hard Links

No Linux, os links são arquivos especiais que apontam para outros arquivos. Existem dois tipos principais:

a) Hard Links

Um hard link é uma referência direta ao inode (estrutura que armazena os metadados do arquivo) do arquivo original. Vários hard links podem apontar para o mesmo inode, ou seja, o mesmo conteúdo é acessado por diferentes nomes.

Características:

  • Mesmo inode, conteúdo idêntico.
  • A exclusão de um link não apaga o conteúdo se outros ainda apontarem para ele.
  • Não funciona com diretórios (por padrão) nem com arquivos em partições diferentes.

Exemplo:

ln arquivo.txt link_duro.txt

b) Links Simbólicos (Soft Links)

Um link simbólico é um atalho para o caminho de outro arquivo. Semelhante a um atalho no Windows, ele armazena o caminho absoluto ou relativo para o destino.

Características:

  • Aponta para o nome (e não para o inode).
  • Pode apontar para diretórios.
  • Pode atravessar sistemas de arquivos diferentes.
  • Se o arquivo original for apagado, o link simbólico se torna "quebrado".

Exemplo:

ln -s arquivo.txt link_simbolico.txt

Para visualizar os links e seus destinos:

ls -l

O link simbólico é indicado por uma seta (->), e o hard link é indistinguível visualmente, exceto pelo mesmo inode (verificado com ls -i).

2. Comando ln: Criando Links

O comando ln é utilizado para criar hard links por padrão. Com a opção -s, cria-se um link simbólico.

Sintaxe geral:

ln [opções] origem destino

Exemplos:

  • Hard link:

ln relatorio.txt copia1.txt

·        Link simbólico:

ln -s /home/usuario/documento.txt atalho.txt

Ao usar ln, o destino não pode existir previamente (exceto com a opção -f para forçar a substituição). Os links simbólicos são particularmente úteis para criar atalhos em diretórios padronizados como /usr/local/bin para

scripts de execução personalizados.

3. Montagem de Dispositivos com mount e umount

No Linux, dispositivos de armazenamento (HDs, SSDs, pendrives, etc.) não são acessados automaticamente por letras como no Windows (C:, D:, etc.). Eles devem ser montados em pontos de montagem — diretórios comuns da árvore /.

Comando mount

O comando mount conecta um dispositivo a um diretório do sistema de arquivos.

mount [opções] dispositivo ponto_de_montagem

Exemplo:

mount /dev/sdb1 /mnt/pendrive

Com isso, o conteúdo do dispositivo /dev/sdb1 será acessível via /mnt/pendrive.

Outras opções comuns:

  • -t especifica o tipo de sistema de arquivos (ext4, vfat, ntfs etc.).
  • -o permite opções como ro (somente leitura), rw (leitura/escrita), noexec (não executável).

Ver montagens ativas:

Mount

Ou

Findmnt

Comando umount

Desmonta um dispositivo, liberando seu uso.

umount ponto_de_montagem

ou

umount /dev/sdb1

É importante garantir que nenhum arquivo esteja sendo usado no dispositivo, caso contrário a desmontagem falhará.

4. Arquivo /etc/fstab: Montagens Permanentes

O arquivo /etc/fstab (file systems table) define quais dispositivos devem ser montados automaticamente durante a inicialização. Ele contém uma lista de entradas com os seguintes campos:

dispositivo  ponto_de_montagem  tipo_fs  opções  dump  pass

Exemplo:

/dev/sda1   /       ext4    defaults    1   1

/dev/sdb1   /dados  ext4    defaults    0   2

  • dispositivo: pode ser /dev/sdX, UUID ou label.
  • ponto_de_montagem: diretório onde o dispositivo será montado.
  • tipo_fs: tipo de sistema de arquivos (ext4, ntfs, xfs, vfat, etc.).
  • opções: defaults, noauto, ro, rw, user, entre outras.
  • dump: geralmente 0.
  • pass: ordem de verificação do fsck.

Montagem com fstab sem reiniciar:

mount -a

Para descobrir UUIDs dos dispositivos:

blkid

Utilizar UUIDs é preferível a dispositivos /dev/sdX, pois estes podem mudar de nome dependendo da ordem de inicialização.

5. Considerações de Segurança e Boas Práticas

  • Evite montar dispositivos sem nosuid e noexec quando não necessários.
  • Utilize o fstab para garantir montagens automáticas em servidores.
  • Use links simbólicos para organizar diretórios complexos ou criar atalhos funcionais.
  • Verifique permissões de pontos de montagem para não expor informações sensíveis.
  • Desmonte dispositivos externos antes de removê-los para evitar corrupção de dados.

Considerações Finais

O gerenciamento de links e montagens é uma das competências mais

gerenciamento de links e montagens é uma das competências mais relevantes para usuários intermediários e administradores de sistemas. Com os links, é possível criar referências eficientes e flexíveis dentro da árvore de diretórios. Com as montagens e o uso do fstab, é possível integrar discos e partições de maneira segura e automatizada ao sistema. Esses conceitos compõem uma base sólida para a manutenção, organização e expansão de sistemas Linux.

Referências Bibliográficas

  • SHOTTS, William. The Linux Command Line: A Complete Introduction. No Starch Press, 2019.
  • BLUM, Richard. Linux Command Line and Shell Scripting Bible. 4th ed. Wiley, 2021.
  • NEGUS, Christopher. Linux Bible. 10th ed. Wiley, 2020.
  • TLDP – The Linux Documentation Project. Disponível em: http://www.tldp.org/
  • GNU Core Utilities. Documentation. Disponível em: https://www.gnu.org/software/coreutils/manual/

Quer acesso gratuito a mais materiais como este?

Acesse materiais, apostilas e vídeos em mais de 3000 cursos, tudo isso gratuitamente!

Matricule-se Agora