¿Cuál es la diferencia entre adduser y useradd?

443

¿Cuál es la diferencia entre los comandos addusery useradden Ubuntu?

Joe Cabezas
fuente
17
Misma pregunta sobre el
superusuario
55
y también en Unix stackexchange (respuesta bastante detallada)
xealits
y es y sigue siendo una buena pregunta válida. El problema no es que las personas lo pregunten en los contextos respectivos, es que esta pregunta debe formularse en absoluto.
foo

Respuestas:

390

useraddes binario nativo compilado con el sistema. Pero, adduseres un script perl que usa useraddbinarios en el back-end.

adduseres más fácil de usar e interactivo que su back-end useradd. No hay diferencia en las características proporcionadas.

Fuente: ¿Cuál es la diferencia entre "adduser" y "useradd"?

Radu Rădeanu
fuente
6060
el comando add useradd no creará el directorio '/ home / username' pero el comando adduser lo hará
profundizará el
65
useradd con la -mopción creará el directorio de inicio.
richsinn
10
La implicación no es tan interesante, la semántica sí lo es. Me gusta adduser(8)es más fácil de usar y crea y configura un usuario de forma predeterminada de la manera que espera. Y useradd(8)solo haga lo que le pida, así que quiere que se cree un directorio de inicio, debe decirle que lo cree por usted.
Anders
24
Tengo que googlear esto cada vez ... ¿Cómo puedo ayudarme a recordar cuál es cuál?
Quentin Skousen
11
@kkhugs para mí "adduser" se siente más intuitivo porque es un comando que suena como inglés, mientras que el otro no, semánticamente. Si lo recuerda como el "más intuitivo" de los dos, también puede intentar recordarlo como el preferido / más fácil.
pzkpfw
146

Utilice siempreadduser (y delusercuando elimine usuarios) cuando cree nuevos usuarios desde la línea de comandos. (Si está escribiendo un script, especialmente si apunta a la portabilidad, es posible que desee utilizar las utilidades de bajo nivel en su lugar, y adduser/ o deluserno esté disponible en todas las distribuciones, por ejemplo, en SuSE).

Los comandos useradd, userdely usermodson utilidades de bajo nivel que están allí por razones históricas, mientras que adduser/deluserDo The Right Thing ™. (Recuerdo cuál usar al pensar que user*viene después adduser/deluseren el alfabeto y, por lo tanto, es "peor").

De acuerdo con las respectivas páginas de manual (en Ubuntu 12.04 Precise Pangolin, es decir, un sistema derivado de Debian).

La página de manual para adduserdice:

(Énfasis añadido.)

addusery addgroupagregue usuarios y grupos al sistema de acuerdo con las opciones de línea de comandos y la información de configuración en /etc/adduser.conf. Son los front-end más amigables para las herramientas de bajo nivel useradd, groupaddcomo los usermodprogramas , y eligen de manera predeterminada los valores UID y GID conformes con la política de Debian, crean un directorio de inicio con configuración esquelética, ejecutan un script personalizado y otras características. addusery addgroupse puede ejecutar en uno de los cinco modos:

La página de manual para useradddice:

useraddes una utilidad de bajo nivel para agregar usuarios. En Debian, los administradores deberían usarlo adduser(8)en su lugar.

Ver también: ¿Cuál es la diferencia entre "adduser" y "useradd"? (en SuperUser)

zrajm
fuente
66
Nunca puedo recordar cuál, así que esta es mi estúpida mnemotecnia si ayuda a alguien :) "usuario" rima con "perdedor", y "perdedor" es lo último. Por lo tanto: adduser, deluser.
Mads Skjern
26
De hecho, no estoy de acuerdo con " Siempre usuarioadduser ": prefiero las secuencias de comandos automatizadas useraddporque siempre está ahí, no es interactivo y no es específico de la distribución .
Wernight
2
Probé adduseren openSUSE, y no es allí (13.2).
cst1992
1
@ cst1992 Tienes razón, he editado la respuesta para reflejar esto. Curiosamente, cuando probé locate adduserun sistema SuSE 11 en el trabajo, descubrí que había una página de addusermanual, pero no binaria (ni una página de delusermanual ni un comando).
zrajm
2
En Red Hat/usr/sbin/adduser -> useradd
Levon
17

adduser: agregar usuario con perfil completo e información (pase, cuota, permiso, etc.)

useradd: agregar usuario solo con su nombre (si desea agregar un usuario temporal con solo un nombre, no se requiere otra información)

m y M
fuente
1
+1 y bienvenido! Voté a la persona que no podía explicar su voto negativo anterior. ¡Seguid así! Los buenos programadores siempre llegan a la cima - (y no rechacen votar sin una explicación). :)
Ricalsin
11

Otro par de diferencias, que conducen a escenarios específicos donde useradd podría ser preferible.

  1. En algunas distribuciones más nuevas, incluida Ubuntu 14.4, adduser solicitará información como contraseña y "gecos" (datos para el comando de dedo). Esto significa que puede ser menos adecuado para llamar desde un script (crédito: ya mencionado en un comentario de Wernight).

    Las indicaciones se pueden suprimir pasando argumentos nulos:

    adduser --disabled-password --gecos "" USER
    
  2. useraddle permite pasar múltiples grupos adicionales para agregar un usuario mediante la -Gopción. adduserparece requerir que llame al comando una vez para que cada grupo agregue.

AdamS
fuente
No funciona en ubuntu 16.04.
answerSeeker
8

adduseres más amigable ya que configura las carpetas de inicio de la cuenta y otras configuraciones (por ejemplo, carga automáticamente las estadísticas del sistema y las notificaciones al iniciar sesión), mientras que useraddsolo crea el usuario.

Pablo
fuente
2
Incorrecto. useradd puede crear un directorio de inicio con -m, establecer una contraseña con -p, crear archivos de esqueleto con -k y agregar usuarios a los grupos con -G.
ychaouche
5

La diferencia básica es que "adduser" creará un directorio de inicio y agregará archivos de esqueleto a ese directorio donde "useradd" no creará ningún directorio de inicio y archivos de esqueleto.

adduser intente:

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
fuente
Incorrecto. Ver comentario anterior
ychaouche
0

También señalaré que adduserno siempre tiene la -Mopción y tampoco respeta la --systembandera que dice específicamente :

Tenga en cuenta que useradd no creará un directorio de inicio para dicho usuario, independientemente de la configuración predeterminada en /etc/login.defs (CREATE_HOME). Debe especificar las opciones -m si desea que se cree un directorio de inicio para una cuenta del sistema.

Si está intentando crear un usuario del sistema sin un directorio de inicio, úselo useradd --system -M.

blockloop
fuente