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:
-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,dpara 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.- O primeiro
labexé o proprietário atual do arquivo. Esse é o nome de usuário que possui o arquivo. - O segundo
labexé o grupo atual do arquivo. Um grupo é um conjunto de usuários que pode compartilhar permissões. 0é o tamanho do arquivo em bytes. Como o arquivo está vazio, seu tamanho é zero.Jul 29 15:11é a data e a hora da última modificação.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:
sudoexecuta o comando com privilégios de root. O sistema provavelmente solicitará sua senha. O comandochownexige privilégios elevados porque pode afetar a segurança do sistema. Semsudo, você receberá um erro “Permission denied”.chowné o comando usado para alterar a propriedade.root:rootespecifica 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/subdircria o diretórionew-dire seu subdiretóriosubdir. A opção-pinstrui omkdira criar os diretórios-pai necessários. Sem-p, senew-dirnão existisse, a criação denew-dir/subdirfalharia.echo "Hello, world" > new-dir/file1.txtcria um arquivo chamadofile1.txtdentro do diretórionew-dire grava nele o texto "Hello, world". O símbolo>é usado para redirecionamento: ele envia a saída do comandoechopara o arquivo especificado.echo "Another file" > new-dir/subdir/file2.txttambém cria um arquivo chamadofile2.txtdentro do diretórionew-dir/subdire 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
-Rinstrui ochowna operar recursivamente, alterando a propriedade de todos os arquivos e subdiretórios dentro denew-dir. Isso é essencial: sem-R, somente a propriedade do diretórionew-dirseria alterada, enquanto os arquivos e subdiretórios continuariam pertencendo alabex.
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ãodpara diretório elpara link simbólico. - Os três caracteres seguintes (
rw-) representam as permissões do proprietário: leitura e escrita, mas não execução.rsignifica permissão de leitura: o proprietário pode abrir e ler o arquivo.wsignifica permissão de escrita: o proprietário pode modificar o arquivo.xsignifica 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.
- O primeiro dígito (
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 leitura2: permissão de escrita1: permissão de execução0: 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=70 (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 usandols. - 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, executarcdpara entrar nele.
Agora, altere as permissões:
chmod -R 755 ~/test-dir
Neste comando:
-Raplica 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.755concede 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
echocriascript.she 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
echoadiciona uma nova linha ao final do arquivo usando>>. Ele gravaecho "Hello, World", que exibiráHello, Worldquando 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:
use refere ao usuário, ou seja, ao proprietário. As outras opções sãogpara grupo,opara outros usuários eapara todos (usuário, grupo e outros).+xadiciona 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:
- Você usou
touchpara criar novos arquivos e atualizar arquivos existentes. - Você aprendeu a usar
chownpara alterar a propriedade de arquivos e diretórios, incluindo alterações recursivas em estruturas de diretórios inteiras. - Você praticou o uso de
chmodcom 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. - Você viu exemplos práticos da importância das permissões, como a necessidade de ter permissão de execução para executar scripts.
- Você esclareceu as diferenças entre a notação numérica e a simbólica do
chmode 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.



