5

When we use useradd, what is the difference between -d and -m? Because the definitions of both sound similar, which is responsible for creating a home directory.

Dan
  • 12,494
  • 7
  • 70
  • 94
shaunx333
  • 79
  • 5

1 Answers1

10

The 2 options are not really similar, but they can work together. If you look at the manpage of useradd you'll find the following:

       -d, --home-dir HOME_DIR
           The new user will be created using HOME_DIR as the value for the user's login
           directory. The default is to append the LOGIN name to BASE_DIR and use that as the
           login directory name. The directory HOME_DIR does not have to exist but will not be
           created if it is missing.

       -m, --create-home
           Create the user's home directory if it does not exist. The files and directories
           contained in the skeleton directory (which can be defined with the -k option) will be
           copied to the home directory.

           By default, if this option is not specified and CREATE_HOME is not enabled, no home
           directories are created.

The -d option is just to set where the home directory of the created user will be but it will not create it if it doesn't exist. While the -m option will create the home directory that is set by -d if it doesn't exist.

Dan
  • 12,494
  • 7
  • 70
  • 94
  • 1
    Unrelated to your question but, the `useradd` command is a low level command, it is usually [recommended](https://askubuntu.com/q/345974/) to use [`adduser`](https://manpages.ubuntu.com/manpages/hirsute/en/man8/adduser.8.html) instead which is a friendlier frontend for the `useradd` command. – Dan Jun 24 '21 at 10:33
  • Thanks for the tip, actually Im new to linux and currently learning about System administration. – shaunx333 Jun 24 '21 at 10:40
  • 2
    Not every Linux has `adduser`, e.g. Arch Linux and its derivatives. – rexkogitans Jun 24 '21 at 19:27