Lidando com usuários no Linux

O Linux permite que diferentes pessoas possam usar o sistema, cada um com seu login, senha e com suas permissões particulares de acesso à softwares, diretórios (pastas) e arquivos.

E caso você queira permitir que vários usuários tenham permissão para algo, você pode criar um grupo, tornar todos os usuários desejados neste grupo, e dar as permissões para o grupo inteiro.

Então no Linux temos usuários e grupos aos quais esses usuários podem fazer parte.

No que um usuário é criado, um grupo com o mesmo nome do usuário é criado automaticamente.

Vendo/Listando todos os usuários e grupos

# Mostrando os usuáriosless /etc/passwdcat /etc/passwd# Mostrando os gruposless /etc/groupcat /etc/group

Descobrindo senhas dos usuários no Linux

# Mostrando os usuários e suas senhassudo cat /etc/shadowsudo less /etc/shadow

Uma lista com várias linhas com algo semelhante a isso aparecerá:

meu-usuario:*:16519:0:99999:7:::

Quando o usuário não tem uma senha registrada, encontramos *, ! ou espaço.

Caso o usuário tenha uma senha, ela será mostrada de forma ofuscada ou criptorgafada (em hash ou algum outro algoritmo indicado).

Criando usuários no Linux

Para criar usuários usamos o comando useradd.

# Criando um usuário chamado olivia e também seu diretório /home/oliviasudo useradd -m olivia

O comando useradd tem vários parâmetros adicionais.

Ao criar o usuário não esqueça de configurar o seu shell padrão:

# Deixando o bash como shell padrãosudo usermod --shell /bin/bash usuario-desejado# Ou edite o arquivo /etc/passwdsudo nano /etc/passwd# E adicione no caminho para shell no final da linha.# Exemplo:meu-usuario:x:1001:1002::/home/meu-usuario:/bin/bash

Alterando senha do usuário recém criado

sudo passwd olivia

Acessando usuário recém criado

su - olivia

Referências

Descobrindo se um usuário tem uma senha registrada
https://infoheap.com/linux-check-if-a-user-has-password/

Entendendo o arquivo shadow do Linux
https://www.cyberciti.biz/faq/understanding-etcshadow-file/

Gerenciando usuários e grupos no Linux (ótimo artigo)
https://www.linux.com/learn/intro-to-linux/2017/12/how-manage-users-groups-linux

Permitindo usuários usarem o systemctl sem precisar usar sudo
https://askubuntu.com/questions/692701/allowing-user-to-run-systemctl-systemd-services-without-password

Permitindo SSH para usuários ou grupos de usuários
https://www.ostechnix.com/allow-deny-ssh-access-particular-user-group-linux/

Tutorial sudo - Digital Ocean
https://www.digitalocean.com/community/tutorials/how-to-edit-the-sudoers-file-on-ubuntu-and-centos

Aqui vai algumas dicas sobre gerenciar usuários no Linux.

O tutorial mais claro que encontrei até o momento foi este aqui, do linux.com. Ele mostra passo-a-passo sobre criação de usuários, criação de grupos, edição de permissões, gerenciando access list.

Fui acessar SSH com o novo usuário, mas o shell parece diferente e com poucas funções, o que está acontecendo?

Provisoriamente você pode executar

[code language="bash"]bash[/code]

Mas para fazer a mudança persistir,

Abra a lista de usuários em /etc/passwd

Lá, o usuário desejado deve estar com final "/bin/sh", correto? Mude para "/bin/bash" e tudo estará certo.

(No Ubuntu, o "/bin/sh" é um atalho para o "/bin/dash", estes são linhas de comando simplificadas, sem todas as funções que o bash fornece).

Baseado nesta resposta do Unix Stack Exchange.

Outra forma de fazer isso é:

sudo usermod --shell /bin/bash usuario-desejado

Baseado nessa resposta

https://www.tecmint.com/change-a-users-default-shell-in-linux/

Criar uma pasta /home/usuario para seu usuário já existente mas que não tem pasta

mkhomedir_helper usuario

Baseado nesta resposta do Ask Ubuntu.

Dando permissões sudo ao usuário recém criado

Para gerenciar as permissões, você tem duas opções:

  • Gerenciar sudo via arquivo /etc/sudoers
  • Gerenciar sudo via algum arquivo na pasta /etc/sudoers.d/algum-arquivo

A segunda opção é mais adequada porque se você fizer uma atualização de sistema e o arquivo /etc/sudoers for reescrito no processo, você perderá suas configurações.

Para fazer do jeito recomendado, crie um arquivo qualquer (que não contenha ~ ou .) dentro de /etc/sudoers.d/

/etc/sudoers

Vai funcionar, mas não é recomendado, pois caso você faça alguma atualização no Linux, toda a configuração que você fez pode ser perdida. O recomendado é criar um arquivo de qualquer nome (que não tenha . ou ~ em seu nome) dentro da pasta /etc/sudoers.d/

Os arquivos criados devem ter a permissão 0400

É possível usar wildcards no arquivo sudoers? Sim!

É possível usar sim, mas tenha muito cuidado!

https://blog.compass-security.com/2012/10/dangerous-sudoers-entries-part-4-wildcards/

Lista de controle de acesso (Access Control List) usando setfacl - como usar e em que casos precisarei usar?

A lista de controle de acesso serve apenas quando você quer definir permissões de acesso diferentes para grupos diferentes.

Isso só será útil num caso tipo o seguinte:

Você tem uma pasta chamada X.

Ela pertence ao grupo A, e o grupo A pode tudo (leitura, escrita e execução).
Usuários que não são donos da pasta e não são do grupo A não podem fazer nada.
Você quer que o grupo B possam ler a pasta X.

Pra isso, você usa o setfacl.

You should also read: