【Linux】ユーザーの作成と削除の方法を解説(useradd,userdel)

Linux
スポンサーリンク

※本サイトにはプロモーション・広告が含まれています(はづきのブログより)
※この記事は初心者向けに平易に解説しています。正確な理解をしたい人は専門書・専門家をあたっていただければと思います。また、この記事の情報におけるCPの動作結果については自己責任でお願いします。

はづき
はづき

Linuxの一般ユーザーの作成と削除の方法について解説します!

みなさんのお役に立てば嬉しいです!

この記事のまとめ:

  • useraddコマンドでユーザーを作成する
  • passwdコマンドでユーザーにパスワードを付与する
  • 「cat /etc/passwd」で作成したユーザーを確認できる
  • userdelコマンドでユーザーを削除する

\お知らせ/
はづきのブログではLinuxに関する記事をたくさん書いています!
ブックマークしておくと便利です!

スポンサーリンク

ユーザーの作成(useradd)

useraddコマンドでユーザーを新規作成することができます。

新規作成したユーザにはpasswdコマンドで明示的にパスワードを作成することをおすすめします。また、オプション無指定でuseraddを使用するとホームディレクトリが作成されないため、-mオプションを付与すると良いと思います。

  • 既存ユーザーは「cat /etc/passwd」で確認する
  • useraddコマンドでユーザーを新規作成する
  • passwdコマンドでユーザーにパスワードを付与する

 

既存ユーザーの確認 

既存ユーザーの確認は以下のコマンドで行います。

#↓既存ユーザーの一覧コマンド
 cat /etc/passwd
#↓引数に指定したユーザー名の存在確認コマンド
 grep [調べたいユーザー名]  /etc/passwd

useraddコマンドでユーザーを新規作成する前に、既存のユーザーを確認しましょう!重複したユーザー名で作成することがないようにチェックしておきましょう。

「/etc/passwd」ファイルにユーザー情報が記載されているので、catコマンドでその内容を確認することで既存ユーザーがわかります。

また、既存ユーザーの確認は権限の都合でスーパーユーザー(root)から実行する必要があります。suコマンドでユーザー切り替えを行いましょう。

 

例1.既存ユーザーの確認

#1:suコマンドでスーパーユーザーに切り替える
hazukiblog@hazukiBlog:~$ su - #1
Password:
#2:「cat /etc/passwd」でユーザーの一覧を確認する
#2-1,2-2:「hazukiblog」と「user1」というユーザーが存在していることを確認
root@hazukiBlog:~ cat /etc/passwd #2
 root:x:0:0:root:/root:/bin/bash
 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
 bin:x:2:2:bin:/bin:/usr/sbin/nologin
 #~長いため省略~
 tcpdump:x:107:113::/nonexistent:/usr/sbin/nologin
 hazukiblog:x:1000:1000:,,,:/home/hazukiblog:/bin/bash #2-1
 user1:x:1001:1001::/home/user1:/bin/sh #2-2
#3:「grep [調べたいユーザー名]  /etc/passwd」コマンドで指定したユーザーの存在を確認
#3-1:存在する場合、指定したユーザーが含まれる行が出力される(2-1の行)
#3-2:存在しない場合、何も出力結果がでない
root@hazukiBlog:~ grep hazukiblog  /etc/passwd #3-1
hazukiblog:x:1000:1000:,,,:/home/hazukiblog:/bin/bash
root@hazukiBlog:~ grep user2  /etc/passwd #3-2
#4:exitコマンドでスーパーユーザーからログアウトする
root@hazukiBlog:~ exit #4
logout
hazukiblog@hazukiBlog:~$

 

ユーザーを新規作成

useraddコマンドで新規ユーザーを作成します。

 useradd [オプション] [ユーザー名]
 例:useradd -m sampleUser

useraddコマンドでは-mオプションを付けることをおすすめします。このコマンドを指定すると、ユーザー固有の作業ディレクトリであるホームディレクトリが一緒に作成されるようになります。

useraddコマンドもスーパーユーザーで実行する必要があるため、suコマンドでユーザー切り替えをしておきましょう。

以下の3点は、以降の項で紹介します。

  1. 作成したユーザーへのパスワード設定と切り替え方法
  2. useraddコマンドの他のオプション
  3. 新規ユーザーに設定されるデフォルト設定の変更方法

 

例2.ユーザーを新規作成

