Permissões do Linux

Artigo básico sobre as permissões do Linux para tentar elucidar um pouco como funciona a lógica da coisa.

[ Hits: 5.803 ]

Por: Buckminster em 08/05/2023


Desenvolvimento 2



Em relação ao bit "Set-User-ID" citado anteriormente de passagem (tema de casa para quem tiver interesse), caso der o comando abaixo:

# chmod us arquivo.txt

ativa o bit SUID e faz com que qualquer um que tente acessar esse arquivo o fará como sendo o proprietário do arquivo.

E se der o comando abaixo:

# chmod a=rw arquivo.txt

dará permissão de leitura e escrita para todos ao arquivo.txt (a de all, todos em Português).

Testando algumas coisas

No diretório root crie um diretório:

# mkdir teste

e dê um ls -l

# ls -l teste
total 0

Entre no teste:

# cd teste

Crie um arquivo dentro do diretório teste:

# vim teste1

Usei o vim, use teu editor de texto preferido.

Digite qualquer coisa dentro do arquivo. Salve e saia.

Volte ao root:

# cd

Dê um ls -l:

# ls -l teste
total 4
-rw-r--r-- 1 root root 6 abr 15 20:50 teste1


E vemos que o arquivo teste1 foi criado com as permissões padrões do umask para arquivos txt.

Vamos criar um diretório dentro de teste:

# cd teste
# mkdir teste2

Entrando no diretório teste2:

# cd /teste/teste2

Vamos criar um arquivo dentro de teste2:

# vim teste3

Digite qualquer coisa dentro, salve e saia.

Volte ao root:

# cd

Dê um ls -l no diretório teste:

# ls -l teste
total 8
-rw-r--rr-- 1 root root 6 abr 15 20:50 teste1
drwxr-xr-x 2 root root 4096 abr 15 20:58 teste2


O comando não exibiu o arquivo dentro de teste2 porque não estamos no diretório teste2.

Percebam que as permissões padrões criadas para o diretório teste2 são diferentes das permissões do arquivo teste1, isso acontece porque o Linux cria permissões padrões diferentes para diretórios e arquivos.

Os diretórios, dentro da estrutura Linux, recebem umas permissões padrões e os arquivos outras, dependendo se o arquivo é texto ou binário.

A umask (user mask, máscara do usuário, grosso modo) é somente um padrão que pode ser alterado pelo root. Um diretório tem permissão de execução para que se possa entrar nele. Além disso, as permissões de um diretório tem precedência sobre as dos arquivos que ele contém.

Caso você alterar as permissões do diretório teste2 sem o parâmetro -R (recursivamente), as permissões do arquivo teste3 permanecerão as mesmas.

Caso você der um chmod 0 teste2:

# chmod 0 teste2

verá que o diretório teste2 ficará sem permissão nenhuma, mas o arquivo dentro continuará com as permissões anteriormente definidas.

Mas vamos entender mais um pouco.

# ls -l
-rw-r--rr-- 1 root root 6 abr 15 20:50 teste1
d--------- 2 root root 4096 abr 15 20:58 teste2


Agora vamos dar um:

# ls -l teste2

A saída será:

total 4
-rw-r--r-- 1 root root 6 abr 15 20:50 teste3


Isso acontece por que o comando "ls -l teste2" mostra somente as permissões do que está dentro do diretório teste2.

Para vermos as permissões de teste2 devemos digitar o comando ls -l sem parâmetros:

# ls -l
-rw-r--rr-- 1 root root 6 abr 15 20:50 teste1
d--------- 2 root root 4096 abr 15 20:58 teste2


Também temos o arquivo /etc/sudoers (man sudoers) que em sistemas Debian e derivados, além de alguns outros não derivados do Debian, é o arquivo que determina os privilégios de sudo.

A man page sudoers (Manual do sudoers) descreve também o grupo wheel.

Em sistemas Debian e derivados o grupo é chamado de sudo e em outros sistemas como Red Hat e derivados o grupo é chamado de wheel.

No arquivo /etc/sudoers do Debian, por exemplo, sequer toca no nome da patota do wheel.

Quando você usa sudo, su, etc, na realidade você está quase como root.

