What's the difference between "adduser" and "useradd"?
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 :)
Related videos on Youtube
Petr
Updated on September 18, 2022Comments
-
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 about 5 yearsNote that
useradd
is available on all Unix-like platform;adduser
is only for Debian and its derivatives. -
Admin almost 2 yearsAlpine Linux uses BusyBox which only has
adduser
.useradd
is only available if the shadow package is installed.
-
ychaouche about 6 yearsadduser isn't available on all distros (eg. suse-based), and on some others it's just a symlink to useradd (redhat-based).
-
ychaouche about 6 yearsadduser has a --no-create-home option.
-
ychaouche about 6 yearscan't find
moduser
on Debian, butdeluser
is definitely there. -
David Ferenczy Rogožan about 4 years
adduser
provides an option--disabled-password
whileuseradd
doesn't. But I guess thatuseradd
can do the same using a different option or combination of options (like--inactive
or something like that). -
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.: afteruseradd
).