Linuxにおけるグループの種類、およびグループを作成する方法から変更・削除に至るまで、Linuxにおけるグループ管理について解説します。
Linuxを始めた初心者の方や、Linuxへの入門記事として、ぜひ活用してください。
1.Linuxのグループ管理
Linuxにおいてのユーザーは、必ず1つ以上のグループに所属しなければなりません。
ユーザーを任意のグループに分けることにより、ディレクトリへのアクセス許可やファイルへの書き込みを制限するなど、グループ単位での管理が可能になります。
グループは、ユーザーを新規作成した際にグループも作成される他、任意の名前で作ることもできます。
グループ毎にグループ番号(GID)が紐づけられています。
2.グループは、主グループとサブグループの2つ
グループは、主グループおよび、サブグループの2つに分けることができます。
以下に2つの違いを解説します。
・ 主グループ(1次グループ)
ユーザーが初めに所属するグループです。
1ユーザーに対して、主グループは1つのみ設定することが可能です。
・ サブグループ(2次グループ)
ユーザーを2つ以上の複数のグループに設定したい場合は、サブグループで指定します。
サブグループは1ユーザーに対して、複数個を紐づけることができます。
3.グループ情報を作成する
グループ情報の作成は、一般ユーザーではできません。rootユーザーのみ実施することが可能です。
rootユーザーは、管理者ユーザーですので、Linuxにおけるすべての権限を有しています。rootユーザーで実行した処理の内容によっては、システムに致命的なエラーをもたらす場合があります。
必要な場合のみrootユーザーにログインするようにし、普段の業務処理については一般ユーザーで行うのが安全で一般的となっています。
3.1 rootユーザでログイン
rootユーザーへログインするには、
・ログイン画面にてrootユーザーを選んでログインする
・一般ユーザーでログインした状態から、suコマンドでrootユーザーに切り替える
方法の2つがあります。
suコマンドでrootユーザーへ切り替える方法については、以下の記事の「3.1 rootユーザーでログイン」で解説していますので、こちらを参考にしてください。
3.2 グループを作成 groupaddコマンド
グループの作成には、groupaddコマンドを使用します。
コマンド | 概要 |
---|---|
groupadd [オプション][グループ名] | [グループ名]のグループを作成する |
groupaddのオプション | 概要 |
---|---|
-g グループID | 指定したグループIDで、グループを作成する |
-gオプションを使用しない場合は、現在使用されている最大グループIDから連番で設定されます。
3.3 rootユーザからログアウト
groupaddコマンドで、グループを作成し終えたら、必ずログアウトをします。
rootユーザーはシステム全体に権限を持つユーザーですので、rootでの作業は、rootでしかできない作業のみを行うようにすると安全です。
exitコマンドによってrootユーザから抜けることで、プロンプトが#から$に変わっていることを確認しましょう。
3.4 グループ情報のファイルを確認 tailコマンド
groupaddコマンドで追加したグループ情報は、ルートディレクトリ配下の/etc/groupファイルに反映されます。
作成したグループが正しく追加されているかについては、tailコマンドで確認できます。
以下の例は、
・作成前にtailコマンドで/etc/groupのファイルを確認
・groupaddコマンドでグループを作成
・作成後にtailコマンドで改めて/etc/groupのファイルを確認
し、グループ作成の流れを示しています。
事前と事後のファイル内容を比較することで、新しくグループが作成されたかを確認しています。
【例】tailコマンドを実行し、/etc/groupのファイルを確認
最初に「tail -n 1」によって、ファイルの最終から1行目(つまり最終行)を表示しています。最終行のグループは、proengineerであることがわかります。
groupaddコマンドを実施した後、改めてtailコマンドを実行すると、新たにtestgroup1のグループ情報が追加され、グループIDは1001番となり、連番で付与されていることがわかります。
上の例では比較しやすいよう、「tail -n 2」のコマンドによって、ファイルの最終から2行分の表示も行っています。proengineerグループの下に、新たにtestgroup1グループが追加されているのがわかります。
以上で、グループの作成は完了です。
4.グループ情報の変更 groupmodコマンド
グループの情報変更は、groupmodコマンドで行います。rootユーザーのみ実行することができます。
コマンド | 概要 |
---|---|
groupmod [オプション] [グループ名] | [グループ名] のグループ情報を変更する |
groupmodのオプション | 概要 |
---|---|
-g グループID | 変更後グループIDを指定 |
-n グループ名 | 変更後グループ名を指定 |
-o グループID | 既に存在するグループIDへの変更 |
【例】グループ名とグループIDを変更する
tailコマンドにて、/etc/groupファイルの最終行から2行分表示させています。
-nのオプションによってグループ名をtestgroup1からtestgroup2に変更しています。
さらに-gのオプションによって、グループIDを1001から1002に変更していることがわかります。
5.グループ情報の削除 groupdelコマンド
最後に、グループ情報を削除する、groupdelコマンドについて説明します。
rootユーザーのみ実行することが可能なので、予めrootユーザーにログインしておく必要があります。
コマンド | 概要 |
---|---|
groupdel [グループ名] | [グループ名]のグループを削除する |
groupdelコマンドの引数は、グループ名を指定します。 該当するグループIDで指定することはできませんので、ご注意ください。
【例】グループtestgroup1を削除
tail -n 2のコマンドを実行して、ファイルの最終から2行分を表示しています。
groupdelコマンドによって、/etc/groupファイルの最終行にあったtestgroup1の行が削除されていることを確認することができます。
以上でグループ情報の削除は完了です。
6.所属するグループ名を確認 groupsコマンド
ユーザーが所属しているグループ名を確認するには、groupsコマンドを使用します。
groupsコマンドは、一般ユーザーでも利用できます。
コマンド | 概要 |
---|---|
groups [ユーザー名] | [ユーザー名]が所属するグループ名を表示 |
引数にユーザー名を入力しない場合は、現在ログインしているユーザーが所属しているグループ名を表示します。
【例】ユーザー名とグループ名を確認して、それぞれが所属するグループ名を表示
まず参考までに、tailコマンドにて、ユーザー情報のファイル(/etc/passwd)と、グループ情報のファイル(/etc/group)の最終行2行分を表示させています。
ユーザーはproengineerとtestuser1がいて、グループもそれぞれの名前で作られていることが確認できます。
次に、groupsコマンドでユーザー名testuser1を指定した場合と、ユーザー名を指定しない場合の2例を表示しています。
ユーザー名を指定しない場合は、ログインユーザー(proengineer)のグループ名が表示されています。