Qual é a diferença entre adduser e useradd?

441

Qual é a diferença entre os comandos addusere useraddno Ubuntu?

Joe Cabezas
fonte
17
Mesma pergunta sobre Super User e no Server Fault
ændrük
5
e também no Unix
stackexchange
e é e permanece uma boa pergunta válida. O problema não é as pessoas que o fazem nos respectivos contextos, é que essa pergunta precisa ser feita.
foo

Respostas:

387

useraddé um binário nativo compilado com o sistema. Mas, adduseré um script perl que usa useraddbinário no back-end.

adduseré mais amigável e interativo que seu back-end useradd. Não há diferença nos recursos fornecidos.

Fonte: Qual é a diferença entre "adduser" e "useradd"?

Radu Rădeanu
fonte
59
adicionar comando useradd não vai criar '/ home / username' diretório, mas adduser comando
Aprofundar
65
useradd com a -mopção criará o diretório inicial.
richsinn
10
A implementação não é tão interessante, a semântica é. O Like adduser(8)é mais amigável e cria e configura um usuário por padrão da maneira que você espera. E useradd(8)faça apenas o que você pede, então você quer que um diretório pessoal seja criado, você precisa dizer a ele para criar para você.
Anders
23
Eu tenho que pesquisar isso no google toda vez ... Como posso me lembrar de qual é qual?
Quentin Skousen
11
@kkhugs para mim "adduser" parece o mais intuitivo, porque é um comando que soa como inglês, enquanto o outro não, semanticamente. Se você se lembrar dele como o "mais intuitivo" dos dois, também poderá tentar lembrá-lo como o preferido / mais fácil.
Pzkpfw
146

Sempre useadduser (e deluserao excluir usuários) ao criar novos usuários na linha de comando. (Se você estiver escrevendo um script, especialmente se você deseja portabilidade, convém usar os utilitários de baixo nível - e adduser/ ou delusernão estar disponível em todas as distros, por exemplo, no SuSE.)

Os comandos useradd, userdele usermodsão utilitários de baixo nível que estão lá por razões históricas, enquanto o adduser/deluserDo The Right Thing ™. (Lembro-me de qual usar pensando que user*vem depois adduser/deluserno alfabeto e, portanto, é "pior".)

De acordo com as respectivas páginas de manual (no Ubuntu 12.04 Precise Pangolin, ou seja, um sistema derivado do Debian).

Manpage for addusersays:

(Enfase adicionada.)

addusere addgroupadicione usuários e grupos ao sistema de acordo com as opções de linha de comando e informações de configuração em /etc/adduser.conf. Eles são front-ends mais amigáveis ​​para ferramentas de baixo nível useradd, groupaddcomo usermodprogramas , por padrão, escolhendo valores UID e GID compatíveis com a política Debian, criando um diretório inicial com configuração esquelética, executando um script personalizado e outros recursos. addusere addgrouppode ser executado em um dos cinco modos:

Manpage for useraddsays:

useraddé um utilitário de baixo nível para adicionar usuários. No Debian, os administradores geralmente devem usar adduser(8).

Veja também: Qual é a diferença entre "adduser" e "useradd"? (no superusuário)

zrajm
fonte
6
Eu nunca consigo lembrar qual, então esse é o meu mnemônico estúpido se ajudar alguém :) "user" rima com "perdedor" e "perdedor" vem por último. Assim: adduser, deluser.
Mads Skjern
26
Na verdade, eu discordo de " Sempre usuárioadduser ": para scripts automatizados, prefiro useraddporque está sempre lá, não interativo e não específico de distribuição .
Wernight
2
Tentei adduserno openSUSE, e ele não está lá (13,2).
cst1992
1
@ cst1992 Você está certo, editei a resposta para refletir isso. Curiosamente, quando experimentei locate adduserum sistema SuSE 11 em funcionamento, descobri que havia uma página de addusermanual, mas não binária (e nem uma página de delusermanual nem um comando).
Zrajm
2
No Red Hat/usr/sbin/adduser -> useradd
Levon
17

adduser: adicione usuário com perfil completo e informações (passe, cota, permissão etc.)

useradd: adicionar usuário apenas com seu nome (se você deseja adicionar um usuário temporário com apenas um nome, outras informações não são necessárias)

mandm
fonte
1
+1 e bem-vindo! Eu votei na pessoa que era incapaz de explicar sua votação anterior. Mantem! Bons programadores sempre chegam ao topo - (e não votam sem uma explicação). :)
Ricalsin
11

Outro par de diferenças, que levam a cenários específicos nos quais o useradd pode ser preferível.

  1. Em algumas distros mais recentes, incluindo o Ubuntu 14.4, o adduser solicitará informações como senha e "gecos" (dados para o comando finger). Isso significa que pode ser menos adequado para chamar de um script (crédito: já mencionado em um comentário do Wernight).

    Os prompts podem ser suprimidos passando argumentos nulos:

    adduser --disabled-password --gecos "" USER
    
  2. useraddpermite que você passe vários grupos adicionais aos quais adicionar um usuário por meio da -Gopção adduserparece exigir que você chame o comando uma vez para cada grupo adicionar.

AdamS
fonte
Não funciona no ubuntu 16.04.
answerSeeker
8

adduseré mais amigável na medida em que define as pastas iniciais da conta e outras configurações (por exemplo, o carregamento automático de estatísticas do sistema e notificações no login), enquanto useraddapenas cria o usuário.

Paulo
fonte
2
Errado. useradd pode criar diretório inicial com -m, definir senha com -p, criar arquivos de esqueleto com -k e adicionar usuário ao (s) grupo (s) com -G.
ychaouche
5

A diferença básica é que "adduser" criará o diretório inicial e adicionará arquivos de esqueleto ao diretório em que "useradd" não criará nenhum diretório inicial e arquivos de esqueleto!

adduser tente:

Adding user `try' ...
Adding new group `try' (1001) ...
Adding new user `try' (1001) with group `try' ...
Creating home directory `/home/try' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for try
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] y

useradd try1:

# ll /home/
total 20
drwxr-xr-x  5 root    root    4096 Oct 26 15:52 ./
drwxr-xr-x 22 root    root    4096 Oct 26 15:47 ../
drwx------  8 ashishk ashishk 4096 Oct 26 15:50 ashishk/
drwxr-xr-x  3 root    root    4096 Oct 14 13:02 .ecryptfs/
drwxr-xr-x  2 try     try     4096 Oct 26 15:52 try/
root@chef-workstation:/home/ashishk#
Ashish Karpe
fonte
Errado. Veja o comentário anterior
ychaouche 21/02
0

Também vou apontar que addusernem sempre tem a -Mopção e também não respeita a --systembandeira que diz especificamente :

Observe que o useradd não criará um diretório inicial para esse usuário, independentemente da configuração padrão em /etc/login.defs (CREATE_HOME). Você deve especificar as opções -m se desejar que um diretório inicial para uma conta do sistema seja criado.

Se você estiver tentando criar um usuário do sistema sem um diretório inicial, use useradd --system -M.

blockloop
fonte