Permissões de arquivos
Permissões
Comandos:
lsexibi o que tem na minha pasta

ls -laexibi 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
Leitura(read) permite ao usuário ler o conteúdo do arquivo mas não alterá-lo. Escrita(write) permite que o usuário altere o arquivo. Execução(x), como o nome diz, permite que o usuário execute o arquivo, no caso de ser executável.
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 umddiretó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:
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
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: infowester
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 chmod 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
configurar_permissoes.shExemplo 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:
O script verifica se o nome do arquivo foi passado como argumento. Se não, ele solicita o nome.
O nome do arquivo fornecido tem a extensão
.txtadicionada.O comando
touchcria o arquivo (caso não exista).O comando
chmod 744define as permissões do arquivo:Proprietário: leitura, escrita e execução (7).
Grupo: leitura (4).
Outros: leitura (4).
O script exibe o arquivo criado e suas permissões com o comando
ls -l.
Como executar:
Torne o script executável:
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?
Primeiro temos que pegar todos os argumentos
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?