githubEdit

Permissões de arquivos

Permissões

Comandos:

  • ls exibi o que tem na minha pasta

  • ls -la exibi o que tem na minha pasta inclusive arquivos ocultos.

Se observamos temos alguns arquivos e diretórios com letras. O que essas letras significam?

  • Leitura → r - 4

  • Escrita, permissão de gravação→ w - 2

  • Execução → x -1

circle-check

E são divididos em 3 partas:

  • 1 → proprietário: usuário que controla o arquivo.

  • 2 → grupo: conjunto de usuários com permissões específicas.

  • 3 → outros usuários: usuários que não pertencem nem ao proprietário, nem ao grupo, e têm permissões restritas (ou nenhuma permissão).

Exemplo:

  • - → que dizer que é um arquivo e não um d diretório(pasta)

  • rw- → a primeira parte significa permissões do proprietário, leitura(r) e escrita(w)(4,2)

  • r-- → a segunda parte significa permissões do grupo ao qual o usuário pertence, leitura(4)

  • r-- →a terceira parte significa permissões para os demais usuários, leitura(4)

E o que seria 4 - 2 - 1 (leitura - escrita - executável) ?

Seria Octal. Octal é um sistema de números base 8 que usa os dígitos 0 a 7.

Veja a tabela:

0
---
nenhuma permissão

1

--x

somente execução

2

-w-

somente escrita

3

-wx

escrita e execução

4

r--

somente leitura

5

r-x

leitura e execução

6

rw-

eitura e escrita

7

rwx

leitura, escrita e execução

---------
000
Nenhuma permissão

r--------

400

somente leitura para propriétário(4)

r--r--r--

444

leitura para proprietário, grupo e outros usuários

rw-------

600

leitura e escrita somente para proprietário(4+2 = 6)

rw-r--r--

644

leitura e escrita para proprietário(6), leitura para grupo e para outros

rw-rw-rw-

666

leitura e escrita para proprietário, grupo e outros.

rwx------

700

leitura, escrita e executável somente para proprietário(4+2+1=7)

rwxr-x---

750

leitura, escrita e executável para proprietário(4+2+1=7), leitura e executavel para grupo(4+3)

Fonte: infowesterarrow-up-right

Exemplo, temos um arquivo teste.txt

  • Proprietário(rw): leitura e escrita

  • grupo(r) e demais(r): leitura

Vamos alterar para proprietário ser o unico que tenha leitura e escrita e grupo e os demais não terão permissão de leitura.

Para fazer isso vamos usar chmodarrow-up-right e passar o octal para nome do arquivo, ficaria assim:

chmod 600 teste.txt

  • proprietário: leitura(4) e escrita(2) → 4 + 2 = 6 ⇒ rw

  • grupo: 0

  • demais: 0

Alterado com sucesso!

Script: configurar_permissoes.sh

Exemplo de um script em Shell que recebe o nome do arquivo como argumento, adiciona a extensão .txt ao nome e depois define permissões para o proprietário, grupo e outros usuários.

Explicação:

  1. O script verifica se o nome do arquivo foi passado como argumento. Se não, ele solicita o nome.

  2. O nome do arquivo fornecido tem a extensão .txt adicionada.

  3. O comando touch cria o arquivo (caso não exista).

  4. O comando chmod 744 define as permissões do arquivo:

    • Proprietário: leitura, escrita e execução (7).

    • Grupo: leitura (4).

    • Outros: leitura (4).

  5. O script exibe o arquivo criado e suas permissões com o comando ls -l.

Como executar:

  1. Torne o script executável:

  2. Execute o script passando o nome do arquivo (sem a extensão):

Saída esperada:

Se o nome do arquivo passado for "meu_arquivo", o script criará "meu_arquivo.txt" e configurará as permissões. A saída será algo como:

Criando mais de um arquivo

Digamos que você precisa criar mais de uma arquivo por vez. Como você faria isso?

  1. Primeiro temos que pegar todos os argumentos

  2. Depois precisar percorrer cada argumento e criar um arquivo com a extensão .txt .

Pegar todos os argumentos: $@

Percorrer cada argumento: for...in

Reveja Argumentos e Loops For em Shell Script

Lição para casa

E se só pudéssemos criar apenas 3 arquivos por vez, como seria isso?

Além de verificar a quantidade de arquivos menor que 0(zero), você precisa verificar se a quantidade é maior que 3, se for maior imprimir uma mensagem de erro

E se não quiséssemos parar o programa, como ficaria o script? Por exemplo, o usuário passou 4 argumento

O programa "aceitou" os 4 argumentos mas só gerou 3 arquivos. Como você faria isso?

E se no final exibisse uma mensagem de aviso, informando "Aviso: Apenas os 3 primeiros arquivos foram criados. Ignorando o restante.", como ficaria? Exemplo de saída:

Last updated

Was this helpful?