Introdução
Neste laboratório, mergulharemos no mundo das permissões de arquivos no Linux. Exploraremos três comandos essenciais: chown, touch e chmod. Essas ferramentas são cruciais 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 a propriedade de arquivos e modificar permissões. Dominar esses comandos permitirá que você controle quem pode ler, gravar e executar arquivos no seu sistema.
Criando um Novo Arquivo
Vamos começar criando um novo arquivo usando o comando touch. Este comando versátil pode criar arquivos novos e vazios, além de atualizar os carimbos de data/hora (timestamps) de arquivos existentes. Pense nele como uma maneira rápida de "tocar" em um arquivo, seja para criá-lo ou para atualizar seu último horário de acesso.
Primeiro, certifique-se de estar 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 ir. 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 se executou o comando touch corretamente e se você está realmente no diretório ~/project.
Alterando a Propriedade de um Arquivo
Agora que criamos um arquivo, vamos aprender como alterar sua propriedade. 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 a propriedade atual do nosso arquivo example.txt:
ls -l example.txt
O comando ls -l (listar com 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 analisar esta saída:
-rw-rw-r--representa as permissões do arquivo (exploraremos isso mais detalhadamente no Passo 4). O primeiro caractere indica o tipo de arquivo (-para um arquivo comum,dpara diretório, etc.). Os caracteres restantes representam as permissões de leitura, gravação e execução para o proprietário, grupo e outros.- O primeiro
labexé o proprietário atual do arquivo. Este é o nome de usuário que possui o arquivo. - O segundo
labexé o grupo atual do arquivo. Um grupo é uma coleção de usuários que podem 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 hora da última modificação.example.txté o nome do arquivo.
Agora, vamos alterar a propriedade do arquivo para o usuário root. 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:
sudoexecuta o comando com privilégios de root. Provavelmente será solicitada sua senha. Ochownrequer privilégios elevados porque é um comando poderoso que pode afetar a segurança do sistema. Semsudo, você receberá um erro de "Permission denied" (Permissão negada).chowné o comando para alterar a propriedade.root:rootespecifica 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 foram alterados 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 a Propriedade de um Diretório
O comando chown também pode alterar a propriedade de diretórios inteiros e seu conteúdo. 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 analisar esses comandos:
mkdir -p new-dir/subdircria o diretórionew-dire seu subdiretóriosubdir. A opção-pdiz aomkdirpara criar diretórios pai conforme necessário. 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 escreve o texto "Hello, world" nele. O símbolo>é usado para redirecionamento; ele pega a saída do comandoechoe a redireciona para o arquivo especificado.echo "Another file" > new-dir/subdir/file2.txtcria de forma semelhante um arquivo chamadofile2.txtdentro do diretórionew-dir/subdire 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 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 ao labex.
Agora, vamos alterar a propriedade de new-dir e todo o seu conteúdo para o usuário root:
sudo chown -R root:root new-dir
Neste comando:
- A opção
-Rdiz aochownpara operar recursivamente, alterando a propriedade de todos os arquivos e subdiretórios dentro denew-dir. Isso é crucial; sem-R, apenas a propriedade do diretórionew-dirseria alterada, mas os arquivos e subdiretórios dentro dele ainda pertenceriam aolabex.
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 foi alterada para root. Isso demonstra o poder da opção -R para fazer alterações abrangentes na propriedade dentro de uma estrutura de diretórios.
Alterando as Permissões de um Arquivo
No Linux, as permissões de arquivo 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 impedir o acesso não autorizado.
Primeiro, vamos ver as permissões atuais do nosso arquivo example.txt:
ls -l example.txt
Você pode ver algo assim:
-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 analisá-la:
- O primeiro caractere (
-) indica que este é um arquivo comum. Outros indicadores comuns sãodpara diretório elpara 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).rsignifica permissão de leitura: O proprietário pode abrir e ler o arquivo.wsignifica permissão de gravação: O proprietário pode modificar o arquivo.xsignifica permissão de execução: 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 aplicam-se 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 aplicam-se a usuários que não são nem 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 ele permite que você modifique 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 dos outros.
- O primeiro dígito (
Cada dígito é um número de 0 a 7, calculado somando os valores para as permissões de leitura (4), gravação (2) e execução (1):
4: Permissão de leitura2: Permissão de gravação1: Permissão de execução0: Sem 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 aos outros (0+0+0=0).
Assim, 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 para diretórios funciona de forma semelhante à alteração de permissões para 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 no diretório.
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 diz ao ls para listar o diretório em si, 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ê 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:
- A permissão de leitura (
r) permite que você liste o conteúdo do diretório usandols. - A permissão de gravação (
w) permite que você crie novos arquivos e subdiretórios dentro do diretório. - A permissão de execução (
x) permite que você acesse arquivos e subdiretórios dentro do diretório (ou seja, entrar nele comcd).
Agora, vamos alterar 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 incluí-lo ao lidar com diretórios, mesmo que estejam vazios no momento, caso você adicione arquivos posteriormente.755dá 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 analisar 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 alteração 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.
Neste passo, você criará um pequeno script de shell e, em seguida, adicionará permissão de execução a ele.
Primeiro, vamos criar 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 escreve a primeira linha,#!/bin/bash, nele. Esta linha é chamada de shebang e diz ao Linux para executar o script com o Bash. - O segundo comando
echoadiciona uma nova linha ao final do arquivo com>>. Ele escreveecho "Hello, World", que exibiráHello, Worldquando o script for executado.
Você pode confirmar que o arquivo agora contém duas linhas separadas com:
cat script.sh
Você deve ver:
#!/bin/bash
echo "Hello, World"
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 tem 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 "Permission denied" (Permissão negada) porque o script ainda não tem permissões de execução. A parte ./ diz ao shell para executar o script localizado no diretório atual.
Agora, vamos adicionar permissão de execução para o proprietário usando notação simbólica:
chmod u+x script.sh
Neste comando:
urefere-se ao usuário (proprietário). Outras opções sãogpara grupo,opara outros eapara todos (usuário, grupo e outros).+xadiciona 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 ter que recalcular toda a representação numérica.
Resumo
Neste laboratório, exploramos comandos essenciais do Linux para gerenciar permissões de arquivos:
- Usamos
touchpara criar novos arquivos e atualizar os existentes. - Aprendemos como usar
chownpara alterar a propriedade de arquivos e diretórios, incluindo alterações recursivas para estruturas de diretórios inteiras. - Praticamos o uso de
chmodcom notações numérica e simbólica para modificar permissões de arquivos e diretórios, entendendo os diferentes níveis de permissão para proprietário, grupo e outros. - 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.
- Esclarecemos as diferenças entre a notação numérica e simbólica para
chmode quando cada uma pode ser mais apropriada.
Esses comandos são cruciais 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 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 alterações que você está fazendo.



