今回はLinux環境におけるユーザとグループの作成、変更、削除の方法を実行例あわせて紹介していきます。
ユーザを作成する際に、間違えて別の名前にしてしまったり、また一部のユーザ情報を変えたい時などございますでしょうか?
ユーザ作成はuseraddやuserdelなどあれば作成と削除はできますが、usermodを使えればより効率的に操作できたりなど、使いこなすことにより時間短縮に使うことができます。
今回の記事では下記のことがわかります。
この記事でわかる事
・ユーザやグループの作成、削除、変更コマンドのの使い方
・ユーザやグループに関連するファイル
・ユーザを作成した際のパスワードを設定する方法
これらを紹介していきます。
ユーザとは
ユーザとはそのシステムを利用するもので、ユーザアカウントとはその利用するものに与えられるアカウントとなります。
Linuxでは一般ユーザ、管理者ユーザ、システムユーザなど区別されています。それらの情報は/etc/passwdや/etc/shadowなどに記載があります。それぞれ説明していきます。
一般ユーザ
利用するユーザに付与されるアカウントで管理者アカウントとは違い、権限が限定的で、機能が制限されます。
基本的にサービスを利用するアカウントで閲覧などすることができます。
管理者ユーザ
一般ユーザとは違い、システムの閲覧や利用だけでなく変更や削除などすることもできます。
使い方によってはシステムを機能停止にしたりできるので、使う人はそのシステムを熟知している管理者である必要があります。
システムユーザ
特定のサービスのみで使われるアカウントです。特定のサービスまたはそのサービスとの連携で使われます。
ユーザやグループの設定ファイル
Linuxシステムのユーザ情報は設定ファイルで管理されており、ファイルやコマンドを使って確認します。
ユーザ情報の記載がある下記ファイルの概要と役割について紹介していきます。
/etc/passwd:ユーザ情報を管理
ユーザに関する情報を保存・管理しているファイルになります。パスワードの設定可否、ユーザID、グループID、ホームディレクトリ、使用しているシェルが設定されています。
ユーザIDは1000から若い順から振られていきます。
/etc/passwdファイルの内容
test1:x:1001:1001::/home/test1:/bin/sh
test3:x:1003:1003::/home/test3:/bin/bash
test4:x:1004:1004::/home/test4:/bin/sh
root@miitsu-computer:/home/mitsu/デスクトップ#
さらにそれぞれのフィールドはコロンで区切られております。「::」は値がない状態です。
各フィールドの意味は下記となります。
フィールド | 内容 |
第1フィールド | ユーザ名(ログイン名) hibikisan |
第2フィールド | (暗号化パスワード)現在は’x’が記載 |
第3フィールド | ユーザーID |
第4フィールド | グループID |
第5フィールド | コメント |
第6フィールド | ホームディレクトリのパス /home/hibikisan |
第7フィールド | ログインシェル名 /bin/bash |
/etc/group:グループ情報を管理
グループ情報を保存・管理しているファイルになります。グループ名、グループIDが記載してあります。
フィールド | 内容 |
第一フィールド | グループ名 |
第二フィールド | パスワード有無 |
第三フィールド | グループID |
第四フィールド | メンバーリスト |
/etc/shadow:ユーザのパスワードに関する情報を管理
ユーザパスワード情報関連の一覧が載っています。
ユーザのパスワードの有無、パスワードの期限情報などの情報が保存されています。このファイルはアクセス権限が厳しく設定されています。
/etc/gshadow:グループに関する情報を管理
UNIX系のOSで使われる、グループのパスワードやその他の情報が記載されているファイルです。
※バックアップファイルに/etc/gshadow-があります。
このファイルも特に意識する必要がはなく「groupadd」や「groupdel」「groupmod」といったグループ情報を編集するコマンドによってグループ情報を変更する際にこのファイルにあるグループ情報も書きかわります。
一時的に利用するグループを変更
newgrpコマンドを利用することにより利用するグループを一時的に変更することができます。
newgrpを利用した一時的に利用するグループを変更
root@miitsu-computer:/home/mitsu/デスクトップ# newgrp root@miitsu-computer:/home/mitsu/デスクトップ# cd test
root@miitsu-computer:/home/mitsu/デスクトップ/test# touch test1
root@miitsu-computer:/home/mitsu/デスクトップ/test# ls -l
合計 0
-rw-r--r-- 1 root meran 0 3月 13 21:00 test1
root@miitsu-computer:/home/mitsu/デスクトップ/test#
/etc/skel:ホームディレクトリを作成する際の元ディレクトリ
useraddでユーザ作成する際に作成されるユーザのホームディレクトリ内にコピーしておきたいファイルをここに保存しておきます。
新たにユーザを作成すると、/etc/skel内のファイルがコピーされます。
デフォルトでは.bash_logoutなどのファイルが存在します。
/etc/skel内のファイル
root@miitsu-computer:/home/mitsu/デスクトップ# cd /etc/skel
root@miitsu-computer:/etc/skel# ls
root@miitsu-computer:/etc/skel# ls -al
合計 40
drwxr-xr-x 3 root root 4096 2月 19 15:26 .
drwxr-xr-x 137 root root 12288 3月 15 13:24 ..
-rw-r--r-- 1 root root 220 2月 25 2020 .bash_logout
-rw-r--r-- 1 root root 3771 2月 25 2020 .bashrc
drwxr-xr-x 4 root root 4096 10月 23 02:36 .config
-rw-r--r-- 1 root root 5 3月 16 2020 .hidden
-rw-r--r-- 1 root root 87 2月 18 2021 .inputrc
-rw-r--r-- 1 root root 807 2月 25 2020 .profile
root@miitsu-computer:/etc/skel#
コマンド
ここでは一般ユーザの作成、削除、変更を行うコマンドたちやパスワードを設定するコマンドを紹介します。
ユーザを作成:useradd
Linuxでユーザ作成するには「useradd」コマンドを利用します。
※同様のコマンドにadduserというものがあります。
useraddでユーザを作成すると、/etc/passwdと/etc/shadowにエントリされます。またユーザは1つ以上のグループに所属している必要があるので、/etc/groupに書き込まれます。
useraddを実行するとユーザ情報や管理ユーザを管理している/etc/passwdなどにユーザ情報が記述されます。
引数にユーザ名とパスワードを指定することでpasswdコマンドなくてもパスワードを指定できます。
ユーザ作成
root@miitsu-computer:/home# useradd test1
書式
useradd [オプション] ユーザ名
オプション
オプション | 説明 | 備考 |
-m | ユーザのホームディレクトリが存在しない場合に自動的に作成します。 | |
-c | コメントを指定します。 | /etc/passwdのコメントフィールドに指定したコメントが追加されます。 |
-d directory | ユーザのホームディレクトリを指定した箇所に保存します。 | ユーザを作成する際に保存するホームディレクトリの場所を指定します。 |
-e | ユーザのアカウントが無効になる日を指定します。 | |
-g | ユーザのグループIDを指定した値ととします | /etc/groupでユーザの所属するグループで確認できます |
-s | ユーザのログインシェルを指定します。 | |
-u | ユーザのuidを指定します。 | |
-D | デフォルト値の表示あるいは設定 | |
-f 日数 | パスワードが失効してからアカウントがつかえなくなるまでの日数 |
/etc/default/useradd
useraddが実行する際のデフォルト値を設定できます。今後useraddを実行する際にはこのファイルに記載されているデフォルト値が適応されます。
例えばユーザを新規で作成する際にはシェルの値をbashにしたい場合、シェルの項目でbashを利用するように指定します。
他にuseraddで作成されるデフォルト値はuseradd -Dで確認できます。
ユーザを削除:userdel
ユーザを削除するには「userdel」コマンドを使用します。userdelはユーザを削除しますが、削除するユーザが使用していたホームディレクトリなどは削除してくれません。ホームディレクトリもまとめて削除したい場合は-rを使用します。
書式
userdel [オプション]ユーザ名
オプション
オプション | 説明 |
-r | 削除するユーザのホームディレクトリも削除します。 |
ユーザ情報を・設定情報を変更する:usermod
ユーザ情報を変更するには「usermod」コマンドを使用します。
作成後に作り直す必要なくユーザ情報を変更するのに利用します。
書式
usermod [オプション]ユーザ名
オプション
オプション | 意味 | |
-L | ユーザー名 指定したユーザーをロックする | |
-U | ユーザー名 指定したユーザーのロックを解除する | |
-e 期限切れ日 | アカウントの期限切れの日を設定する | /etc/shadow で確認できます |
-f 無効化する日数 | パスワードを期限切れの後に無効化する日数を設定する | /etc/shadow で確認できます |
-g group | 主グループを変更します。 | |
-l | ログイン名を変更します | 変更後、/etc/passwdなどユーザ情報を管理しているファイルも書き変わります。 |
-s | ユーザのシェルを指定したシェルに設定します。 | |
-u | このユーザのUIDを変更する |
パスワードを変更する:passwd
ユーザのログインパスワードを変更するには、基本的に「passwd」コマンドを使用します。「useradd」コマンドはユーザ作成と同時にパスワードを設定できますが、rootしか扱えません。自身のユーザのパスワードであればpasswdコマンドを使用できますので、こちらを使います。他人のパスワードを変更するにはpasswdコマンドの引数に変更したいユーザを使用します。
一般ユーザの場合(自身のパスワードのみ変更可能)
mitsu@miitsu-computer:~/デスクトップ$ passwd
passwdコマンドを実行した時の表示形式は、使用しているディストリビューションによって異なりますが、入力する値は基本的に同じです。
パスワードを変更するには、現在のパスワードと新しいパスワオード入れたあとで、最後にご入力を防ぐためにもう一度新しいパスワードを入力します。
これで、次のログインするときには、新しいパスワードが有効になります。
もし一般ユーザがパスワードを忘れてしまった場合には、スーパーユーザがユーザのパスワードを新たに設定できます。
rootユーザの場合
root@miitsu-computer:/home# passwd test1
新しいパスワード:
新しいパスワードを再入力してください:
passwd: パスワードは正しく更新されました
root@miitsu-computer:/home#
※他人のパスワードを変更できるのはスーパユーザ(root)だけです。
書式
passwd [ユーザ名]
オプション
主に利用するオプションです。
オプション | 説明 |
-a | グループパスワードの変更 |
-d | 指定アカウントのパスワードを削除する |
-e | 指定アカウントのパスワードを期限切れにする |
-l | 指定アカウントをロックする |
-u | 指定アカウントのロックを解除する |
実行例
ユーザを作成:useradd
それではuseraddコマンドを用いてユーザtest1を作成してみます。
useraddコマンドでは、新規ユーザに関する情報をすべてオプションを引数で指定します。指定しなかった情報に関してはデフォルトの値が採用されます。
指定できる項目は、ユーザID、グループID、ログインシェル、ホームディレクトリなどがあります。useraddはスーパユーザでないと実行できません。
ユーザ作成
root@miitsu-computer:/home# useradd test2
root@miitsu-computer:/home#
-mオプションをつけてuseraddコマンドを実行すると、新規ユーザのホームディレクトリが存在しない場合には自動的に作成してくれます。またパスワードは、useraddコマンドの引数で指定することもできますが、ここではuseraddコマンドを実行したあとにpasswdコマンドでパスワードを設定します。
useraddコマンドは、特定のオプションをつけないとパスワードが設定されないので注意してください。
ユーザを間違った名前で作成したり、あるユーザが不要になった場合など、ユーザを削除したいことがあります。その場合はuserdelコマンドを使います。
試しに、先ほど作成したユーザtest2を削除してみましょう。adduserコマンドと同様、userdelコマンドもスーパユーザでないと実行できません。
ユーザ削除
root@miitsu-computer:/home# userdel test2
root@miitsu-computer:/home#
useraddの作成する際のデフォルト値
/etc/default/useraddで確認できます。また
「useradd -D」でもデフォルト値を確認できます。
useraddのデフォルト値
root@miitsu-computer:/home/mitsu/デスクトップ# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
root@miitsu-computer:/home/mitsu/デスクトップ#
そのためデフォルト値を変えれば次回からユーザ作成する際に指定した値で設定できます。
ユーザ削除:userdel
ユーザを削除するには「userdel」コマンドを使用します。
ユーザ削除
root@miitsu-computer:/home# userdel test2
root@miitsu-computer:/home# su test2
su: ユーザ test2 が存在していません
root@miitsu-computer:/home#
/etc/passwdファイルを閲覧することでも、削除済みか確認できます。
ユーザ削除後の/etc/passwd
test1:x:1001:1001::/home/test1:/bin/sh
test3:x:1003:1003::/home/test3:/bin/bash
test4:x:1004:1004::/home/test4:/bin/sh
root@miitsu-computer:/home#
これでユーザtest2が削除されました。
また削除することにより/etc/passwdから対象ユーザは消え、そのユーザは消えログインできなくなります。
ですが、ユーザ情報の一部であるホームディレクトリは存在したままです。
ホームディレクトリも削除したいなら-rオプションを利用します。
ユーザ情報変更:usermod
ユーザ名の変更
ユーザを消さずユーザ名を変えたい場合は「usermod -l」コマンドを使用します。
今回の例ではtest2をtestafter2というユーザ名に変更しています。
ユーザ名の変更
root@mitsublog:/home/mitsublog# useradd test2
root@mitsublog:/home/mitsublog# usermod -l testafter2 test2
root@mitsublog:/home/mitsublog#
ホームディレクトリの変更
ホームディレクトリの所在を変更するには「usermod -d」コマンドを実行します。
ホームディレクトリの場所を変更
root@miitsu-computer:/home# usermod -d /home/change test3
ログインシェルの変更
ログインシェルを変更できます。例えばデフォルトで起動するシェルが/bin/shであればこれを/bin/bashなどに変更することができます。
ログインシェルの変更
root@miitsu-computer:/home# usermod -s /bin/bash test3
root@miitsu-computer:/home#
passwdコマンドを利用したパスワードの変更
自信のユーザのパスワードを変更します。rootユーザであれば指定したユーザのパスワードを変更できます。下記例ではmitsuユーザのパスワードを変更します。
ログインしている自身のユーザのパスワード変更
mitsu@miitsu-computer:~/デスクトップ$ passwd
ユーザを指定してパスワードを変更したい場合、rootユーザのみ可能です。通常は自身のログインパスワードのみ変更可能
※パスワードの要件を満たしていない場合はセキュリティ上の警告がでます。
パスワードを忘れたり、パスワード入力ミスをしてアカウントロックされたら管理者に依頼し、rootユーザを使用して、指定したユーザのパスワードを再設定します。
mitsuユーザのパスワード再設定
root@miitsu-computer:/home/mitsu/デスクトップ# passwd mitsu
新しいパスワード:
※ポイント
パスワードに設定する文字は6文字以上で、かつ大文字、小文字、数字、記号を組み合わせで、辞書に登録のない文字れ鉄を使用することが推奨されます。
(ディストリビューションによって異なる)守らない場合、システムは警告を発します。
パスワードの有効期限を設定する(rootユーザのみ)
パスワードの有効期限は「passwd -x 日数 ユーザ名」で設定することができます。(rootユーザのみ実行可能)
また-wオプションを指定すると、パスワードを変更するための「猶予期間」を続けることができます。
パスワードの有効期限の変更
root@miitsu-computer:/home/mitsu/デスクトップ#passwd -x 8 -w 7 mitsu-pc
グループの追加;groupadd
グループを追加するには「groupadd」コマンドを利用します。これでtestgroup1が追加されます。追加されたかどうかは/etc/groupで確認できます。
testgroup1追加
root@miitsu-computer:/home# groupadd testgroup1
グループ削除;groupdel
グループを削除するにはgroupdel コマンドを使用します。
これでtestgroup3を削除できます。
testgroup3削除
root@miitsu-computer:/home# groupdel testgroup3
グループ変更:groupmod
グループIDや名前の変更はgroupmodコマンドを使用します。
グループIDの変更
作成済みの既存のグループIDを変えたい場合は-gオプションを利用します。
グループID変更
root@mitsublog:/home/mitsublog# groupmod -g 2222 group1
グループ名の変更
グループ名を変更したい場合は-nオプションを利用します。
グループ名変更
root@mitsublog:/home/mitsublog# groupmod -n test1 group1
まとめ
本記事は以上となります。まとめに入ります。
まとめ
ユーザやグループを作成、変更、削除を使いこなすことにより、より効率的にユーザやグループを管理できます。
ユーザやグループなどの調査の際に見るべきファイルが決まっており、それぞれグループ化して覚えると覚えやすい。
passwdコマンドによりパスワードの詳細を設定できます。
ユーザやグループを作成するとどのファイルに追記されるのか、また各ユーザグループごとのパスワードの期限など細かく決まっているので、ぜひ自身の環境を除いてみてください。