Como verificar se um arquivo é gravável no Linux

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como verificar se um arquivo é gravável no Linux usando vários métodos. Começaremos usando o comando test -w para determinar rapidamente a capacidade de escrita e entender seu uso em scripts de shell.

Em seguida, você verificará as permissões do arquivo em detalhes usando o comando ls -l, interpretando a saída para entender a propriedade, o grupo e outras permissões. Finalmente, você inspecionará as informações de acesso ao arquivo de forma mais abrangente com o comando stat.

Testar a capacidade de escrita com test -w

Nesta etapa, aprenderemos como verificar se você tem permissão para escrever em um arquivo ou diretório usando o comando test com a opção -w. Entender as permissões de arquivo é crucial no Linux, pois determina quem pode ler, escrever e executar arquivos.

O comando test é um comando de shell embutido que verifica condições e retorna um status de saída de 0 (verdadeiro) ou 1 (falso). A opção -w verifica especificamente se um arquivo ou diretório é gravável pelo usuário atual.

Vamos criar um arquivo simples no seu diretório ~/project. Usaremos o comando touch, que cria um arquivo vazio se ele não existir.

Navegue até o seu diretório do projeto, se você ainda não estiver lá:

cd ~/project

Agora, crie um arquivo chamado my_test_file.txt:

touch my_test_file.txt

Você pode verificar se o arquivo foi criado usando o comando ls:

ls

Você deve ver my_test_file.txt listado na saída.

Agora, vamos usar o comando test -w para verificar se você pode escrever neste arquivo. Vamos combiná-lo com um comando echo para ver o resultado.

test -w my_test_file.txt && echo "Writable" || echo "Not writable"

Vamos detalhar este comando:

  • test -w my_test_file.txt: Isso verifica se my_test_file.txt é gravável.
  • && echo "Writable": Se o comando test retornar verdadeiro (status de saída 0), o operador && executa o próximo comando, que imprime "Writable".
  • || echo "Not writable": Se o comando test retornar falso (status de saída 1), o operador || executa o próximo comando, que imprime "Not writable".

Como você criou o arquivo como o usuário labex no seu diretório home, você deve ter permissões de escrita, e a saída deve ser:

Writable

O comando test -w é frequentemente usado em scripts de shell para verificar permissões antes de tentar escrever em um arquivo, evitando possíveis erros.

Clique em Continuar para prosseguir para a próxima etapa.

Verificar permissões com ls -l

Nesta etapa, usaremos o comando ls -l para visualizar informações detalhadas sobre arquivos e diretórios, incluindo suas permissões. Este comando é essencial para entender quem pode acessar o quê em um sistema Linux.

O comando ls lista arquivos e diretórios. A opção -l fornece um formato de "listagem longa", que inclui permissões, propriedade, tamanho e hora da modificação.

Certifique-se de estar no diretório ~/project:

cd ~/project

Agora, execute o comando ls -l para ver os detalhes dos arquivos neste diretório. Você deve ver o arquivo my_test_file.txt que você criou na etapa anterior.

ls -l

A saída será algo parecido com isto:

-rw-rw-r-- 1 labex labex    0 Month Day HH:MM my_test_file.txt

Vamos detalhar a primeira parte da saída, que representa as permissões do arquivo:

-rw-rw-r--

Esta string de dez caracteres informa sobre o tipo de arquivo e suas permissões para diferentes usuários.

  1. O primeiro caractere (- neste caso) indica o tipo de arquivo.
    • -: Arquivo regular
    • d: Diretório
    • l: Link simbólico
    • E outros...
  2. Os próximos nove caracteres são agrupados em três conjuntos de três:
    • O primeiro conjunto (rw-): Permissões para o proprietário do arquivo.
    • O segundo conjunto (rw-): Permissões para o grupo ao qual o arquivo pertence.
    • O terceiro conjunto (r--): Permissões para outros (todos os outros no sistema).

Dentro de cada conjunto de três caracteres:

  • r: Permissão de leitura (permite visualizar o conteúdo do arquivo ou listar o conteúdo do diretório).
  • w: Permissão de escrita (permite modificar o arquivo ou criar/excluir arquivos dentro de um diretório).
  • x: Permissão de execução (permite executar o arquivo como um programa ou entrar em um diretório).
  • -: Indica que a permissão não foi concedida.

