Aula 7.5: Sistema de Permissões Linux (Privilégios)

COMPARTILHAR:

Aprenda comandos de permissões, controle de acesso Linux

   

Este artigo faz parte do projeto #LTCode

Os sistemas Linux possuem um sistema de permissões profundamente embutida no design do sistema, organizado em três categorias:

  1. Dono
  2. Grupo
  3. Outros
  1. Ser dono significa que o usuário é responsável pelo controle de acesso dos arquivos e diretórios.
  2. Pertencer a um grupo, o qual pode ter mais de um usuário, significa que o grupo é responsável pelos arquivos e diretórios dado pelo seu dono.
  3. Todos os outros usuários que não sejam o dono ou não pertencem ao grupo do arquivo ou diretório.
No Linux quando uma conta de usuário é criada, é atribuído um número chamado de identificador do usuário (UID) que é mapeado para um nome de usuário. Também é atribuído um identificador de grupo primário (GID) e possíveis grupos adicionais. Você pode usar o comando "id" (sem aspas) para obter informações sobre a identidade de seu usuário:



A gerência das permissões é feitas por arquivos de texto simples:
  • /etc/passwd contém nome de login, uid, gid, nome real, diretório pessoal e a shell de login
  • /etc/shadow contém as senhas
  • /etc/group contém os grupos
Analisemos os direitos de acesso à arquivos e diretórios. Crie um arquivo vazio com o comando "touch" e consulte o comando ls (com opção –l).


