É tudo bem dividido entre owner (dono), grupos e outros usuários.
Uns podem ler, outros escrever e apagar, outros executar...
Sabendo e usando isso terá um total controle do sistema, além de entender um pouco o motivo do Linux ser um sistema tão seguro e flexível.
- Permissões de leitura (r-read), escrita (w-write) e execução (x-execute)
O comando 'ls' que lista os arquivos e sub-diretórios de um diretório você já deve conhecer.
Agora use o 'ls -l diretorio', que mostrar uma descrição maior desses arquivos e sub-diretórios, incluindo as permissões de leitura, escrita e execução de cada um deles e o dono.grupo.
Teste com o diretório raiz '/':
ls -l /
Os diretórios são os que começam com 'd', se não começam, não são (tente o comando em uma pasta que não tenha só diretórios, o 'd' não aparece).
Para ver as permissões de um arquivo específico, use o comando 'ls -l arquivo'
Para ver as permissões de um arquivo específico, use o comando 'ls -l arquivo'
Todos os arquivos tem suas permissões separadas por: dono, grupo e outros - NESSA ORDEM
Cada um destes por ter permissão de: leitura(r), escrita(w) e execução(x)
Vamos supor que um diretório de bagunça, onde todos tenham permissão de fazer tudo, como um diretório chamado 'windows/system', por exemplo. Ele apareceria assim no comando 'ls -l':
drwxrwxrwx
Parece confuso, mas é só 'tirar' o 'd' e separar por dono ,grupo e outros:
d(rwx)(rwx)(rwx)
O primeiro diretório, /bin , está assim:
drwxr-xr-x
Ou seja:
d(rwx)(r-x)(r-x)
- O dono, que é o root, pode tudo: rwx (ler, escrever e executar)
- O grupo: r-x (ler e executar), no lugar onde seria o 'w', aparece um traço, ou seja, não pode escrever (alterar) aquele diretório
- Os outros: r-x (ler e executar), do mesmo jeito, podem ver e executar os arquivos do diretórios, só não podem alterar, apagar ou adicionar nada lá.
Notou a segurança? Só pode fazer algo se for o root.
Se te invadirem e tentarem apagar (w), não vão conseguir, pois não são root.
Se outro usuário sentar na sua cadeira e tentar apagar seu diretório /bin ?
Não vai conseguir, ele não é o root (suponho que você não saia divulgando sua senha por aí).
Ao contrário do Windows, por exemplo, onde qualquer um pode apagar, alterar, adicionar e fazer o que quiser, em sistemas Unix você é o chefão. Você manda, concede e tira permissões.
Você tem total controle do sistema. Se algo acontecer de errado, foi falha sua.
Você tem total controle do sistema. Se algo acontecer de errado, foi falha sua.
Pra não ser injusto, as vezes, por questão de segurança, o Windows pergunta se você tem certeza de que quer fazer aquilo.
Ou mais seguro ainda: você tem que clicar com o botão direito e fazer as coisas como administrador.
Super seguro, não?
- Alterando as permissões de leitura (r), escrita (w) e execução (x): o comando chmod
O modo octal
Como já disse, todos os tipos de usuários - dono, do grupo, outros - possuem as características de leitura, escrita e de execução.
Essas características podem ser de permissão ou não. Caso seja permitido a característica, aparecerá a letra (r, w ou x). Caso não, aparece o hífen.
Por exemplo, se o comando 'ls -l' para o diretório /media exibir:
drwxr-xr--
O dono, owner pode: r, w, x
O grupo dele pode: r e x, não pode 'w' pois apareceu '-' no lugar do 'w'
Os outros só podem: r, pois apareceu '-' no lugar do 'w' e do 'x'
Vamos adotar a seguinte nomenclatura, binária. Se puder ler, escrever ou executar, colocaremos o número 1, se não puder, colocaremos o número 0.
Então, para o mesmo exemplo:
O dono: 111
O grupo: 101
Os outros: 100
Simples, não?
Agora vamos passar esses números de binário para decimal
111 = 1.2² + 1.2¹ + 1.2⁰ = 4 + 2 + 1 = 7
101 = 1.2² + 0.2¹ + 1.2⁰ = 4 + 0 + 1 = 5
100 = 1.2² + 0.2¹ + 0.2⁰ = 4 + 0 + 0 = 4
O número menor binário é 000 e vale 0, e o maior (de 3 dígitos) é 111 e vale 7. Ou seja, toda a gama de permissões dos usuários vai de 0 até 7, há 8 opções. Então, esse é o método octal.
drwxr-xr-- pode ser representado por 754
Ou seja, o primeiro número, 7, se refere ao dono.
O segundo, 5, se refere a grupo.
O terceiro, 4, se refere aos demais usuários.
Mais simples, não?
Se estiver com preguiça ou não souber trabalhar com binários, está aqui a tabela que peguei da Wiki:
http://pt.wikipedia.org/wiki/Chmod
Se estiver com preguiça ou não souber trabalhar com binários, está aqui a tabela que peguei da Wiki:
http://pt.wikipedia.org/wiki/Chmod
Para arquivos (-) rwx 000 0 (zero) permissão negada 001 1 permissão de execução 010 2 permissão de gravação 011 3 permissão de gravação e execução 100 4 permissão de leitura 101 5 permissão de leitura e execução 110 6 permissão de leitura e gravação 111 7 soma de todas as permissões
Para diretórios (d) rwx 000 0 (zero) permissão negada 001 1 permissão para entrar no diretório 010 2 permissão para gravar dentro do diretório 011 3 permissão de entrar e gravar no diretório 100 4 permissão para listar o conteúdo do diretório 101 5 permissão de listar e entrar no diretório 110 6 permissão de listar e gravar no diretório 111 7 soma de todas as permissões
Concedendo e alterando permissões em arquivos e diretórios
Se usa o comando chmod (cd de change e mod modes).
Vamos tornar uma pasta liberada, para tudo e para todos. Vamos chamar esse diretório de '/Windows'
chmod 777 /Windows
Porém, se existirem vários arquivos e sub diretórios, você não vai ficar concedendo permissões a todos.
Use a flag '-R' para fazer isso recursivamente:
chmod -R 777 /Windows
Para matar alguém (que não é root) de curiosidade, faça:
chmod -R 000 /meu/diario/de/segredos
Pronto. Agora você pode conceder qualquer tipo de permissão para qualquer tipo de usuário.
Só saber que o primeiro número se refere ao dono, o segundo ao grupo que tem acesso a este arquivo/diretório e terceiro aos demais usuários.
Para saber que tipo de permissão cada um vai ter, faça as contas binárias ou olhe a tabela.
- Mudando o dono (owner): o comando chown
Quando se instala um programa, por exemplo, o usuário logado será o dono e terá o controle sobre aquele(s) diretório(s) e arquivo(s) ou não é, mas queremos que seja.
Usa-se o comando chown para mudar isso.
(ch de change e own de owner)
Supondo que você queira passar para o usuário 'programacao' do grupo 'progressiva', o controle do diretório ou arquivo qualquer, use o comando (você deve ser o root ou administrador para fazer isso):
chown programacao.progressiva /pasta/qualquer
Caso seja um arquivo e/ou queira mudar só usuário e não o grupo:
chown programacao /pasta/do/arquivo/qualquer.txt
Se for um diretório inteiro, você não vai usar esse comando em cada arquivo ou sub-diretório.
Para isso, use a flag '-R', que faz o trabalho (recursivamente) para você:
chown -R programacao.progressiva /pasta/ou/arquivo/qualquer
- Mudando o grupo: o comando chgrp
Já mostramos como alterar as permissões e o dono, mas não o grupo.Para isso, usamos o comando chgrp (ch de change e grp de group).
Para alterar o grupo antigo do arquivo 'arquivo' para o grupo 'novo_grupo', faça:
chgrp novo_grupo arquivo
-----------------------
PS.1:
Caso tenha problemas, verifique se você é o root ou tem poderes deste (sudo)
PS.2:
Além do modo Octal, existe o modo com letras para mudar permissões.
Mas não mostrarei esse pois usarei o octal em outros artigos, e também porque não gosto do método com letras :)
PS.3:
Case se interesse no modo de letras ou queira informações mais detalhadas sobre permissões, além do link da Wiki que passei, tem o Guia Foca GNU/Linux:
http://www.guiafoca.org/cgs/guia/intermediario/ch-perm.html
3 comentários:
Me salvou! Vlq
Me salvou!! Vlw demais
Aff, excelente!!! Sou cientista da computação e ainda não sabia isso...🤦🏻♂️
Postar um comentário