Um comando para listar todos os usuários? E como adicionar, excluir, modificar usuários?


856

Eu preciso de um comando para listar todos os usuários no terminal. E como adicionar, excluir, modificar usuários do terminal.

Isso poderia ajudar na administração de suas contas facilmente por terminal.


3
Resposta sedsed 's/:.*//' /etc/passwd
Avinash Raj

2
lista usuários:awk -F: '{ print $1 }' /etc/passwd
saviour123

Respostas:


1143

Listar

Para listar todos os usuários locais, você pode usar:

cut -d: -f1 /etc/passwd

Para listar todos os usuários capazes de se autenticar (de alguma forma), incluindo não local, consulte esta resposta .

Alguns comandos mais úteis de gerenciamento de usuários (também limitados a usuários locais ):

Adicionar

Para adicionar um novo usuário, você pode usar:

sudo adduser new_username

ou:

sudo useradd new_username

Consulte também: Qual é a diferença entre adduser e useradd?

Para remover / excluir

Para remover / excluir um usuário, primeiro você pode usar:

sudo userdel username

Em seguida, convém excluir o diretório inicial da conta de usuário excluída:

sudo rm -r / home / nome de usuário

Por favor, use com cuidado o comando acima!

Para modificar

Para modificar o nome de usuário de um usuário:

usermod -l new_username old_username

Para alterar a senha de um usuário:

sudo passwd username

Para alterar o shell para um usuário:

sudo chsh username

Para alterar os detalhes de um usuário (por exemplo, nome real):

sudo chfn username

Para adicionar um usuário ao sudogrupo:

adduser username sudo

ou

usermod -aG sudo username

E, claro, ver também: man adduser, man useradd, man userdel... e assim por diante.


12
Radu esqueceu de mencionar as sudo chfn <username>alterações nos detalhes do usuário (por exemplo, nome real). Tentei adicionar isso como um comentário, mas recebi um erro ao me dizer que devo ter +50 de reputação para fazer isso.
Mikaela

2
Eu acho que deve ser sublinhado que a resposta correta para a pergunta vinculada é askubuntu.com/a/381646/16395 --- caso contrário, você deve levar em consideração as políticas GID / UID do Ubuntu manualmente. A resposta aceita não é tão clara.
Rmano

sudo userdel DOMAIN \\ johndoe me dá o erro: "userdel: não é possível remover a entrada 'DOMAIN \ johndoe' de / etc / passwd - procurei em / etc / passwd e eles nem estão lá, provavelmente porque é um" domínio "conta?
00fruX 07/08

1
@ 00fruX Sim ... Se você estiver usando um banco de dados centralizado de usuários, precisará lidar diretamente com ele.
Oli


87

Basta pressionar Ctrl+ Alt+ Tno teclado para abrir o Terminal. Quando abrir, execute o (s) comando (s) abaixo:

cat /etc/passwd

OU

less /etc/passwd
more /etc/passwd

Você também pode usar o awk: awk

awk -F':' '{ print $1}' /etc/passwd

como adicionar usuários por comando?
Nux 24/01

Você pode usar o comando useradd .
Mitch

@ nux Um pouco atrasado para a festa, mas a partir do uso da linha de comando adduser, useradddeve se limitar a scripts em que o autor realmente sabe o que está fazendo.
flindeberg

64

A maneira mais fácil de obter esse tipo de informação é getent- consulte a página de manual do getentcomandoÍcone da página de manual . Embora esse comando tenha a mesma saída cat /etc/passwdque é útil lembrar, ele fornecerá listas de vários elementos no sistema operacional.

Para obter uma lista de todos os usuários digitados (conforme os usuários estão listados /etc/passwd)

getent passwd

Para adicionar um usuário newuser para o sistema você deve digitar

sudo adduser newuser

para criar um usuário com todas as configurações padrão aplicadas.

Bônus: Para adicionar um usuário (por exemplo anyuser ) a um grupo (por exemplo, CD-ROM ) tipo

sudo adduser anyuser cdrom

Você exclui um usuário (por exemplo, obsoleto ) com

sudo deluser obsolete

Se você deseja excluir o diretório inicial / e-mails, digite

sudo deluser --remove-home obsolete

E

sudo deluser --remove-all-files obsolete

removerá o usuário e todos os arquivos pertencentes a esse usuário em todo o sistema.


8
É útil lembrar que o getent não apenas imprime a saída de usuários em / etc / passwd, mas todos os usuários em todos os backend configurados em um determinado sistema, seja / etc / passwd ou LDAP, etc.
Marcin Kaminski,

O @MarcinKaminski está certo, ele também imprime a configuração dos usuários nos sistemas SSO que têm acesso ao servidor. esta resposta é o um dos melhores, com getent passwdsendo o comando certo
ulkas

@MarcinKaminski de todos os inumeráveis backend userdb
jrw32982 27/06


27

Isso deve obter, na maioria das situações normais , todos os usuários normais (não pertencentes ao sistema, não estranhos, etc.):

awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd

Isso funciona por:

  • lendo de /etc/passwd
  • usando :como delimitador
  • se o terceiro campo (o número de ID do usuário) for maior que 1000 e não 65534, o primeiro campo (o nome de usuário do usuário) será impresso.

Isso ocorre porque em muitos sistemas linux, nomes de usuário acima de 1000 são reservados para usuários sem privilégios (você poderia dizer normal). Algumas informações sobre isso aqui :

Um ID do usuário (UID) é um número inteiro positivo exclusivo designado por um sistema operacional semelhante ao Unix para cada usuário. Cada usuário é identificado no sistema por seu UID, e os nomes de usuário geralmente são usados ​​apenas como uma interface para humanos.

