LoginSignup
3

More than 3 years have passed since last update.

posted at

updated at

Linuxのユーザー追加、useraddコマンドの使い方(パスワード指定)

Linux(ここではCenOS7)でuseraddコマンドを使用してユーザーを追加する方法を紹介します。
Linuxコマンドでユーザーを追加する方法として、useraddコマンドとadduserコマンドがありますが、CentOS7ではadduseruseraddのシンボリックリンクとなっているため同じコマンドとなります。

コマンド参照結果
[root@CENTOS7 ~]# ls -l /usr/sbin/useradd
-rwxr-xr-x. 1 root root 137616  8月  9  2019 /usr/sbin/useradd
[root@CENTOS7 ~]# ls -l /usr/sbin/adduser
lrwxrwxrwx. 1 root root 7 10月 12 17:04 /usr/sbin/adduser -> useradd
[root@CENTOS7 ~]#

環境

  • OS:CentOS Linux release 7.7.1908 (Core)
CenOS7バージョン確認結果
[root@CENTOS7 ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
[root@CENTOS7 ~]#

1. useraddコマンドでユーザーを追加(オプション無し)

ユーザーを追加するには以下のコマンドを実行します。

useradd [ユーザー名]

実行結果
[root@CENTOS7 ~]# useradd yasushi
[root@CENTOS7 ~]#

以下のコマンドでパスワードを設定します。
passwd [ユーザー名]

実行結果
[[root@CENTOS7 ~]# passwd yasushi
ユーザー yasushi のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
[root@CENTOS7 ~]#

オプション無しの場合、デフォルトでユーザーが追加されます。
デフォルトの値は以下のコマンドで確認できます。
useradd -D

実行結果
[root@CENTOS7 ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@CENTOS7 ~]#

各項目の意味は以下の通りです。

項目 内容
GROUP 指定されていない場合の所属グループ
HOME ホームディレクトリの作成場所
INACTIVE パスワードの期限が切れてから、アカウントが無効になるまでの期間
※(-1)は期限無し
EXPIRE パスワードの有効期限
SHELL ログインシェル
SKEL skeletonファイルのある場所
CREATE_MAIL_SPOOL メールスプールを作成するかの設定

2. ユーザー情報の確認

2.1. ユーザー一覧の確認

ユーザー一覧を確認するには以下のコマンドで/etc/passwdファイルを参照します。
cat /etc/passwd

実行結果
[root@CENTOS7 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
~~~~~
(省略)
~~~~~
yasushi:x:1002:1002::/home/yasushi:/bin/bash
[root@CENTOS7 ~]#

/etc/passwd:区切りで以下の情報を保持しています。

項目 作成された情報
1 ユーザー名 yasushi
2 ダミーパスワード x
3 ユーザーID 1002
4 グループID 1002
5 コメント (空)
6 ホームディレクトリ /home/yasushi
7 ログインシェル /bin/bash

2.2. パスワード一覧の確認

/etc/shadowファイルに暗号化されたパスワードの一覧が格納されています。このファイルrootのみ参照可能です。
cat /etc/shadow

実行結果
[root@CENTOS7 ~]# cat /etc/shadow
root:$6$n.LBF.Pi$pGDNeMrJNjOgXlcjQdguA/tZTryDlrDR2LCYgCrlT3KDpAu55nGmoh.4.OHlVL0zDw/YQlpV4HM6zzKCd2hQH.:18307:0:99999:7:::
~~~~~
(省略)
~~~~~
yasushi:$6$rwTX74Ir$YhhyryrTsbKdlAIWMKJqRQoQsK1TgelnQmHSpGmCDoXiGWQeQLTDtD73FEGur6tw5wZ50SbBo2QNVKEQUDcpV0:18307:0:99999:7:::
[root@CENTOS7 ~]#

/etc/shadow:区切りで以下の情報を保持しています。

項目 内容 作成された情報
1 ユーザー名 ユーザ名 yasushi
2 パスワード 暗号化されたパスワード (省略)
3 最終パスワード変更日 最後にパスワードが変更された年月日(1970年1月1日からの経過日数で表示) 18307
4 パスワード変更可能日数 パスワードが再度変更可能になるまでの日数 0
5 パスワード有効期限 パスワードの変更が必要になるまでの日数 99999
6 パスワード変更期間警告通知日 パスワード有効期限切の警告を何日前から通知するかの日数 7
7 アカウント無効日数 有効期限経過後にパスワードを変更しなかった場合にアカウントが使用不可になるまでの日数 (空)
8 アカウント有効期限 アカウントが使用不可になるまでの日数(1970年1月1日からの経過日数で表示) (空)
9 予約フィールド 未使用 (空)

2.3. グループ一覧の確認

グループ一覧を確認するには以下のコマンドで/etc/groupファイルを参照します。
cat /etc/group

実行結果
[root@CENTOS7 ~]# cat /etc/group
root:x:0:
~~~~~
(省略)
~~~~~
yasushi:x:1002:
[root@CENTOS7 ~]#

/etc/group:区切りで以下の情報を保持しています。

項目 作成された情報
1 グループ名 yasushi
2 ダミーパスワード x
3 グループID 1002
4 サブグループとして所属しているユーザー
(複数の場合はカンマ区切り)
(空白)

3. useraddコマンドでユーザーを追加(オプション有り)

オプション有りでユーザーを追加するには以下のコマンドを実行します。

useradd [オプション] [ユーザー名]

主要なオプションは以下となります。

オプション 内容
-c comment コメントを設定
-d home_dir ホームディレクトリを指定
-e expire_date ユーザアカウントが使用不能になる日付を[YYYY-MM-DD]の書式で指定
-f inactive_days パスワードの使用期限が切れてからアカウントが永久に使用不能になるまでの日数を指定
0:パスワードの期限が切れると同時にこのアカウントは使用不能となる
-1:この機能が無効となる
-g initial_group ユーザの属する主グループのグループ名またはグループIDを指定
-G group,[...] ユーザの属する補助グループのリストをカンマ区切りで指定
-m [-k skeleton_dir] ホームディレクトリが存在しない場合にはホームディレクトリを作成
-k オプションを同時に指定すると skeleton_dir 以下のファイルが、指定しないと /etc/skel 以下のファイルがホームディレクトリにコピーされる
-o 重複した UID でユーザを作成できるようにする
-p passwd cryptでハッシュ化されたパスワードを指定
-s shell ユーザのログインシェルを指定
-u uid UID を指定

以下のコマンドで、ホームディレクトリを「/data/test」、ログインシェルを「/bin/sh」でyasushi02ユーザーを作成する。

useradd -d /data/test -s /bin/sh yasushi02

実行結果
[root@CENTOS7 ~]# useradd -d /data/test -s /bin/sh yasushi02
[root@CENTOS7 ~]#

以下のコマンドでパスワードを設定します。
passwd [ユーザー名]

実行結果
[root@CENTOS7 ~]# passwd yasushi02
ユーザー yasushi02 のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
[root@CENTOS7 ~]#

ユーザー一覧(/etc/passwd)を確認

/etc/passwd
root:x:0:0:root:/root:/bin/bash
~~~~~
(省略)
~~~~~
yasushi:x:1002:1002::/home/yasushi:/bin/bash
yasushi02:x:1003:1003::/data/test:/bin/sh

パスワード一覧(/etc/shadow)を確認

/etc/shadow
root:$6$n.LBF.Pi$pGDNeMrJNjOgXlcjQdguA/tZTryDlrDR2LCYgCrlT3KDpAu55nGmoh.4.OHlVL0zDw/YQlpV4HM6zzKCd2hQH.:18307:0:99999:7:::
~~~~~
(省略)
~~~~~
yasushi:$6$pJe9DpYg$6i9N217uNBwwIAGjuzfavGWffUyZVWMh0PpgaUEm5Ti3PN8T/KdUvEG4fibaBClUq7AzDphHfAqGuVgnEHfWf.:18307:0:99999:7:::
yasushi02:$6$lXu7BN1C$OcFWVxt/weU4Sh2EUNC4YO5s/e5kqeNQ5EEX0PtwLOf1t/Cm86AGmLdbbJr51Qz0xFWWKwZYmHl0.WPJcyqLU1:18307:0:99999:7:::

グループ一覧(``/etc/group')を確認

/etc/group
root:x:0:
~~~~~
(省略)
~~~~~
yasushi:x:1002:
yasushi02:x:1003:

ホームディレクトリを確認

[root@CENTOS7 ~]# cd /data
[root@CENTOS7 data]# ls
test
[root@CENTOS7 data]# cd test
[root@CENTOS7 test]# ls -a
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc
[root@CENTOS7 test]#

4. パスワードを指定してユーザーを追加

パスワードを指定する場合、cryptでハッシュ化されたパスワードを指定する必要があります。

ユーザー「yasushi03」、パスワード「password03」でユーザーを追加する場合のコマンドは以下となります。
ここではsalt(パスワードを暗号化する際に追加する文字列のこと)に「salt03」を設定しています。saltは任意の文字列を使用可能です。

useradd -p $(perl -e 'print crypt("password03", "\$6\$salt03")') yasushi03

実行結果
[root@CENTOS7 ~]# useradd -p $(perl -e 'print crypt("password03", "\$6\$salt03")') yasushi03
[root@CENTOS7 ~]#

上記コマンドでは、cryptでハッシュ化されたパスワードとしてperlを使用しています。

perl -e 'print crypt("[パスワード]", "[ハッシュ化方式記号][salt]");'

ハッシュ化方式の一覧は以下となります。

ハッシュ化方式記号 ハッシュ化方式
\$1\$ MD5
\$2\$ Blowfish
\$5\$ SHA-256
\$6\$ SHA-512

perl -e 'print crypt("password03", "\$6\$salt03")'

実行結果
[root@CENTOS7 ~]# perl -e 'print crypt("password03", "\$6\$salt03")'
$6$salt03$/DhkQIuDsIIuvys.ISNOUB.OlWKxzgovMIBdCX2vlwCzEdNuIxMakytppnAGsKwT0hn12BW9XbCBd3KKXBh0/0[root@CENTOS7 ~]#

以上

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
3