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/passwd cat /etc/passwd # Mostrando os grupos less /etc/group cat /etc/group
Descobrindo senhas dos usuários no Linux
# Mostrando os usuários e suas senhassudo cat /etc/shadow sudo 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/passwd sudo 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
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!
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.