4

On Ubuntu 20.04, I am trying to add a user, however, it keeps failing. I don't see anything wrong and going crazy over a simple useradd command! What am I doing wrong?

root@myhost:~# uname -a
Linux dsdb 5.4.0-109-generic #123-Ubuntu SMP Fri Apr 8 09:10:54 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

root@myhost:~# getent group oinstall oinstall:x:1001:

root@myhost:~# getent group dba dba:x:1002:

root@myhost:~# useradd –g oinstall –G dba –m –d /home/oracle oracle Usage: useradd [options] LOGIN useradd -D useradd -D [options]

Options: --badnames do not check for bad names -b, --base-dir BASE_DIR base directory for the home directory of the new account --btrfs-subvolume-home use BTRFS subvolume for home directory -c, --comment COMMENT GECOS field of the new account -d, --home-dir HOME_DIR home directory of the new account -D, --defaults print or change default useradd configuration -e, --expiredate EXPIRE_DATE expiration date of the new account -f, --inactive INACTIVE password inactivity period of the new account -g, --gid GROUP name or ID of the primary group of the new account -G, --groups GROUPS list of supplementary groups of the new account -h, --help display this help message and exit -k, --skel SKEL_DIR use this alternative skeleton directory -K, --key KEY=VALUE override /etc/login.defs defaults -l, --no-log-init do not add the user to the lastlog and faillog databases -m, --create-home create the user's home directory -M, --no-create-home do not create the user's home directory -N, --no-user-group do not create a group with the same name as the user -o, --non-unique allow to create users with duplicate (non-unique) UID -p, --password PASSWORD encrypted password of the new account -r, --system create a system account -R, --root CHROOT_DIR directory to chroot into -P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files -s, --shell SHELL login shell of the new account -u, --uid UID user ID of the new account -U, --user-group create a group with the same name as the user -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux user mapping --extrausers Use the extra users database

Jeff Schaller
  • 67,283
  • 35
  • 116
  • 255
Ufder
  • 149

1 Answers1

13

in your command is not ASCII -. In options like -m the tool (like almost every tool) requires plain old ASCII -.

This is how your command looks like:

$ printf '%s\n' 'useradd –g oinstall –G dba –m –d /home/oracle oracle' | od -c
0000000   u   s   e   r   a   d   d     342 200 223   g       o   i   n
0000020   s   t   a   l   l     342 200 223   G       d   b   a     342
0000040 200 223   m     342 200 223   d       /   h   o   m   e   /   o
0000060   r   a   c   l   e       o   r   a   c   l   e  \n
0000075

And this is how a proper command looks like:

$ printf '%s\n' 'useradd -g oinstall -G dba -m -d /home/oracle oracle' | od -c
0000000   u   s   e   r   a   d   d       -   g       o   i   n   s   t
0000020   a   l   l       -   G       d   b   a       -   m       -   d
0000040       /   h   o   m   e   /   o   r   a   c   l   e       o   r
0000060   a   c   l   e  \n
0000065