Permissões de arquivos

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você explorará as permissões de arquivos no Linux. Você conhecerá três comandos essenciais: chown, touch e chmod. Essas ferramentas são fundamentais para gerenciar o acesso a arquivos e diretórios em um sistema Linux. Ao final do laboratório, você saberá criar arquivos, alterar a propriedade de arquivos e modificar suas permissões. Entender esses comandos permitirá controlar quem pode ler, escrever e executar arquivos no sistema.

Criar um novo arquivo

Comece criando um novo arquivo com o comando touch. Esse comando versátil pode criar arquivos novos e vazios e atualizar os carimbos de data e hora de arquivos existentes. Pense nele como uma forma rápida de “tocar” em um arquivo: você pode criar o arquivo ou atualizar o horário do último acesso.

Primeiro, confirme que você está no diretório correto. Você trabalhará no diretório project:

cd ~/project

O comando cd significa “change directory” (alterar diretório). O símbolo ~ representa seu diretório pessoal, e /project especifica o subdiretório para o qual você quer ir. Se o diretório project não existir, esse comando provavelmente falhará. Se você não tiver certeza, é uma boa prática criar o diretório primeiro. No entanto, neste ambiente de laboratório, o diretório já deve existir.

Agora, crie um novo arquivo chamado example.txt:

touch example.txt

Esse comando cria um arquivo vazio chamado example.txt no diretório atual. Para confirmar que o arquivo foi criado, use o comando ls:

ls

ls significa “list” (listar). Ele exibe os arquivos e diretórios do local atual. Você deverá ver example.txt na saída. Se o arquivo não aparecer, confirme se você executou o comando touch corretamente e se está realmente no diretório ~/project.

Alterar o proprietário de um arquivo

Agora que você criou um arquivo, aprenda a alterar o proprietário dele. O comando chown permite modificar tanto o usuário quanto o grupo proprietário de um arquivo. A propriedade determina quem tem controle sobre o arquivo.

Primeiro, verifique a propriedade atual do arquivo example.txt:

ls -l example.txt

O comando ls -l (listar em formato detalhado) fornece informações sobre o arquivo, incluindo suas permissões, seu proprietário e seu grupo. Você deverá ver uma saída semelhante a esta:

-rw-rw-r-- 1 labex labex 0 Jul 29 15:11 example.txt

Veja o significado de cada parte:

  1. -rw-rw-r-- representa as permissões do arquivo (você explorará isso mais detalhadamente na Etapa 4). O primeiro caractere indica o tipo de arquivo (- para um arquivo regular, d para um diretório etc.). Os caracteres restantes representam as permissões de leitura, escrita e execução do proprietário, do grupo e de outros usuários.
  2. O primeiro labex é o proprietário atual do arquivo. Esse é o nome de usuário que possui o arquivo.
  3. O segundo labex é o grupo atual do arquivo. Um grupo é um conjunto de usuários que pode compartilhar permissões.
  4. 0 é o tamanho do arquivo em bytes. Como o arquivo está vazio, seu tamanho é zero.
  5. Jul 29 15:11 é a data e a hora da última modificação.
  6. example.txt é o nome do arquivo.

Agora, altere o proprietário do arquivo para o usuário root. root é a conta administrativa dos sistemas Linux e tem privilégios especiais.

sudo chown root:root example.txt

Veja o que esse comando faz:

  • sudo executa o comando com privilégios de root. O sistema provavelmente solicitará sua senha. O comando chown exige privilégios elevados porque pode afetar a segurança do sistema. Sem sudo, você receberá um erro “Permission denied”.
  • chown é o comando usado para alterar a propriedade.
  • root:root especifica o novo proprietário e o novo grupo, ambos definidos como root. A sintaxe é owner:group.
  • example.txt é o arquivo-alvo.

Verifique a alteração:

ls -l example.txt

Agora, o proprietário e o grupo deverão aparecer como root:

-rw-rw-r-- 1 root root 0 Jul 29 15:11 example.txt

Se ainda aparecer labex em vez de root, confirme se você usou sudo ao executar o comando chown e se digitou a senha corretamente.

Alterar o proprietário de um diretório

