ubuntuでユーザを作成した際に、useradd
を用いて作成したユーザでログインしたところホームディレクトリがないと怒られた
# useradd new_user
# su - new_user
No directory, logging in with HOME=/
どうもデフォルトではディレクトリを作成してくれないようである。man useradd
をみるに、-m
オプションを明示的に指定するか、CREATE_HOME=yes
でなければ、ホームディレクトリは作成されないようだ
-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.
そして、Debian系はデフォルトでは、CREATE_HOMEに関する設定がない
# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
また、useradd
のDescriptionには次のように書いてある
DESCRIPTION
useradd is a low level utility for adding users. On Debian, administrators should usually use
adduser(8) instead.
調べてみると、adduser
という似たような名前のコマンドがあり、こちらでユーザを作成するのが、Debianユーザの常識だそうである。たしかに、こちらでユーザを作成すると、ちゃんとホームディレクトリを作ってくれた。知らなかった、、
man adduser
には次のように書いてある
DESCRIPTION
adduser and addgroup add users and groups to the system according to command line options and
configuration information in /etc/adduser.conf. They are friendlier front ends to the low
level tools like useradd, groupadd and usermod programs, by default choosing Debian policy con‐
formant UID and GID values, creating a home directory with skeletal configuration, running a
custom script, and other features. adduser and addgroup can be run in one of five modes:
みてみると、このコマンドはperlスクリプトであり、内部でuseradd
を呼び出すフロントエンドとなっている。
# which adduser
/usr/sbin/adduser
# file /usr/sbin/adduser
/usr/sbin/adduser: a /usr/bin/perl script, ASCII text executable
以上、ユーザを作成するときはadduser
を使いましょう!