Então, para my_test_file.txt com permissões -rw-rw-r--:

  • O proprietário (labex) tem permissões de leitura (r) e escrita (w).
  • O grupo (labex) tem permissões de leitura (r) e escrita (w).
  • Outros têm apenas permissão de leitura (r).

Esta saída confirma por que o comando test -w na etapa anterior retornou "Writable" para o usuário labex – porque o proprietário (labex) tem permissão de escrita (w).

Entender a saída de ls -l é fundamental para gerenciar arquivos e permissões no Linux.

Clique em Continuar para prosseguir.

Inspecionar acesso ao arquivo com stat

Nesta etapa, usaremos o comando stat para obter informações detalhadas sobre um arquivo ou sistema de arquivos. Enquanto ls -l fornece uma visão geral rápida, stat oferece uma análise muito mais abrangente dos metadados do arquivo, incluindo horários de acesso, modificação e alteração.

Certifique-se de estar no diretório ~/project:

cd ~/project

Agora, vamos usar o comando stat no arquivo my_test_file.txt que você criou anteriormente:

stat my_test_file.txt

A saída será bastante detalhada e pode ser semelhante a isto:

  File: my_test_file.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: ---h/---d       Inode: ---         Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 5000/   labex)   Gid: ( 5000/   labex)
Access: YYYY-MM-DD HH:MM:SS.SSSSSSSSS +ZZZZ
Modify: YYYY-MM-DD HH:MM:SS.SSSSSSSSS +ZZZZ
Change: YYYY-MM-DD HH:MM:SS.SSSSSSSSS +ZZZZ
 Birth: -

Vamos analisar algumas das principais informações fornecidas por stat:

  • File: O nome do arquivo.
  • Size: O tamanho do arquivo em bytes.
  • Access: (0664/-rw-rw-r--): Esta linha mostra as permissões nos formatos octal (0664) e simbólico (-rw-rw-r--). Isso corresponde às permissões que vimos com ls -l.
  • Uid: ( 5000/ labex): O ID do Usuário (UID) e o nome de usuário do proprietário do arquivo.
  • Gid: ( 5000/ labex): O ID do Grupo (GID) e o nome do grupo do grupo do arquivo.
  • Access: A última vez que o arquivo foi acessado (lido).
  • Modify: A última vez que o conteúdo do arquivo foi modificado.
  • Change: A última vez que os metadados do arquivo (como permissões, propriedade, etc.) foram alterados.
  • Birth: O tempo de criação do arquivo (pode não estar disponível em todos os sistemas de arquivos).

O comando stat fornece uma análise mais aprofundada das propriedades de um arquivo do que ls -l. É particularmente útil quando você precisa de carimbos de data/hora precisos ou informações detalhadas sobre propriedade e permissões de arquivos em diferentes formatos.

Você também pode usar stat com opções para obter informações específicas. Por exemplo, para ver apenas as permissões de acesso em formato octal:

stat -c "%a" my_test_file.txt

Este comando usa a opção -c para especificar um formato personalizado. "%a" é o especificador de formato para permissões de acesso em octal. A saída deve ser:

664

Isso corresponde à permissão octal 0664 mostrada na saída completa de stat (o zero inicial é frequentemente omitido).

Clique em Continuar para concluir este laboratório.

Resumo

Neste laboratório, aprendemos como verificar se um arquivo é gravável no Linux usando o comando test -w. Este comando é uma maneira simples e eficaz de determinar as permissões de escrita e é frequentemente usado em shell scripting para evitar erros. Praticamos a criação de um arquivo e, em seguida, usando test -w combinado com os operadores && e || para exibir se o arquivo é gravável.

Também exploramos como verificar as permissões de arquivo usando o comando ls -l, que fornece informações detalhadas sobre propriedade, grupo e permissões de arquivo em um formato legível. Finalmente, aprendemos como inspecionar os detalhes de acesso ao arquivo usando o comando stat, que oferece informações mais abrangentes sobre o status de um arquivo, incluindo os carimbos de data/hora de acesso, modificação e alteração.