Os UIDs são armazenados, juntamente com seus nomes de usuário correspondentes e outras informações específicas do usuário, no arquivo / etc / passwd ...

O terceiro campo contém o UID e o quarto campo contém o ID do grupo (GID), que por padrão é igual ao UID para todos os usuários comuns.

Nos kernels Linux 2.4 e acima, os UIDs são números inteiros de 32 bits sem sinal que podem representar valores de zero a 4.294.967.296. No entanto, é aconselhável usar valores apenas até 65.534, a fim de manter a compatibilidade com sistemas que usam kernels ou sistemas de arquivos mais antigos que só podem acomodar UIDs de 16 bits.

O UID 0 tem um papel especial: é sempre a conta raiz (ou seja, o usuário administrativo onipotente). Embora o nome de usuário possa ser alterado nessa conta e contas adicionais possam ser criadas com o mesmo UID, nenhuma ação é recomendada do ponto de vista de segurança.

O UID 65534 geralmente é reservado para ninguém, um usuário sem privilégios de sistema, em oposição a um usuário comum (ou seja, sem privilégios). Esse UID é frequentemente usado para pessoas que acessam o sistema remotamente via FTP (protocolo de transferência de arquivos) ou HTTP (protocolo de transferência de hipertexto).

Os UIDs 1 a 99 são tradicionalmente reservados para usuários especiais do sistema (às vezes chamados de pseudo-usuários), como wheel, daemon, lp, operator, news, mail, etc. algumas tarefas administrativas e, portanto, precisam de mais privilégios do que aqueles concedidos a usuários comuns.

Algumas distribuições Linux (ou seja, versões) iniciam UIDs para usuários não privilegiados aos 100. Outras, como a Red Hat, iniciam com 500 e outras ainda, como o Debian, iniciam com 1000. Devido às diferenças entre distribuições, manual intervenção pode ser necessária se várias distribuições forem usadas em uma rede em uma organização.

Além disso, pode ser conveniente reservar um bloco de UIDs para usuários locais, como 1000 a 9999, e outro bloco para usuários remotos (ou seja, usuários em outras partes da rede), como 10000 a 65534. O importante é decidir em um esquema e aderir a ele.

Uma das vantagens dessa prática de reservar blocos de números para tipos específicos de usuários é que torna mais conveniente pesquisar nos logs do sistema atividades suspeitas do usuário.

Ao contrário da crença popular, não é necessário que cada entrada no campo UID seja única. No entanto, UIDs não exclusivos podem causar problemas de segurança e, portanto, os UIDs devem ser mantidos exclusivos em toda a organização. Da mesma forma, a reciclagem de UIDs de usuários antigos deve ser evitada pelo maior tempo possível.


1
Quase uma resposta perfeita, mas o IMO é mais limpo de usar em getentvez de ler diretamente /etc/passwde procurar UID_MIN/ em UID_MAXvez de codificar os valores:getent passwd | awk -F: "{if (\$3 >= $(awk '/^UID_MIN/ {print $2}' /etc/login.defs) && \$3 <= $(awk '/^UID_MAX/ {print $2}' /etc/login.defs)) print \$1}"
Max Truxa

17

lista de todos os usuários que podem efetuar login (nenhum usuário do sistema gosta: bin, deamon, email, sys, etc.)

awk -F':' '$2 ~ "\$" {print $1}' /etc/shadow

adicionar novo usuário

sudo adduser new_username

ou

sudo useradd new_username

excluir / remover nome de usuário

sudo userdel username

Se você deseja excluir o diretório inicial (o diretório / home / nome de usuário)

sudo deluser --remove-home username

ou

sudo rm -r /path/to/user_home_dir

Se você deseja excluir todos os arquivos do sistema deste usuário (não é apenas o diretório inicial)

sudo deluser --remove-all-files

1
Talvez você deva explicar a diferença entre addusere useradd. Também adicione o sudoprefixo-ao primeiro comando. O arquivo de sombra da senha pode ser lido apenas como raiz.
S3lph 25/09/14

1
awk -F':' '$2 ~ "\$" {print $1}' /etc/shadowme mostrou todos os usuários, incluindo bin, daemon, etc. e lançou este aviso: seqüência de escape \$' treated as plain $' Eu encontrei este post stackoverflow.com/a/25867768/847954 e acrescentou mais uma barra invertida e funcionou muito bem:awk -F':' '$2 ~ "\\$" {print $1}' /etc/shadow
jeff musk

8

Ok, aqui está um truque que o ajudará a resolver isso. O terminal possui preenchimento automático se você digitar user e pressionar a tecla Tab duas vezes, listará todos os comandos existentes com o usuário como os 4 primeiros caracteres.

user (tab tab)

dá-me como opções possíveis useradd userdel usermod usuários users-admin
se você quiser saber mais sobre um comando google it ou digite man man useradd gives useradd - crie um novo usuário ou atualize as novas informações padrão do usuário ... ...

Para listar os usuários, você deve seguir o que Mitch disse.

Espero que ajude a adorar a conclusão de guias no bash me salve de lembrar das coisas.


6

Para descobrir os usuários que possuem diretórios pessoais na pasta / home na máquina, execute os seguintes comandos

cd /home
ls 

Você pode ver os usuários que têm autorização para efetuar login no servidor. Se queremos examinar os arquivos de qualquer usuário, você deve ser o usuário root.


8
Isso mostra apenas o conteúdo de /home. Embora o Ubuntu coloque os diretórios de usuário por padrão, ele não é de forma alguma obrigatório.
David Foerster

ls /hometambém pode conter diretórios de usuários excluídos.
Suraj
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.