O comando chown também pode alterar o proprietário de diretórios inteiros e de todo o seu conteúdo. Veja como isso funciona. Esse recurso é especialmente útil para gerenciar estruturas de diretórios complexas nas quais você quer garantir que todos os arquivos e subdiretórios tenham o mesmo proprietário.

Primeiro, crie um novo diretório com alguns arquivos:

mkdir -p new-dir/subdir
echo "Hello, world" > new-dir/file1.txt
echo "Another file" > new-dir/subdir/file2.txt

Veja o que cada comando faz:

  • mkdir -p new-dir/subdir cria o diretório new-dir e seu subdiretório subdir. A opção -p instrui o mkdir a criar os diretórios-pai necessários. Sem -p, se new-dir não existisse, a criação de new-dir/subdir falharia.
  • echo "Hello, world" > new-dir/file1.txt cria um arquivo chamado file1.txt dentro do diretório new-dir e grava nele o texto "Hello, world". O símbolo > é usado para redirecionamento: ele envia a saída do comando echo para o arquivo especificado.
  • echo "Another file" > new-dir/subdir/file2.txt também cria um arquivo chamado file2.txt dentro do diretório new-dir/subdir e grava nele o texto "Another file".

Agora, verifique a propriedade atual:

ls -lR new-dir

ls -lR lista recursivamente o conteúdo de new-dir. A opção -R (recursiva) faz com que ls liste todos os arquivos e subdiretórios dentro de new-dir, incluindo o conteúdo deles.

Você deverá ver algo semelhante a isto:

new-dir:
total 4
-rw-rw-r-- 1 labex labex 13 Jul 29 09:15 file1.txt
drwxrwxr-x 2 labex labex 23 Jul 29 09:15 subdir

new-dir/subdir:
total 4
-rw-rw-r-- 1 labex labex 13 Jul 29 09:15 file2.txt

Isso mostra que o diretório new-dir, o subdiretório subdir e os arquivos file1.txt e file2.txt pertencem todos a labex.

Agora, altere a propriedade de new-dir e de todo o seu conteúdo para o usuário root:

sudo chown -R root:root new-dir

Neste comando:

  • A opção -R instrui o chown a operar recursivamente, alterando a propriedade de todos os arquivos e subdiretórios dentro de new-dir. Isso é essencial: sem -R, somente a propriedade do diretório new-dir seria alterada, enquanto os arquivos e subdiretórios continuariam pertencendo a labex.

Verifique a alteração:

ls -lR new-dir

Agora, você deverá ver:

new-dir:
total 4
-rw-rw-r-- 1 root root 13 Jul 29 09:15 file1.txt
drwxrwxr-x 2 root root 23 Jul 29 09:15 subdir

new-dir/subdir:
total 4
-rw-rw-r-- 1 root root 13 Jul 29 09:15 file2.txt

Como você pode ver, a propriedade do diretório e de todo o seu conteúdo foi alterada para root. Isso demonstra como a opção -R permite aplicar alterações amplas de propriedade em uma estrutura de diretórios.

Alterar as permissões de um arquivo

No Linux, as permissões de arquivos são representadas por uma sequência de letras ou números. Aprenda a ler e alterar essas permissões. Entender as permissões é essencial para proteger seus arquivos e impedir acessos não autorizados.

Primeiro, veja as permissões atuais do arquivo example.txt:

ls -l example.txt

Você poderá ver algo semelhante a isto:

-rw-rw-r-- 1 root root 0 Jul 29 15:11 example.txt

A parte -rw-rw-r-- representa as permissões do arquivo. É nesse ponto que entram as notações numérica e simbólica. Veja cada parte:

  • O primeiro caractere (-) indica que este é um arquivo regular. Outros indicadores comuns são d para diretório e l para link simbólico.
  • Os três caracteres seguintes (rw-) representam as permissões do proprietário: leitura e escrita, mas não execução.
    • r significa permissão de leitura: o proprietário pode abrir e ler o arquivo.
    • w significa permissão de escrita: o proprietário pode modificar o arquivo.
    • x significa permissão de execução: o proprietário pode executar o arquivo, caso ele seja um programa ou script. Um - significa que a permissão foi negada.
  • Os três caracteres seguintes (rw-) correspondem ao grupo. Eles têm o mesmo significado descrito acima, mas se aplicam aos membros do grupo do arquivo.
  • Os três últimos caracteres (r--) correspondem a outros usuários, ou seja, todos os demais. Eles também têm o mesmo significado, mas se aplicam aos usuários que não são o proprietário nem membros do grupo do arquivo.

