What's the difference between "adduser" and "useradd"?

58,568

Solution 1

useradd is native binary compiled with the system. But, adduser is a perl script which uses useradd binary in back-end.

adduser is more user friendly and interactive than its back-end useradd. There's no difference in features provided.

Solution 2

The main advantage to adduser over useradd is dealing with system level users. With adduser the system level users account when created puts a user directory in home for the system user where useradd does not automatically. If you read the man they are essentially the same except for system level users and associated home directories are automatic. adduser creates a /home/user directory automatically for system level users where there is not a provision in useradd, except if specified by -m option. The other readings I have come across generically state that UID and GUID are assigned by accepted conformal Debian standards in adduser.

Solution 3

In a couple of Redhat instances I checked (4.9 from 2011 and 6.9 from 2017), adduser is simply an alias to useradd, not a Perl script. Here it is in Redhat 6.9:

$ ls -la /usr/sbin/useradd /usr/sbin/adduser
lrwxrwxrwx. 1 root root      7 Nov  2  2016 /usr/sbin/adduser -> useradd
-rwxr-x---. 1 root root 111320 Feb  9  2016 /usr/sbin/useradd

The way I remember that useradd is the 'correct' program is this: adding a user is just one operation in the CRUD spectrum. You also need 'modify' and 'delete' operations ('read' is presumably covered by viewing /etc/passwd). And so, the programs are named user* (useradd, usermod and userdel respectively). I suppose the alternative *user naming convention (adduser, moduser and deluser -- these don't exist) could also work. But it would be slightly more awkward (for a reason I cannot express clearly at the moment :)

Share:
58,568

Related videos on Youtube

Petr
Author by

Petr

Updated on September 18, 2022

Comments

  • Petr
    Petr over 1 year

    I wonder: Why are there these two commands on Debian Linux, with very similar names and functionality? This has always been confusing for me.

    • Is any of them superior to another?
    • Why aren't they merged into one?
    • Is there any significant difference between them?
    • Which one should I use? Or does it depend on a use case?
    • Admin
      Admin about 5 years
      Note that useradd is available on all Unix-like platform; adduser is only for Debian and its derivatives.
    • Admin
      Admin almost 2 years
      Alpine Linux uses BusyBox which only has adduser. useradd is only available if the shadow package is installed.
  • ychaouche
    ychaouche about 6 years
    adduser isn't available on all distros (eg. suse-based), and on some others it's just a symlink to useradd (redhat-based).
  • ychaouche
    ychaouche about 6 years
    adduser has a --no-create-home option.
  • ychaouche
    ychaouche about 6 years
    can't find moduser on Debian, but deluser is definitely there.
  • David Ferenczy Rogožan
    David Ferenczy Rogožan about 4 years
    adduser provides an option --disabled-password while useradd doesn't. But I guess that useradd can do the same using a different option or combination of options (like --inactive or something like that).
  • kelvin
    kelvin over 3 years
    @DavidFerenczyRogožan "adduser provides an option --disabled-password while useradd doesn't". There is no need; the password is already disabled by default. From <manpages.debian.org/jessie/passwd/useradd.8.en.html>: "-p, --password PASSWORD The encrypted password, as returned by crypt(3). The default is to disable the password.". The more usual way to set the password (outside of Debian at least) is to use passwd (i.e.: after useradd).