【Linux】Linux ~ ユーザに関わるコマンド ~

■ はじめに

Linux の ユーザおよびグループに関するコマンドを纏める

目次

【1】ユーザ
 1)ユーザ追加 - useradd
 2)ユーザ削除 - userdel
 3)ユーザ変更 - usermod
 4)ユーザ一覧表示 - cat /etc/passwd
 5)ログイン中ユーザ一覧表示 - who
 6)自分自身のユーザ名表示 - whoami
 7)ユーザ切替 - su
【2】グループ
 1)グループ追加 - groupadd
 2)グループ削除 - groupdel
 3)グループ管理コマンド - gpasswd 
【3】サンプル
 例1:Hello world for user
 例2:Hello world for group
 例3:グループおよびユーザ作成
 例4:管理者権限ユーザ作成

 【1】ユーザ

1)ユーザ追加 - useradd

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

Options

Option Explanation Memo
-d ディレクト 新規作成ユーザのホームディレクトリを指定 -d "/home/runner"
-g グループID 新規作成ユーザが所属するグループIDを指定 -g runner
-s シェル ログインシェルを指定。指定しない場合、システムのデフォルトシェル -s /bin/bash

サンプル

# ログインをしないユーザを作成
# (ログインをしないユーザは「/sbin/nologin」がわりあてられる)
sudo useradd -s /sbin/nologin tomcat

参考文献
http://webkaru.net/linux/useradd-command/

 2)ユーザ削除 - userdel

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

Options

Option Explanation Memo
-r ユーザのホームディレクトリも削除する場合

参考文献
http://webkaru.net/linux/userdel-command/

 3)ユーザ変更 - usermod

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

Options

Option Explanation
-a (--append) 「-G」オプションで指定したグループをセカンダリーグループに追加する
-G (--groups) GROUP セカンダリーグループを変更する(複数ある場合は「,」で区切って指定)。変更ではなく追加したい場合は「-a」オプションを同時に指定する
* 以下の関連記事で使用

Docker ~ docker を sudo なしで実行する ~
https://dk521123.hatenablog.com/entry/2023/11/22/000000

usermod -aG

# ユーザのホームディレクトリやグループ、パスワードなどを
# 変更するためのコマンド

https://atmarkit.itmedia.co.jp/ait/articles/1612/14/news022.html

参考文献
http://webkaru.net/linux/usermod-command/

 4)ユーザ一覧表示 - cat /etc/passwd

cat /etc/passwd

more /etc/passwd

 5)ログイン中ユーザ一覧表示 - who

who [オプション]

参考文献
http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/230998/

 6)自分自身のユーザ名表示 - whoami

# Who ami I?
whoami

参考文献
http://webkaru.net/linux/whoami-command/

7)ユーザ切替 - su

* 詳細は、以下の関連記事を参照

Linux ~ Root 権限 に関わるコマンド ~
https://dk521123.hatenablog.com/entry/2016/06/10/233349

# su = Switch User の略
su -l 【ユーザ】 -c "【コマンド】"

 【2】グループ

メイングループ

* ユーザが最初に所属するグループ
 => 通常、ユーザ名と同じ名前になる
 => ユーザは最低1つのグループに所属

サブグループ

* メイングループ以外にユーザが所属しているグループ
 => メイングループだけだと柔軟性が持たせるようにする

 1)グループ追加 - groupadd

groupadd グループ名

** 参考文献 http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230787/

 2)グループ削除 - groupdel

groupdel グループ名

参考文献
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230788/

3)グループ管理コマンド - gpasswd

gpasswd 

* ユーザが所属するグループ情報を管理するためのコマンド

https://atmarkit.itmedia.co.jp/ait/articles/1612/12/news016.html

* 以下の関連記事で使用

Docker ~ docker を sudo なしで実行する ~
https://dk521123.hatenablog.com/entry/2023/11/22/000000

# 現行ユーザをdockerグループに所属させる
sudo gpasswd -a $USER docker

Options

Option Explanation
-a (--add) USER ユーザをグループに所属させる
-d (--delete) USER ユーザをグループのメンバーから外す

【3】サンプル

例1:Hello world for user

# ユーザ追加
$ sudo useradd user1

# 確認
$ cat /etc/passwd
# user1:x:1005:1005::/home/user1:/bin/sh

# パスワード設定
$ sudo passwd user1
New password:
Retype new password:
passwd: password updated successfully

# ユーザ切替
su - user1

# user1から抜ける
exit

# ユーザ削除
sudo userdel user1
# -r : ホームディレクトリも削除したい場合
# sudo userdel -r user1

例2:Hello world for group

# ユーザ作成
sudo useradd user1

# 作成したユーザのグループ
$ groups user1
user1 : user1

# グループ作成
$ sudo groupadd develop

# グループの確認
$ cat /etc/group
develop:x:1003:

# 絞って確認する場合
# cat /etc/group | grep develop

# ユーザ user1 を グループ develop に追加する
$ sudo usermod -aG develop user1
# 確認1
$ groups user1
user1 : user1 develop
# 確認2
$ id user1
uid=1015(user1) gid=1016(user1) groups=1017(user1),1018(develop)

# ユーザ user1 を グループ develop から外す
$ sudo gpasswd -d user1 develop
Removing user user1 from group develop

# 確認
$ groups user1
user1 : user1

# グループ削除
$ sudo groupdel develop

# developがないことを確認
$ cat /etc/group | grep develop

例3:グループおよびユーザ作成

# Step1: グループ追加
groupadd runner

# Step2: ユーザ追加
useradd -d "/home/runner" runner -g runner -s /bin/bash

# Step3: sudo 権限付与
echo "%runner ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/runner

例4:管理者権限ユーザ作成

# ユーザ追加
sudo useradd demoadmin

# パスワード付与
sudo passwd demoadmin

# wheelグループに追加
# sudo usermod -aG wheel demoadmin

# ユーザがsudoコマンドを使えるように設定する
sudo EDITOR=vim visudo
~~~~
demoadmin   ALL=(ALL) ALL
~~~~

# ユーザ変更
su - demoadmin
# ユーザ確認
whoami
# 抜ける
exit

# ユーザ削除
sudo userdel demoadmin

 関連記事

Linux ~ 権限/所有 に関わるコマンド ~
https://dk521123.hatenablog.com/entry/2016/06/10/233349
Linuxパーミッション / アクセス権限 ~
https://dk521123.hatenablog.com/entry/2022/07/01/000000
Linux環境変数あれこれ ~
https://dk521123.hatenablog.com/entry/2015/07/16/103501
sudoコマンド
https://dk521123.hatenablog.com/entry/2016/10/22/165317
Docker ~ docker を sudo なしで実行する ~
https://dk521123.hatenablog.com/entry/2023/11/22/000000
シェル ~ Shebang
https://dk521123.hatenablog.com/entry/2024/02/02/000000
シェル ~ あれこれ編 ~
https://dk521123.hatenablog.com/entry/2018/03/03/210642
Linuxログイン時に独自のメッセージ表示を表示するには
https://dk521123.hatenablog.com/entry/2017/06/22/214918