Qual é a diferença entre os comandos adduser
e useradd
no Ubuntu?
Qual é a diferença entre os comandos adduser
e useradd
no Ubuntu?
Respostas:
useradd
é um binário nativo compilado com o sistema. Mas,adduser
é um script perl que usauseradd
binário no back-end.
adduser
é mais amigável e interativo que seu back-enduseradd
. Não há diferença nos recursos fornecidos.
-m
opção criará o diretório inicial.
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ê.
Sempre useadduser
(e deluser
ao 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 deluser
não estar disponível em todas as distros, por exemplo, no SuSE.)
Os comandos useradd
, userdel
e usermod
são utilitários de baixo nível que estão lá por razões históricas, enquanto o adduser/deluser
Do The Right Thing ™. (Lembro-me de qual usar pensando que user*
vem depois adduser/deluser
no 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).
adduser
says:(Enfase adicionada.)
adduser
eaddgroup
adicione 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íveluseradd
,groupadd
comousermod
programas , 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.adduser
eaddgroup
pode ser executado em um dos cinco modos:
useradd
says:
useradd
é um utilitário de baixo nível para adicionar usuários. No Debian, os administradores geralmente devem usaradduser(8)
.
Veja também: Qual é a diferença entre "adduser" e "useradd"? (no superusuário)
adduser
": para scripts automatizados, prefiro useradd
porque está sempre lá, não interativo e não específico de distribuição .
adduser
no openSUSE, e ele não está lá (13,2).
locate adduser
um sistema SuSE 11 em funcionamento, descobri que havia uma página de adduser
manual, mas não binária (e nem uma página de deluser
manual nem um comando).
/usr/sbin/adduser -> useradd
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)
Outro par de diferenças, que levam a cenários específicos nos quais o useradd pode ser preferível.
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
useradd
permite que você passe vários grupos adicionais aos quais adicionar um usuário por meio da -G
opção adduser
parece exigir que você chame o comando uma vez para cada grupo adicionar.
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 useradd
apenas cria o usuário.
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!
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
# 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#
Também vou apontar que adduser
nem sempre tem a -M
opção e também não respeita a --system
bandeira 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
.