Permissões especiais suid, guid e bit pegajoso

Permissões especiais suid, guid e bit pegajoso
No Linux, tudo é um arquivo, e tudo tem proprietários. O proprietário especial é conhecido como raiz, também tem permissões especiais para executar tudo e qualquer coisa. Todo mundo tem privilégios limitados e acesso muito limitado a arquivos e pastas. Para elevar nossos privilégios, é preciso usar o comando sudo. No entanto, não é uma boa ideia distribuir a senha raiz para pessoas aleatórias sempre que elas precisam fazer algo que requer privilégios mais altos. Então o que você pode fazer então? Bem, podemos usar o que é conhecido como Suid, Guid e Bits Sticky. Neste tutorial, estaremos revisando o conceito de Suid, Guid e Bits Sticky.

Suid

SUID ou SET ID do usuário do proprietário é um sinalizador de bits de permissão que se aplica a executáveis. O SUID permite que um usuário alternativo execute um executável com as mesmas permissões que o proprietário do arquivo, em vez das permissões do usuário alternativo.

Vamos usar um exemplo para demonstrar Suid. Suponha que haja três usuários: Kalyani, Sara e John. Suponha que Kalyani tenha acesso total à raiz; Ou seja, ela pode usar o comando sudo com uma senha válida. Suponha ainda que Sara e John tenham privilégios menos ou muito limitados na máquina. Agora, suponha que tenhamos um executável (ex: su, usado para trocar de usuários) que pertence à raiz. Veja bem, isso é importante; pertence à raiz e, portanto, apenas raiz tem as permissões para executá -la!!!

No entanto, digamos que atribuímos SUID. Porque nós o designamos suid, esse executável, SU, é executado não como Sara ou John, mas como raiz. Tecnicamente, Sara pode executar seus arquivos, e John pode executar seus arquivos. Eles não têm permissão para executar arquivos que pertencem à raiz. Se eles querem executá -lo, normalmente, você precisará digitar o comando sudo. Mas aqui, Sara executa um arquivo que ela não possui! E então o que observamos é que, ao usar Suids, o executável é executado como proprietário do arquivo, root, e não a pessoa que o executa (ex: Sara ou John).

Por exemplo, vamos pegar o comando passwd. O comando passwd é usado para alterar a senha de um usuário. Agora, se olharmos para o arquivo em detalhes, notaremos que, em vez de um X que significa executar, haverá um "s". Os "S" aqui significa Suid. Você observará ainda que o arquivo pertence à raiz. Tecnicamente, isso significa que apenas a raiz tem a permissão para executá -la; No entanto, você notará que todos podem executar o comando. Como tal, com o conjunto de permissões SUID, esse executável em particular pode ser executado por Sara e John quando realmente não pertence a eles! Sara e John obtêm as mesmas permissões que a raiz ao executar este executável específico. Isso é assim mesmo quando Sara e John não têm acesso raiz e não têm privilégios de raiz.

Então, em suma, por causa de Suid, Sara e John estarão executando o comando passwd como se fossem seu dono, root!

Agora, suponha por um momento que eu removo o suid do comando passwd. Vamos ver o que vai acontecer (na imagem abaixo).

Agora, vamos ver o que acontecerá quando tentarmos usar o comando passwd (assim que o SUID for removido):

Como você pode ver, quando eu removi o Suid do comando passwd e depois tentei executá -lo como Sara, ele se recusou a executá -lo. Isso resultou em um erro!

Suid não é algo a ser tomado de ânimo leve e, como tal, é preciso ter muito cuidado ao atribuí -lo. De fato, existem ataques especiais na segurança cibernética que visam precisamente executáveis ​​em execução no SUID.

Para encontrar os executáveis ​​que tenham um conjunto de suid, digitamos:

# para obter todos os suids
encontre /-perm -4000 2> /dev /null
# para obter todos os guids
encontre /-perm -2000 2> /dev /null
# Encontre todos os pedaços pegajosos
encontre /-perm -1000 2> /dev /null