Para estar como root mesmo - o todo poderoso superusuário com plenos poderes de super-vaca - você precisa logar como root na inicialização do sistema. Porém, isto não é aconselhável e nem é necessário.

Entendendo um pouco as linhas do /etc/sudoers:

1. ALL=(ALL:ALL) ALL: O primeiro ALL representa todos os hosts, o segundo ALL indica todos os usuários e o terceiro ALL indica todos os grupos. O último ALL representa todos os comandos. Dar estes privilégios a um usuário o coloca no grupo sudo e o mesmo não precisa mais digitar a senha antes de um comando específico com sudo. E se não estiver na patota do sudo dará a mensagem: lebowski não está no arquivo sudoers.

2. ALL=(ALL) ALL: O primeiro ALL representa todos os hosts, o segundo ALL indica todos os usuários, como não tem o terceiro ALL o usuário colocado com estes privilégios não poderá executar comandos como outros grupos. O último ALL representa todos os comandos.

Para abrir o arquivo /etc/sudoers com o editor de texto padrão do sistema execute o comando:

sudo visudo

senão use o teu editor preferido:

# vim /etc/sudoers

Podes colocar o seguinte para teu usuário:

ALL=(ALL:ALL)     NOPASSWD:   ALL

Salve e saia. Não precisará mais digitar senha com sudo, exemplo:

sudo apt-get update

ou qualquer outro comando que precise de privilégios root não pedirá senha nunca.

Curiosidade importante

No Debian e derivados se você digitar como usuário su ou su - verá a diferença no terminal:

su

digitando a senha mudará para:

#

As inicias "su" em si significam "Substitute User", substitui o ID do usuário e do grupo, ou seja, você entra temporariamente nessa condição.

su sem parâmetro mudará para o usuário em que está (no caso acima estava em lebowski). É a mesma coisa que digitar:

su lebowski

Para mudar de usuário:

su postgres

su usuario etc

A senha que pedirá é a senha do usuário, não é a senha de root ou do seu usuário, no caso, lebowski.

Caso der falha de autenticação provavelmente é por que você não cadastrou senha para o usuário, ele só foi criado, mas não tem senha.

sudo passwd usuario

e digite a senha do seu usuário para logar e depois digite as duas senhas para o usuário.

Para mudar para outro usuário com ou sem poderes de root depende em qual grupo o usuário foi colocado. Caso estiver no grupo sudo terá privilégios de root.

Basta digitar su seguido do nome do usuário que se quer.

O su - (com hífen) sem parâmetro entra no root.

Pode utilizar também o comando usermod para inserir usuários, mudar diretórios, etc.

Mudando o nome lebowski para grande_lebowski:

# usermod -l lebowski_grande_lebowski

Para trancar uma conta:

# usermod -L lebowski

Utilize a opção -U para destrancar:

# usermod -U lebowski

Para criar um usuário e um diretório /home para esse novo usuário use a opção -m do comando

# useradd -m grande_lebowski

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Desenvolvimento 1
   3. Desenvolvimento 2
   4. Conclusão
Outros artigos deste autor

Entendendo o que é URI, URL, URN e conhecendo as diferenças entre POST e GET

Instalando e Configurando o pgAgent no Linux (pgAdmin e PostgreSQL)

O Kernel Linux

Instalar certificado SSL/TLS digital válido gratuito no Linux

Compilação de Kernel

Leitura recomendada

Instalei o Ubuntu! E agora?

openSUSE Argon

Lendo as permissões dos arquivos Linux

Trabalhando com a extensão .tar

Introdução ao Shell

  
Comentários
[1] Comentário enviado por danniel-lara em 09/05/2023 - 09:34h


Muito bom o Artigo

[2] Comentário enviado por maurixnovatrento em 14/05/2023 - 20:35h


Ótimo artigo.

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10

[3] Comentário enviado por SamL em 23/05/2023 - 00:51h

Massa hein!


https://nerdki.blogspot.com/ acessa ai, é grátis
Não gostou? O ícone da casinha é serventia do site!

[4] Comentário enviado por Hunt15 em 16/06/2023 - 03:43h

I like the way you made this post. Short but juicy. Thanks for sharing! https://www.paybyplatema.one/


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts