Permissões de Arquivos

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, vamos mergulhar no mundo das permissões de arquivos no Linux. Exploraremos 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 deste laboratório, você terá uma compreensão sólida sobre como criar arquivos, alterar o proprietário de arquivos e modificar permissões. O domínio desses comandos permitirá que você controle quem pode ler, gravar e executar arquivos em seu sistema.

Este é um Laboratório Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para concluir cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 92%. Ele recebeu uma taxa de avaliação positiva de 99% dos alunos.

Criando um Novo Arquivo

Vamos começar criando um novo arquivo usando o comando touch. Este comando versátil pode criar novos arquivos vazios e atualizar os carimbos de data/hora de arquivos existentes. Pense nele como uma maneira rápida de "tocar" um arquivo, seja para trazê-lo à existência ou para atualizar seu último horário de acesso.

Primeiro, certifique-se de que você está no diretório correto. Trabalharemos no seu diretório project:

cd ~/project

O comando cd significa "change directory" (mudar diretório). O símbolo ~ representa seu diretório pessoal (home), e /project especifica o subdiretório para o qual queremos nos mover. Se o diretório project não existir, este comando provavelmente falhará. Geralmente é uma boa prática criar o diretório primeiro se você não tiver certeza. No entanto, neste ambiente de laboratório, o diretório já deve existir.

Agora, vamos criar um novo arquivo chamado example.txt:

touch example.txt

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

ls

ls significa "list" (listar). Ele mostra os arquivos e diretórios na sua localização atual. Você deve ver example.txt listado na saída. Se não o vir, verifique novamente se executou o comando touch corretamente e se realmente está no diretório ~/project.

Alterando o Proprietário de um Arquivo

Agora que criamos um arquivo, vamos aprender como alterar seu proprietário. O comando chown nos permite modificar tanto o usuário quanto o grupo proprietário de um arquivo. A propriedade determina quem tem controle sobre o arquivo.

Primeiro, vamos verificar o proprietário atual do nosso arquivo example.txt:

ls -l example.txt

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

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

Vamos detalhar esta saída:

  1. -rw-rw-r-- representa as permissões do arquivo (exploraremos isso mais na Etapa 4). O primeiro caractere indica o tipo de arquivo (- para um arquivo comum, d para diretório, etc.). Os caracteres restantes representam as permissões de leitura, gravação e execução para o proprietário, grupo e outros.
  2. O primeiro labex é o proprietário atual do arquivo. Este é o nome de usuário que detém o arquivo.
  3. O segundo labex é o grupo atual do arquivo. Um grupo é uma coleção de usuários que podem 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 hora da última modificação.
  6. example.txt é o nome do arquivo.

Agora, vamos alterar o proprietário do arquivo para o usuário root. O root é a conta de administrador em sistemas Linux e possui privilégios especiais.

sudo chown root:root example.txt

Aqui está o que este comando faz:

  • sudo executa o comando com privilégios de root. Provavelmente será solicitada sua senha. O chown requer privilégios elevados porque é um comando poderoso que pode afetar a segurança do sistema. Sem o sudo, você receberá um erro de "Permissão negada".
  • chown é o comando para alterar a propriedade (change ownership).
  • root:root especifica o novo proprietário e grupo (ambos definidos como root). A sintaxe é proprietário:grupo.
  • example.txt é o arquivo de destino.

Vamos verificar a alteração:

ls -l example.txt

Agora você deve ver que tanto o proprietário quanto o grupo mudaram para root:

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

Se você ainda vir labex em vez de root, certifique-se de ter usado sudo ao executar o comando chown e de ter inserido sua senha corretamente.

Alterando o Proprietário de um Diretório

O comando chown também pode alterar a propriedade de diretórios inteiros e seus conteúdos. Vamos ver isso em ação. Isso é particularmente útil para gerenciar estruturas de diretórios complexas onde você deseja garantir que todos os arquivos e subdiretórios tenham o mesmo proprietário.

Primeiro, vamos criar 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

Vamos detalhar esses comandos:

  • 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 diretórios pai conforme necessário. Sem o -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 escreve o texto "Hello, world" nele. O símbolo > é usado para redirecionamento; ele pega a saída do comando echo e a direciona para o arquivo especificado.
  • echo "Another file" > new-dir/subdir/file2.txt similarmente cria um arquivo chamado file2.txt dentro do diretório new-dir/subdir e escreve o texto "Another file" nele.

Agora, vamos verificar a propriedade atual:

ls -lR new-dir

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

Você deve ver algo assim:

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, seu subdiretório subdir e os arquivos file1.txt e file2.txt pertencem todos ao usuário labex.

Agora, vamos alterar 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 é crucial; sem o -R, apenas a propriedade do diretório new-dir mudaria, mas os arquivos e subdiretórios dentro dele ainda pertenceriam ao labex.

Vamos verificar a alteração:

ls -lR new-dir

Agora você deve 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 mudou para root. Isso demonstra o poder da opção -R para realizar mudanças abrangentes de propriedade em uma estrutura de diretórios.

Alterando as Permissões de um Arquivo

No Linux, as permissões de arquivos são representadas por uma série de letras ou números. Vamos explorar como ler e alterar essas permissões. Entender as permissões é vital para proteger seus arquivos e evitar acessos não autorizados.