#1:suコマンドでスーパーユーザーに切り替える
hazukiblog@hazukiBlog:~$ su - #1
Password:
#2:「cat /etc/passwd」でユーザーの一覧を確認する
#2-1,2-2:「hazukiblog」と「user1」というユーザーが存在していることを確認
root@hazukiBlog:~ cat /etc/passwd #2
 root:x:0:0:root:/root:/bin/bash
 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
 #~長いため省略~
 hazukiblog:x:1000:1000:,,,:/home/hazukiblog:/bin/bash #2-1
 user1:x:1001:1001::/home/user1:/bin/sh #2-2
#3:useraddコマンドで「user2」という名前のユーザーを作成
root@hazukiBlog:~ useradd -m user2
#4:「cat /etc/passwd」でユーザーの一覧を確認する
#4-1:「user2」が増えていることを確認
root@hazukiBlog:~ cat /etc/passwd
 root:x:0:0:root:/root:/bin/bash
 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
 #~長いため省略~
 hazukiblog:x:1000:1000:,,,:/home/hazukiblog:/bin/bash
 user1:x:1001:1001::/home/user1:/bin/sh
 user2:x:1002:1002::/home/user2:/bin/sh #4-1
#5:exitコマンドでスーパーユーザーからログアウトする
root@hazukiBlog:~ exit #5
logout

 

ユーザーにパスワードを設定

passwdコマンドでユーザーにパスワードを設定できます。

 passwd [ユーザー名]

スーパーユーザーから一般ユーザーに切り替える場合、パスワードの入力は求められません。しかし、一般ユーザーから別の一般ユーザーへ切り替える場合、切り替え先ユーザーのパスワードの入力を求められます。

そのため、ユーザーを新規作成した段階で明示的にパスワードを設定しておくと良いと思います。

 

例3.新規作成した「user2」にパスワードを設定する

#1:suコマンドでスーパーユーザーに切り替える
hazukiblog@hazukiBlog:~$ su - #1
Password:
#2:passwdコマンドでuser2にパスワードを設定する
#2回入力してEnterを押下する
root@hazukiBlog:~ passwd user2
New password: #入力したパスワードの文字は表示されない
Retype new password: 
passwd: password updated successfully
#3:exitコマンドでスーパーユーザーからログアウトする
root@hazukiBlog:~ exit #3
logout

 

例4.新規作成したユーザーに切り替え、ホームディレクトリの存在を確認する

#1:whoamiコマンドで現在の一般ユーザー(hazukiblog)を確認
hazukiblog@hazukiBlog:~$ whoami #1
hazukiblog
#2:suコマンドで一般ユーザー(user2)に切り替える
#2-1:パスワードを入力してEnterを押す(例3で設定したパスワード)
hazukiblog@hazukiBlog:~$ su - user2 #2
Password: #2-1
#3:whoamiコマンドでユーザーが切り替わったことを確認
$ whoami #3
user2
#4:pwdコマンドでホームディレクトリが「user2」になっていることを確認
#→useraddコマンドで-mオプションを指定したためホームディレクトリが作成された
$ pwd #4
/home/user2

 

応用:useraddのオプション一覧

以下の表でuseraddコマンドのオプションを紹介します!

すべてのオプションとその説明はmanコマンドで確認することができます。気になる方は「man useradd」とターミナルで実行してみてください。

Noオプション説明 ([ユーザー名]=user1)
1-cコメント(テキスト文字列)を指定してユーザーを作成する
例)useradd -c "I am user1" user1
⇒ user1:x:1001:1001:I am user1:/home/user1:/bin/sh
2-eユーザーが無効になる日付けを指定してユーザーを作成する
例)useradd -e 2023-12-31 user1
3-g所属させたい既存グループを指定してユーザーを作成する
例)useradd -g group1 user1
4-mホームディレクトリを作成してユーザーを作成する
例)useradd -m user1
5-s新規作成ユーザーのログインシェルを指定
例)useradd -s /bin/bash user1
6-u指定したユーザーIDをを付与してユーザーを新規作成する
例)useradd -u 7777 user1
⇒user1:x:7777:7777::/home/user1:/bin/sh
7-Duseraddコマンドのデフォルト設定を表示
⇒デフォルト設定については以降の項で解説!
他、useraddのオプション

以下、必要に応じてGoogle翻訳などかけてみてください!

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

 