Definir suid

Agora, precisamos aprender a definir suids. Existem duas maneiras de usar o CHMOD: numérico e simbólico.

Usando o método numérico:

Usamos o seguinte código para definir permissões:

Setuid = 4
SetGid = 2
Pegajoso = 1
Nenhum = 0
Leia = 4
Escreva = 2
Execute = 1

Durante as permissões regulares, escrevemos o seguinte:

CHMOD 0777 executável

Este último implicaria que lemos, escreva e executam permissões para o usuário, o grupo e outros. Agora, para usar um SUID, escrevemos o seguinte:

CHMOD 4XXX Executável

Ex:

Script CHMOD 4744

Aqui, o que temos que observar é o 4 na primeira posição. Os 4 fornecem permissões SUID.

Aqui, seria assim:

O X para executar será substituído por um "S". Agora, se o arquivo não tiver sido definido para ser executável, será um capital s ("s"). Então aqui temos:

-RWSR-r--

O "S" significa que o SUID foi definido (e o arquivo é executável)!

Usando o método simbólico:

O mesmo também pode ser realizado usando o método simbólico:

CHMOD U+S executável

Ex:

script CHMOD U+S

Agora aqui, há momentos em que você pode ver um capital "s". O capital "s" significa que o arquivo ainda não é executável.

Para revogar os direitos do SUID, tipo:

CHMOD U-S executável

Ex:

Script CHMod U-S

Guid

Guid é semelhante ao suid. No Suid, o executável em questão é executado com os privilégios do proprietário do arquivo. No GUID, se for um executável, então é executado com as permissões do grupo. Se for um diretório, resulta em todos os novos arquivos e diretórios criados para pertencer ao grupo.

Para definir o GUID usando o método numérico:

CHMOD 2XXX Executável

Ex:

CHMOD 2744 Script

Aqui, o ponto a ser observado é o 2 (na primeira posição), que significa GUID.

Para definir o GUID usando o método simbólico:

CHMOD G+S executável

Ex:

script chmod g+s

No entanto, aqui, eu vejo pela primeira vez:

Aqui está um capital "s". Isso significa que o arquivo não é executável. Isso pode ser facilmente corrigido executando o seguinte código:

CHMOD +X executável

Ex:

script chmod +x

Bits pegajosos

Bits pegajosos se aplicam aos diretórios. Quando bits pegajosos são definidos em um diretório específico, qualquer usuário que tenha acesso ao diretório e seu conteúdo só pode excluir seus próprios arquivos e não pode tocar ou excluir arquivos pertencentes a outra pessoa. Bits pegajosos são normalmente usados ​​ao usar uma pasta compartilhada. Ninguém pode excluir o arquivo de outra na pasta compartilhada, mesmo que a permissão seja 777.

Para definir bits pegajosos usando o método numérico:

CHMOD 1XXX Executável

Ex:

Script CHMOD 1744

Aqui, usamos o 1 na primeira posição para denotar que será uma parte pegajosa.

Para definir bits pegajosos usando o método simbólico:

CHMOD O+T executável

Ex:

script chmod o+t

As permissões são uma parte crucial do Linux. O comando chmod é normalmente usado para definir e modificar permissões simples. No entanto, existem permissões especiais que se pode definir usando o comando chmod também. Essas permissões especiais são conhecidas como Suid, Guid e Bit Sticky. Quando aplicado em um determinado executável, as permissões especiais são executadas com as permissões do proprietário do arquivo ou do grupo. Em outras palavras, eleva os privilégios do usuário ao do proprietário, normalmente root, temporariamente ao usar esse executável. No entanto, o uso incorreto das permissões especiais pode se tornar uma ameaça séria. De fato, no campo da segurança cibernética, é usado como uma vulnerabilidade potencial para escalar privilégios em uma máquina. Então use -o com sabedoria e com muito, muito cuidadosamente!

Codificação feliz!