Primeiro, vamos olhar as permissões atuais do nosso arquivo example.txt:

ls -l example.txt

Você pode ver algo como 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. É aqui que entram as notações numérica e simbólica. Vamos detalhar:

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

Agora, vamos alterar essas permissões usando o comando chmod. chmod significa "change mode" (alterar modo), e permite modificar essas permissões. Começaremos com a 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.

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

  • 4: Permissão de leitura
  • 2: Permissão de gravação
  • 1: Permissão de execução
  • 0: Nenhuma permissão

Portanto, 7 (primeiro dígito) dá ao proprietário permissões de leitura (4), gravação (2) e execução (1): 4+2+1=7.
0 (segundo dígito) não dá permissões ao grupo (0+0+0=0).
0 (terceiro dígito) não dá permissões a outros (0+0+0=0).

Dessa forma, 700 significa: Proprietário: leitura, gravação, execução. Grupo: nenhuma. Outros: nenhuma.

Vamos verificar a alteração:

ls -l example.txt

Agora você deve ver:

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

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

Alterando as Permissões de um Diretório

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

Primeiro, vamos criar um novo diretório e definir algumas permissões não padrão:

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

Agora, vamos verificar as permissões atuais:

ls -ld ~/test-dir

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

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

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

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

Agora, vamos alterar 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 incluí-lo ao lidar com diretórios, mesmo que estejam vazios no momento, para o caso de você adicionar arquivos mais tarde.
  • 755 concede permissões de leitura, gravação e execução ao proprietário, e permissões de leitura e execução ao grupo e outros.

Vamos detalhar o 755:

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

Vamos verificar a alteração:

ls -ld ~/test-dir

Agora você deve ver:

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

Isso mostra claramente a mudança nas permissões, de apenas o proprietário ter acesso (700) para o proprietário ter acesso total enquanto outros podem ler e executar (755). Agora, qualquer pessoa pode listar o conteúdo de test-dir e acessar arquivos dentro dele, mas apenas o proprietário pode criar novos arquivos ou modificar os existentes.

Usando Notação Simbólica para Permissões

Embora a notação numérica seja concisa, a notação simbólica pode ser mais intuitiva, especialmente quando você deseja alterar apenas uma única permissão. A notação simbólica usa letras para representar o usuário, grupo e outros, e operadores para adicionar ou remover permissões.

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

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

Este comando faz duas coisas:

  1. Cria um novo arquivo chamado script.sh. A extensão .sh é comumente usada para scripts de shell. Scripts de shell são arquivos executáveis que contêm uma série de comandos que são executados em sequência.
  2. Escreve duas linhas neste arquivo:
    • #!/bin/bash (chamado de shebang) informa ao sistema que este é um script bash. A linha shebang especifica o interpretador que deve ser usado para executar o script. Neste caso, é o /bin/bash, que é o caminho para o interpretador Bash.
    • echo "Hello, World" é um comando que imprimirá "Hello, World" quando o script for executado. O comando echo simplesmente exibe o texto que o segue.
    • \n é um caractere de nova linha, garantindo que os comandos fiquem em linhas separadas no arquivo.

Agora, vamos verificar suas permissões iniciais:

ls -l script.sh

Você deve ver algo como:

-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 gravação para o proprietário e grupo, e permissão de leitura para outros. Ele não possui permissão de execução, que é necessária para executá-lo como um programa.

Vamos tentar executar o script:

./script.sh

Você deve ver um erro de "Permissão negada" porque o script ainda não tem permissões de execução. A parte ./ instrui o shell a executar o script localizado no diretório atual.

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

chmod u+x script.sh

Neste comando:

  • u refere-se ao usuário (user/proprietário). Outras opções são g para grupo, o para outros 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.

Portanto, u+x significa "adicionar permissão de execução para o proprietário".

Vamos verificar a alteração:

ls -l script.sh

Agora você deve ver:

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

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

Agora, vamos tentar executar o script novamente:

./script.sh

Desta vez, você deve ver a saída: "Hello, World"

Este exemplo demonstra claramente por que precisamos adicionar permissões de execução a scripts e a diferença antes e depois de adicionar essas permissões. A notação simbólica facilita a modificação de permissões específicas sem a necessidade de recalcular toda a representação numérica.

Resumo

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

  1. Usamos o touch para criar novos arquivos e atualizar os existentes.
  2. Aprendemos como usar o chown para alterar a propriedade de arquivos e diretórios, incluindo mudanças recursivas para estruturas de diretórios inteiras.
  3. Praticamos o uso do chmod com as notações numérica e simbólica para modificar permissões de arquivos e diretórios, compreendendo os diferentes níveis de permissão para proprietário, grupo e outros.
  4. Vimos exemplos práticos de por que as permissões são importantes, como a necessidade de permissões de execução para rodar scripts.
  5. Esclarecemos as diferenças entre a notação numérica e simbólica para o chmod e quando cada uma pode ser mais apropriada.

Esses comandos são fundamentais para manter a segurança e controlar o acesso em sistemas Linux. Lembre-se de sempre ter cautela ao alterar permissões, especialmente ao usar o sudo, pois alterações incorretas podem ter consequências significativas para a segurança e funcionalidade do sistema. Sempre verifique seus comandos antes de executá-los e entenda as implicações das mudanças que está realizando.