Agora, altere essas permissões usando o comando chmod. chmod significa “change mode” (alterar modo) e permite modificar essas permissões. Comece pela notação numérica.

sudo chmod 700 example.txt

Neste comando:

  • 700 é uma representação numérica das permissões:
    • O primeiro dígito (7) representa as permissões do proprietário.
    • O segundo dígito (0) representa as permissões do grupo.
    • O terceiro dígito (0) representa as permissões de outros usuários.

Cada dígito é um número de 0 a 7, calculado pela soma dos valores das permissões de leitura (4), escrita (2) e execução (1):

  • 4: permissão de leitura
  • 2: permissão de escrita
  • 1: permissão de execução
  • 0: nenhuma permissão

Assim, 7 (primeiro dígito) concede ao proprietário permissões de leitura (4), escrita (2) e execução (1): 4+2+1=7
0 (segundo dígito) concede ao grupo nenhuma permissão (0+0+0=0).
0 (terceiro dígito) concede a outros usuários nenhuma permissão (0+0+0=0).

Portanto, 700 significa: Proprietário: leitura, escrita e execução. Grupo: nenhuma. Outros: nenhuma.

Verifique a alteração:

ls -l example.txt

Agora, você deverá ver:

-rwx------ 1 root root 0 Jul 29 15:11 example.txt

O proprietário agora tem permissões rwx (leitura, escrita e execução), enquanto o grupo e outros usuários não têm nenhuma permissão.

Alterar as permissões de um diretório

Alterar as permissões de diretórios funciona de forma semelhante à alteração das permissões de arquivos. Pratique criando um novo diretório e modificando suas permissões. As permissões de um diretório controlam quem pode listar seu conteúdo, criar novos arquivos dentro dele e acessar os arquivos que já estão nele.

Primeiro, crie um novo diretório e defina permissões não padrão:

mkdir ~/test-dir
chmod 700 ~/test-dir

Agora, verifique as permissões atuais:

ls -ld ~/test-dir

A opção -d em ls -l instrui o ls a listar o próprio diretório, em vez de seu conteúdo. Sem -d, o ls listaria os arquivos e subdiretórios dentro de test-dir, que está vazio no momento. Você deverá ver:

drwx------ 2 labex labex 4096 Jul 29 15:45 /home/labex/test-dir

O d no início indica que se trata de um diretório. rwx------ indica que o proprietário tem permissões de leitura, escrita e execução, enquanto o grupo e outros usuários não têm nenhuma permissão. Para diretórios:

  • A permissão de leitura (r) permite listar o conteúdo do diretório usando ls.
  • A permissão de escrita (w) permite criar novos arquivos e subdiretórios dentro do diretório.
  • A permissão de execução (x) permite acessar arquivos e subdiretórios dentro do diretório, ou seja, executar cd para entrar nele.

Agora, altere as permissões:

chmod -R 755 ~/test-dir

Neste comando:

  • -R aplica a alteração recursivamente a todos os arquivos e subdiretórios (embora nosso diretório esteja vazio neste caso). É uma boa prática incluir essa opção ao trabalhar com diretórios, mesmo quando eles estão vazios, caso você adicione arquivos posteriormente.
  • 755 concede ao proprietário permissões de leitura, escrita e execução, e concede ao grupo e a outros usuários permissões de leitura e execução.

Veja como decompor 755:

  • Proprietário (7): Leitura (4) + Escrita (2) + Execução (1) = 7
  • Grupo (5): Leitura (4) + Execução (1) = 5
  • Outros (5): Leitura (4) + Execução (1) = 5

Verifique a alteração:

ls -ld ~/test-dir

Agora, você deverá ver:

drwxr-xr-x 2 labex labex 4096 Jul 29 15:45 /home/labex/test-dir