応用:useraddのデフォルト設定の変更

useraddコマンドでは、オプションで明示的に指定しない限りデフォルト設定が適用されてユーザーが作成されます!

例えば、「ログインシェル」や「アカウント無効化期限」はデフォルト設定が変数に定義されており、この値に沿ってユーザーが作成されます。

デフォルト設定の変数の値を確認するためには、「useradd -D」を実行します。

#「useradd -D」を実行してデフォルト変数を確認する
root@hazukiBlog:~# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh #例)ログインシェルがshになる
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
root@hazukiBlog:~#

それぞれの変数の意味と、デフォルト値変更のためのオプションは以下になります。

Noオプション説明 ※Linuxの説明に日本語翻訳をかけました
使い方)useradd -D [option] [value]
1-b・新しいユーザーのホーム ディレクトリのパス プレフィックス。 新しいアカウントを作成するときに -d オプションが使用されない場合は、ユーザー名が BASE_DIR の末尾に付加されて、新しいユーザーのホーム ディレクトリ名が形成されます。
・このオプションは、/etc/default/useradd の HOME 変数を設定します。
2-e・ユーザー アカウントが無効になる日付。
・このオプションは、/etc/default/useradd の EXPIRE 変数を設定します。
3-f・パスワードの有効期限が切れてからアカウントが無効になるまでの日数。
・このオプションは、/etc/default/useradd の INACTIVE 変数を設定します。
4-g・新規ユーザーの初期グループのグループ名または ID (-N/--no-user-group が使用されている場合、または /etc/login.defs で USERGROUPS_ENAB 変数が no に設定されている場合)。指定されたグループが存在する必要があり、数値のグループ ID には既存のエントリが必要です。
・このオプションは、/etc/default/useradd の GROUP 変数を設定します。
5-s・新規ユーザーのログイン シェルの名前。
・このオプションは、/etc/default/useradd の SHELL 変数を設定します。

 

例5.「useradd -D -s /bin/bash」でログインシェルを変更する

#スーパーユーザーに切り替えた状態です
#1:「useradd -D」を実行して切り替え前のデフォルト変数(SHELL)を確認する
root@hazukiBlog:~ useradd -D #1
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh #←ログインシェルがshになっている
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
#2:「useradd -D -s /bin/bash」を実行してログインシェルのデフォルト値を変更する
#3:「useradd -D」でログインシェルのデフォルト値が変更されたことを確認する
root@hazukiBlog:~ useradd -D -s /bin/bash #2
root@hazukiBlog:~ useradd -D #3
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash #←ログインシェルがbashになっている
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
#以下、この状態で新規ユーザーを作成するとログインシェルがbashになる
root@hazukiBlog:~ useradd user2
root@hazukiBlog:~ su user2
user2@hazukiBlog:/root$ echo $SHELL
/bin/bash
user2@hazukiBlog:/root$

 

ユーザーの削除(userdel)

userdelコマンドで既存ユーザーを削除します。

 userdel [オプション] [ユーザー名]
 例:userdel user1

userdelコマンドもスーパーユーザーに切り替えた状態で実行する必要があります。

「-r」オプションを付与すると指定したユーザーのホームディレクトリも一緒に削除できます。

 例:userdel -r user1

 

例6.userdelコマンドでユーザーを削除する

#1:スーパーユーザーに切り替えた状態で「cat /etc/passwd」を実行し既存ユーザーを確認
root@hazukiBlog:~ cat /etc/passwd #1
 root:x:0:0:root:/root:/bin/bash
 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
 #~長いため省略~
 hazukiblog:x:1000:1000:,,,:/home/hazukiblog:/bin/bash #←一般ユーザー(hazukiblog)が存在する
 user1:x:1001:1001::/home/user1:/bin/sh #←一般ユーザー(user1)が存在する
#2:userdelコマンドで一般ユーザー(user1)を削除する
root@hazukiBlog:~ userdel user1
#3:再度「cat /etc/passwd」を実行し、user1が削除されたことを確認
root@hazukiBlog:~ cat /etc/passwd
 root:x:0:0:root:/root:/bin/bash
 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
 #~長いため省略~
 hazukiblog:x:1000:1000:,,,:/home/hazukiblog:/bin/bash #←user1がいない
root@hazukiBlog:~

 

おしまい

コメント

タイトルとURLをコピーしました