Linuxの入門として、ユーザーの新規作成、変更、削除をする方法を解説します。
Linuxの環境を構築したいという方は、Virtual Boxを使った方法を以下の記事で紹介していますので、是非参考にしてください。
1.Linuxを利用するユーザーは、ユーザーアカウントで管理される
普段、私たちが利用しているパソコンには、WindowsなどのPC用のOSが搭載されています。
個人用PCでは、基本的には一人1台として割り当てられていることがほとんどです。
一方、サーバー用のOSとして利用することの多いLinuxでは、複数人で共有して同時にシステムを利用することができる、マルチユーザーシステムとなっています。
Linuxを利用するユーザーは、ユーザーアカウントとして管理されており、ユーザー毎に固有のユーザー番号(UID)が振られています。
また、ユーザーは1以上のグループに必ず所属する必要があります。グループについては以下の記事で解説していますので、そちらを参考にしてください。
2.ユーザーの種類は全部で3種類
Linuxのユーザーは、以下の3種類に分けられています。
・管理者ユーザー(root)
・システムユーザー
・一般ユーザー
① 管理者ユーザー(root)
システム全体に対して全ての権限を持っている、管理者権限ユーザーです。
Windowsの場合のadministrator権限に相当します。ユーザー番号(UID)は0で固定されており、ログインした際のプロンプトは「#」で表示されます。
② システムユーザー
システム管理用のユーザーで、通常のログイン・ログアウトには使用しません。
システムの内部でプログラムなどを実行するために使われる特別なユーザーのことを指します。
③ 一般ユーザー
システムを通常利用するためのユーザーです。
個別のユーザー名とパスワードを使ってログイン・ログアウトすることで利用できます。
CentOS7では、一般ユーザーのユーザー番号(UID)は1000以降の連番で付与され、ログインした際のプロンプトは「$」で表示されます。
3.ユーザーの新規作成方法
ユーザーの作成は、rootユーザーで行います。
rootユーザーは、全権限を持つユーザーのため、実行する処理によっては、システム全体に影響を及ぼす可能性があります。
したがって、通常の業務は一般ユーザーで行うことになりますが、ユーザーを作成するためには、rootユーザーでログインをしておく必要があります。
一度ログイン中の一般ユーザーからログアウトして、再びrootとしてログインし直す方法のほか、一般ユーザーとしてログインしたまま、suコマンドを使ってrootユーザーにログインする方法もあります。
3.1 rootユーザーでログイン
一般ユーザーとしてログインした状態から、rootユーザーに切り替える方法として、suコマンドがあります。
「-(ハイフン)」の有無によって処理環境が変わりますので、注意が必要です。
コマンド | 概要 |
---|---|
su [-] [ユーザー名] | ログインユーザーを[ユーザー名]に切り替える ユーザー名を省略した場合はrootユーザーとして切り替える |
・「-」ありの場合
rootユーザーとして直接ログインした場合と同様の処理環境が提供される
・「-」なしの場合
切り替え前のユーザーの環境を維持したまま、ユーザーだけをrootユーザーに切り替える
(例)suコマンド「-」なし、「-」ありで、それぞれユーザー切り替えをした場合
※pwdコマンドを実行してカレントディレクトリを表示しています。
「-」なしの場合はカレントディレクトリが同様(/home/proengineer)で、ログインユーザのみがrootに変更(プロンプトが$から#に変更)されています。
「-」ありの場合はカレントディレクトリが/home/proengineerから、/rootに変わっており、ユーザーの作業環境自体が変更されていることがわかります。
3.2 ユーザーの新規作成 useraddコマンド
rootユーザとしてログインしたら、ユーザーを作成していきます。
ユーザーの作成は、useraddコマンドを使用します。
コマンド | 概要 |
---|---|
useradd [オプション][ユーザー名] | [ユーザー名]のユーザーを作成する |
useraddのオプション | 概要 |
---|---|
-c コメント | コメントの指定 |
-d ホームディレクトリのパス | ホームディレクトリを指定 |
-e 失効日 | アカウントの失効日を指定 |
-f 日数 | アカウント失効後にアカウントが使えなくなるまでの日数 日数はyyyy-mm-ddで指定する |
-g グループID | 主グループを指定(1つのみ) |
-m | ユーザーのホームディレクトリを作成する |
-G グループID | サブグループを指定 カンマ区切りで複数指定することが可能 |
-p パスワード | パスワードをcrypt関数で暗号化されたものと見なして設定する |
-s シェルのパス | ログインシェルの指定 |
-u ユーザーID | ユーザー固有に振られるユーザー番号(uid)を指定 |
(例)「testuser1」というユーザーを作成
※idコマンドを実行し、1001番のユーザーIDでユーザーが作成されたことを確認しています。
3.3 パスワードの設定 passwdコマンド
useraddだけでは、パスワードが設定されていませんので、ユーザーアカウントとしてログインできない状態です。
passwdコマンドを使って、パスワードを設定します。
コマンド | 概要 |
---|---|
passwd [オプション][ユーザー名] | [ユーザー名]のパスワードを設定する |
passwdのオプション | 概要 |
---|---|
-d | パスワードを無効にする |
-i 日数 | パスワードの有効期限が切れてから使用不可になるまでの日数を設定する |
-l | ユーザーのアカウントをロックする |
-u | ユーザーのアカウントロックを解除する |
-w 日数 | パスワードの有効期限が切れる何日前から警告を表示するかを設定する |
-x 日数 | パスワードの有効日数を設定する |
useraddコマンドのpオプションを使って、ユーザー作成時にパスワードも合わせて設定することも可能ですが、pオプションの場合、crypt関数で暗号化した値である必要があるので、設定が困難です。
パスワードは、passwdコマンドを使って設定するのが一般的です。
パスワードは、rootユーザで変更します。
他者からは推測されにくい6文字以上を設定してください。パスワードは2回入力しますが、画面には表示されませんので、忘れないようご注意ください。
rootユーザは全てのユーザーアカウントのパスワードを変更することができます。
一般ユーザでもpasswdコマンドは使えますが、その場合は自分のアカウントのパスワードのみの変更が可能です。
(例)testuser1のパスワードをrootユーザーで設定する
3.4 rootユーザーからログアウト
rootユーザーはシステム全体における全権限を持つ強力なユーザーですので、rootユーザーでの作業が終わったら、必ずログアウトをしておきます。
useraddコマンド、passwdコマンドでユーザーを作成したら、exitコマンドでrootユーザーからログアウトします。
exitコマンドでrootユーザーから抜けることで、プロンプトが#から$に変わっているのがわかります。
3.5 ユーザー情報ファイルを確認する catコマンド
useraddコマンドで追加されたユーザーは、/etc/passwdファイルに情報が書き込まれます。作成したユーザーがpasswdファイルに追加されたかを、catコマンドで確認します。
Linuxのetcディレクトリには、システムの設定ファイルが格納されています。
(例)catコマンドを実行し、/etc/passwdファイルを確認
ファイルの最後に「testuser1」の一行が追加されていることが確認できました。
以上で、ユーザーの作成は完了です。
ログイン画面に作成したユーザーアカウントが表示されるようになります。
4.ユーザーの変更 usermodコマンド
ユーザー情報の変更を行うコマンドは、usermodコマンドです。rootユーザーにログインして行います。
ホームディレクトリ、所属グループ、ログイン名などの変更が可能です。
コマンド | 概要 |
---|---|
usermod [オプション] [ユーザー名] | [ユーザー名]のユーザー情報を変更する |
usermodのオプション | 概要 |
---|---|
-c コメント | コメントを変更する |
-d ホームディレクトリのパス | ホームディレクトリを変更する |
-g グループID | 主グループを変更する |
-G グループID | サブグループを変更する 複数指定が可能 |
-l [新ユーザー名] | ユーザー名を[ユーザー名]から[新ユーザー名]に変更する ユーザー名のみの変更であり、その他の情報は変更しない |
-s シェルのパス | ログインシェルを変更する |
(例)「testuser1」のユーザー名を「testuser2」に変更
※lsコマンド(ls /home) でホームディレクトリの一覧を表示しています。
lオプションでログインのユーザー名をtestuser2に変更しましたが、-lオプションはユーザー名のみの変更となっています。
lオプションでユーザー名を変更した場合でも、ユーザー名に紐づくホームディレクトリ名は変更されず、testuser1のままとなっていますのでご注意ください。
ユーザー名をホームディレクトリごと変更したい場合は、新たにユーザーを作成し直す方が良いでしょう。
ログイン画面にて、ユーザー名がtestuser2に変更されているのが確認できます。
4.1 ユーザーのグループを変更 usermodコマンドのオプション-G
ユーザーを作成し、グループに所属させるには、usermodコマンドを使います。
サブグループに所属させるためのオプションとして、-Gオプションがありますが、このオプションを使用する際は注意が必要です。
・-Gオプション
ユーザーのサブグループを変更する
既に設定済みのサブグループがある場合は上書きされる
(既存のサブグループの設定が消える)
【例】ユーザーtestuser1をサブグループsubgroup2に所属させる
※参考としてgroupsコマンドでユーザーが所属しているグループを表示しています。
-Gオプションは、既存の設定を上書きしてしまうので、もし他のサブグループが既に設定されている場合、それらを全て消してしまいます。
上記の例では、ユーザーtestuser1が所属する主グループはtestuser1であり、サブグループとして既にsubgroup1に所属しています。
subgroup2にも追加で所属させるために、usermod -Gを利用してしまうと、subgroup1の設定が上書きされています。
-Gコマンドは追加ではなく、指定したsubgroup2の所属に変更されることがわかります。
4.2 ユーザーをグループに追加 usermodコマンドのオプション-aG
ユーザーのサブグループを変更ではなく追加したい場合は、-Gオプションの際に、既存のサブグループも含めて、所属する全てのサブグループをカンマ区切りで記述する必要があります。
しかし、サブグループ数が多い場合などは手間がかかるだけでなく、スペルミス等も心配になります。
そこで、aを含めた-aGオプションについてご説明します。
・-aGオプション
ユーザーのサブグループを追加する
既に設定済みのサブグループに影響はない
(既存の設定は残したまま)
(例)ユーザーtestuser1をサブグループsubgroup2に追加する
※参考としてgroupsコマンドでユーザーが所属しているグループを表示しています。
上記の例では、既にsubgroup1に所属している状態から、-aGオプションによって、subgroup2のみを指定するだけで、ユーザーのサブグループを増やすことができました。
-aGオプションの場合は、既存の設定はそのままで、サブグループを追加することができます。
5.ユーザーの削除 userdelコマンド
ユーザーを削除する場合は、userdelコマンドを使用します。rootユーザーでログインして行います。
コマンド | 概要 |
---|---|
userdel [オプション] [ユーザー名] | [ユーザー名]のユーザーを削除する |
userdelのオプション | 概要 |
---|---|
-r | ホームディレクトリ毎ユーザーを削除する |
オプションrを付けずに、userdelのみで実行すると、ユーザーは削除されますが、ホームディレクトリなどは残りますのでご注意ください。
ホームディレクトリごと削除を行いたい場合は、オプションrを忘れずにつけます。
(例)「testuser1」をrオプション付きで削除
※lsコマンド(ls /home) でホームディレクトリの一覧を表示しています。ホームディレクトリも同時に削除されているのがわかります。
ログイン画面からもtestuser1が削除されました。
これでユーザーの削除は完了です。