Isso mostra claramente a alteração das permissões: antes, somente o proprietário tinha acesso (700); agora, o proprietário tem acesso total, enquanto os demais podem ler e executar (755). Qualquer usuário pode listar o conteúdo de test-dir e acessar os arquivos dentro dele, mas somente o proprietário pode criar novos arquivos ou modificar os arquivos existentes.

Usar a notação simbólica para permissões

A notação numérica é concisa, mas a notação simbólica pode ser mais intuitiva, especialmente quando você quer alterar apenas uma permissão. A notação simbólica usa letras para representar o usuário, o grupo e outros usuários, além de operadores para adicionar ou remover permissões.

Nesta etapa, você criará um pequeno script de shell e adicionará a ele a permissão de execução.

Primeiro, crie um novo arquivo de script com algum conteúdo:

cd ~/project
echo '#!/bin/bash' > script.sh
echo 'echo "Hello, World"' >> script.sh

Esses comandos fazem duas coisas:

  • O primeiro comando echo cria script.sh e grava nele a primeira linha, #!/bin/bash. Essa linha é chamada de shebang e informa ao Linux que o script deve ser executado com Bash.
  • O segundo comando echo adiciona uma nova linha ao final do arquivo usando >>. Ele grava echo "Hello, World", que exibirá Hello, World quando o script for executado.

Confirme que o arquivo agora contém duas linhas separadas:

cat script.sh

Você deverá ver:

#!/bin/bash
echo "Hello, World"

Agora, verifique as permissões iniciais:

ls -l script.sh

Você deverá ver algo semelhante a isto:

-rw-rw-r-- 1 labex labex 32 Jul 29 16:30 script.sh

Como você pode ver, inicialmente o script tem apenas permissões de leitura e escrita para o proprietário e o grupo, e permissão de leitura para outros usuários. Ele não tem permissão de execução, necessária para executá-lo como um programa.

Tente executar o script:

./script.sh

Você deverá ver um erro “Permission denied”, porque o script ainda não tem permissão de execução. A parte ./ instrui o shell a executar o script localizado no diretório atual.

Agora, adicione a permissão de execução para o proprietário usando a notação simbólica:

chmod u+x script.sh

Neste comando:

  • u se refere ao usuário, ou seja, ao proprietário. As outras opções são g para grupo, o para outros usuários e a para todos (usuário, grupo e outros).
  • +x adiciona a permissão de execução. O símbolo + adiciona uma permissão, enquanto o símbolo - remove uma permissão.

Assim, u+x significa “adicionar a permissão de execução para o proprietário”.

Verifique a alteração:

ls -l script.sh

Agora, você deverá ver:

-rwxrw-r-- 1 labex labex 32 Jul 29 16:30 script.sh

O proprietário agora tem permissões rwx (leitura, escrita e execução).

Execute o script novamente:

./script.sh

Desta vez, você deverá ver a saída:

Hello, World

Este exemplo demonstra claramente por que é necessário adicionar permissões de execução aos scripts e mostra a diferença antes e depois dessa alteração. A notação simbólica facilita a modificação de permissões específicas sem que você precise recalcular toda a representação numérica.

Resumo

Neste laboratório, você explorou comandos essenciais do Linux para gerenciar permissões de arquivos:

  1. Você usou touch para criar novos arquivos e atualizar arquivos existentes.
  2. Você aprendeu a usar chown para alterar a propriedade de arquivos e diretórios, incluindo alterações recursivas em estruturas de diretórios inteiras.
  3. Você praticou o uso de chmod com notação numérica e simbólica para modificar as permissões de arquivos e diretórios, entendendo os diferentes níveis de permissão do proprietário, do grupo e de outros usuários.
  4. Você viu exemplos práticos da importância das permissões, como a necessidade de ter permissão de execução para executar scripts.
  5. Você esclareceu as diferenças entre a notação numérica e a simbólica do chmod e quando cada uma pode ser mais adequada.

Esses comandos são fundamentais para manter a segurança e controlar o acesso em sistemas Linux. Tenha sempre cuidado ao alterar permissões, especialmente ao usar sudo, pois alterações incorretas podem causar consequências significativas para a segurança e o funcionamento do sistema. Confira sempre seus comandos antes de executá-los e entenda as implicações das alterações que você está fazendo.