Os dez primeiros caracteres da listagem (-rw-r--r--) são atributos de arquivos:
  • O primeiro caractere é o tipo do arquivo que pode ser:
    • Caractere "-" significando um arquivo regular
    • Caractere "d" significando um diretório
    • Caractere "l" um link simbólico, mas note que o resto dos atributos será sempre rwxrwxrwx que são valores fictícios
    • Caractere "c" um arquivo de caractere especial, dispositivos que lidam com dados como um fluxo de bytes.
    • Caractere "b" um arquivo de bloco especial, dispositivos que lidam com dados como blocos, como discos rígidos ou drive de CD-ROM.
    • Caractere "s" soquete
    • Caractere "=" pipe
  • Os nove caracteres restantes são o modo do arquivo e representam as permissões de leitura, escrita e execução para o dono do arquivo, grupo e todo o mundo (outros).
  • Os atributos de arquivos são:
    • read (r): permite que um arquivo seja aberto e lido.
    • write (w): Permite que um arquivo seja escrito ou truncado; mas não permite renomear ou remover arquivos (isso depende das permissões do diretório).
    • execute (x): Permite que um arquivo seja tratado como um programa executável; programas escritos em linguagens de scripts devem também ser legíveis para que sejam executados.
  • Já os atributos de diretórios são:
    • read (r): permite que o conteúdo de um diretório seja listado se o atributo de execução também estiver definido.
    • write (w): permite que arquivos dentro de um diretório sejam criados, removidos e renomeados se o atributo de execução também estiver definido.
    • execute (x): permite entrar em um diretório (ex.: cd dir).

    Então analisando as permissões do nosso arquivo file.txt temos as seguintes informações: 
    -rw-r--r--
    - é um arquivo
    rw- o dono possui permissões de leitura e escrita..
    r-- o grupo possui permissões apenas de leitura.
    r-- os outros possuem apenas permissões de leitura.

    Como alterar permissões de um arquivo ou diretório? Simples, utilize o comando chmod para alterar seu modo (permissão). Mas note que somente o dono do arquivo ou super-usuário podem alterar o modo de um arquivo ou diretório.

    O comando chmod suporta duas formas distintas para especificar mudanças de modo, a representação octal e a representação simbólica.

    A representação octal usa-se números na base octal para definir o padrão de permissão desejado. Como cada digito em octal representa três dígitos em binário, esse mapeamento casa perfeitamente com o esquema usado para armazenar o modo do arquivo. Confira:

    Octal Binário Modo
    0         000     ---
    1         001     --x
    2         010     -w-
    3         011     -wx
    4         100     r--
    5         101     r-x
    6         110     rw-
    7         111     rwx

    Agora você entende porque muitos scripts o pessoal apenas falam dê um "chmod 777" . Assim você está definindo permissão de leitura, escrita e execução do script para o dono, grupo e outros (todos).


    Dica: se você decorar os modos de leitura (octal 4), escrita (octal 2) e execução (octal 1),  basta somá-los para criar as combinações desejadas. Exemplo:

    Dê permissão de leitura e escrita para o dono, leitura e execução para o grupo e escrita e execução para os outros:

    leitura + escrita = 4 + 2 = 6
    leitura + execução = 4 + 1 = 5
    escrita + execução = 2 + 1 = 3

    Então: chmod 653 file.txt
    Nos fornece: -rw-r-x-wx

    E claro caso não deseja dar ou remover permissão apenas coloque 0. Exemplo:

    Dê permissão de leitura e escrita para o dono enquanto se remove todas as permissões para o grupo e outros.

    Então: chmod 600 file.txt
    Nos fornece: -rw-------

    O comando chmod também suporta a notação simbólica para especificar modos de arquivos. A notação simbólica (mais humana) é dividida em três partes:
    1. Quem a mudança irá afetar
    2. Qual operação será realizada
    3. Qual permissão será definida
    1. A combinação dos caracteres "u" de usuário (dono), "g" de grupo e "o" de outros são utilizados, mas se não for especificado assume-se "a" (todos).
    2. As operações podem:
    • indicar que uma permissão será adicionada "+";
    • indicar que uma operação será retirada "-";
    • indicar que somente as permissões especificadas serão aplicadas "=",
      • todas as outras permissões não especificadas serão removidas;
    3. As permissões são especificadas usando letras:
    • r para leitura
    • w para escrita
    • x para execução
    Confira alguns exemplos de permissões utilizando a notação simbólica:

    Notação Significado
    u+x       Adicionar permissão de execução para o dono.
    u-x        Remover permissão de execução do dono.
    +x         Adicionar permissão de execução para o dono, grupo e outros.
    o-rw      Remover a permissão de leitura e escrita de outros, exceto dono e grupo.
    go=rw   Definir a permissão de leitura e escrita para o grupo e outros.

    Note que no caso de "go=rw" caso o grupo ou outros tivessem a permissão de execução, essa seria removida. Também é possível realizar múltiplas especificações, basta separar por vírgulas. Exemplo: u+x,go=rx

    Então agora você compreende que quando alguém diz para você dar o comando "chmod +x" no script você está definindo permissão de execução para o dono, grupo e outros.

    É possível definir permissões padrões com o comando umask que controla as permissões padrões dadas a um arquivo no momento que é criado.

    Para isso usa-se notação octal para expressar uma máscara de bits a serem removidos dos atributos de modo do arquivo. Se você digitar no terminal "umask" (sem aspas) e der enter verá que por padrão o valor da máscara de criação de arquivos do Linux é 022, ou seja: 000 010 010 em octal.

    Quando um arquivo ou diretório é criado eles são criados baseados nos seguintes valores: 0666 para arquivos e 0777 para diretórios.

    Então por padrão qualquer arquivos e diretório criado terá as seguintes permissões:
    • A permissão para criação de arquivos é 666 - 022 = 644
      • rw- r-- r--
    • A permissão para criação de diretórios é 777 - 022 = 744
      • rwx r-- r--
    Assim se você definir uma máscara 777 observa o que acontece:

    Todas as permissões do arquivo são removidas pois: 666 - 777 = 000 (não fica negativo).

    No Linux é possível definir permissões especiais, sendo elas:
    • SUID (set user ID): 4000 ou u+s
    • SGID (set group ID): 2000 ou g+s
    • Sticky bit: 1000 ou +t
    Note que foi apenas adicionado o número 1, 2 ou 4 antes da permissão no formato octal. Então por exemplo uma permissão de leitura, escrita e execução (777) para dono, grupo e outros com uma permissão especial SUID seria: 4777.

    A permissão especial SUID informa ao processo resultante assumir o identificador efetivo do dono do arquivo. Por exemplo o comando para trocar a senha no Linux precisa acessar o arquivo de senha que você como usuário comum não tem permissão de lê e escrever, observe a imagem:



    Aquele "s" em -rwsr-xr-x significa que o programa passwd será executado no contexto do dono do arquivo, que no caso é o root. Assim possibilitando você utilizar o programa para mudar a senha. Representado pela letra "s" e encontra-se no final do campo dono.

    Já a permissão especial SGID, quando um arquivo com setgid é executado, o processo resultante irá assumir o identificador efetivo do grupo do arquivo. Se for um diretório novos arquivos criados nele receberão o grupo do diretório ao invés do grupo do usuário que o criou. Representado pela letra "s" e encontra-se no final do campo "grupos".

    E por ultimo a permissão especial Sticky bit antigamente para arquivos permitia que um executável não fosse paginado (swapped). Já para diretórios, previne que um usuário remova ou renomeie um arquivo a não ser que seja o dono do diretório, dono do arquivo ou o super-usuário. O Sticky bit é representado pela letra "t" e encontra-se no final do campo "outros".

    Além do chmod você pode utilizar o comando chown, com ele você consegue alterar o dono e grupo de determinado arquivo. Exemplo:


    Como você pode observar o grupo da pasta teste foi alterado de root para kali.

    Outro comando interessante é o chgrp que modifica o grupo proprietário, uma alternativa ao comando chown mas que funciona somente para o grupo.

    No Linux no gerenciamento básico não é possível negar acesso a determinado usuário de determinado grupo caso o grupo possua permissão ao diretório que se deseja negar acesso. Para isso é necessário usar lista de controle de acesso (ACL). ACL é utilizada para arquivos/diretórios para determinar controle específico sobre um arquivo.

    O comando getfacl permite você consultar a lista de controle. Enquanto que o comando setfacl permite você configurar a lista de controle. Consulte o manual de cada comando para mais informações. É importante saber que os arquivos/diretórios que estiverem dentro de um diretório irão herdar as regras de ACL desse diretório.

    É possível limitar o tamanho do disco para cada usuário e grupo, independente do tamanho total da partição do disco rígido. O sistema de cotas de disco divide a cota em:

    • Soft Limit
      • Capacidade máxima que um usuário/grupo pode alocar do disco e também o número máximo de arquivos que podem criar.
      • Usuários/grupos podem ultrapassar esse limite por período limitado de tempo.
    • Hard Limit
      • Mesmo que Soft Limit mas com a diferença que um usuário ou grupo não pode ultrapassar o limite definido.
    O período limitado de tempo é chamado de Grace period (período de tolerância), período de tempo em que ainda é possível realizar gravações no disco quando o usuário/grupo ultrapassar o soft limit. Após esse tempo (ou atingindo o hard limit), o disco não alocará mais espaço.

    Para utilizar o sistema de cotas, instale as ferramentas necessárias com o comando: apt-get install quota quotatool

    Consulte o manual da ferramenta para conhecer os comandos para gerenciamento de cotas. Alguns conceitos importantes:

    • Blocks: número de blocos ocupados no sistema.
    • Soft: Limite em kbytes que um usuário ou grupo pode alocar no disco.
    • Hard: Limite máximo em kbytes que um usuário ou grupo pode alocar no disco.
    • Inodes: número de arquivos.
    Próxima aula, clique aqui.

    COMENTÁRIOS

    Nome

    #ann,24,#HK,29,#LTCode,90,Artigo - Diversos,162,Artigo - Games,198,Artigo - Tecnologia,565,autor-thomaz,7,Coluna - Alternative World,24,Coluna - Fail,12,Coluna - Tec Line,14,Criptomoeda,64,Curiosidades - Diversos,49,Curiosidades - Tecnologia,50,en,2,estudo,7,HN,12,logica,14,Programar C,29,Programar POO,6,Programar Python,6,Programar Shell,8,Programar verilog,12,Raspberry Pi,13,Redes,3,root,81,Shorty Awards,1,Smartphones - Reviews,33,Teoria,10,Top Nostalgia,2,VPN,17,WhatsApp,45,
    ltr
    item
    Limon Tec: Aula 7.5: Sistema de Permissões Linux (Privilégios)
    Aula 7.5: Sistema de Permissões Linux (Privilégios)
    Aprenda comandos de permissões, controle de acesso Linux
    https://1.bp.blogspot.com/-Vv6C0DkQgY0/WG_EGTY1EhI/AAAAAAAAFcs/qphwk8Z4UdkFSQu0zbS5xoZ_9_KovVlJACLcB/s640/ltcode.jpg
    https://1.bp.blogspot.com/-Vv6C0DkQgY0/WG_EGTY1EhI/AAAAAAAAFcs/qphwk8Z4UdkFSQu0zbS5xoZ_9_KovVlJACLcB/s72-c/ltcode.jpg
    Limon Tec
    https://www.limontec.com/2022/07/aula-7-5-shellscript-ltcode.html
    https://www.limontec.com/
    https://www.limontec.com/
    https://www.limontec.com/2022/07/aula-7-5-shellscript-ltcode.html
    false
    2157924926610706248
    UTF-8
    Carregar todos posts Não encontramos nenhum post VER TUDO Ler mais Responder Cancelar resposta Deletar Por Home PÁGINAS POSTS Ver tudo RECOMENDADO PARA VOCÊ LABEL ARQUIVO SEARCH TODOS POSTS Não encontramos nenhum post relacionado a sua requisição VOLTAR PÁGINA INICIAL Domingo Segunda Terça Quarta Quinta Sexta Sábado Dom Seg Ter Qua Qui Sex Sab Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro Jan Fev Mar Abr Maio Jun Jul Ago Set Out Nov Dez apenas agora 1 minuto atrás $$1$$ minutes ago 1 hora atrás $$1$$ hours ago Ontem $$1$$ days ago $$1$$ weeks ago mais de 5 semanas atrás Seguidores Seguir ESTE CONTEÚDO ESTÁ BLOQUEADO PASSO 1: Compartilhe com seus amigos PASSO 2: Clique no link compartilhado Copiar Todo Código Selecionar Todo Código Todos códigos foram copiados para seu clipboard Não é possível copiar códigos / textos, por favor aperte [CTRL]+[C] (ou CMD+C no Mac) para copiar Tabela de conteúdo