当記事は、Linuxにおけるユーザーの考え方と管理方法についてご紹介します。
マルチユーザーシステム
Linuxは、複数のユーザーで同時に利用することができる「マルチユーザーシステム」を採用しています。
Linuxを利用するためには、システムに登録されたユーザー名とパスワードによる、ログイン認証が必要となります。
ログイン認証は、システムに直接ログインする「ローカルログイン」でも、ネットワークを利用した「リモートログイン」でも行われます。
なお、リモートログイン時には「SSH(Secure SHell)」と呼ばれる、ネットワークで接続された他のコンピューターを遠隔操作するためのプロトコルを利用します。
ユーザーの種類
Linuxのユーザーは、「管理者」と「一般ユーザー」の2つに分けられます。 また、ログインは基本できませんが、特定アプリケーション用の「システムアカウント」も存在します。
管理者
「管理者」は「root」と呼ばれる特別なユーザーで、Linuxシステムの全ての操作が行える管理権限を持っており、「スーパーユーザー」ともいわれます。
例えば、システムにユーザーを追加する場合や、各種サーバーに関する設定を行う等の操作は、管理権限が必要になりますので、「root」ユーザーでしか行うことができません。
なお、「root」ユーザーは、どのような操作も行うことができる絶大な権限を持っているため、誤った操作によってシステムを破壊することのないよう、細心の注意を払う必要があります。
「root」ユーザーは、システムに対してあらゆる権限を持っています。 そのため、「root」ユーザーのパスワードは外部に漏れないよう、細心の注意を払う必要があります。
また、たとえ管理者といえども、通常は一般ユーザーとしてログインし、必要な時だけ「root」ユーザーで操作するという使い方が一般的です。
一般ユーザー
一方Linuxには、限られた操作のみ実行できる「一般ユーザー」という概念が存在します。
一般ユーザーの作成はLinuxインストール時、またはインストール後に行うことができますが、管理権限を持つrootユーザーのみが作成可能です。
一般ユーザーは、システム全体に影響を与えるような重要なコマンドの実行や、セキュリティ等に関する重要なファイルの閲覧を行うことができません。
rootユーザー以外のユーザーは、全て「一般ユーザー」に属することになります。
システムアカウント
システムアカウントは、特定のアプリケーション(apache、smb等)を実行する際に使用される、特殊なユーザーアカウントです。 そのため、ログイン用のユーザーとして使用することはできません。
ユーザーとグループ
Linuxには「グループ」という概念があり、各ユーザーは原則として、必ず1つ以上のグループに属していなければなりません。
ユーザーアカウントごとに紐付けられた基本となるグループは「プライマリグループ」とよばれ、最低限このプライマリグループに属している必要があります。
グループの所属設定は後から変更することにより、複数のユーザーに対してグループ単位でアクセス制限を設定することができるようになります。
各ユーザーは複数のグループに所属することができるので、組織内の部署やプロジェクトなど、実際の組織形態に合わせたグループの構成が取れます。
ユーザーアカウントと/etc/passwd
Linuxでは、ユーザーアカウント情報を「/etc/passwd」ファイルに記録しています。 「/etc/passwd」ファイルは他の設定ファイルなどと同じようにプレーンテキストのため、「cat」コマンドなどで参照することができます。
以下に、「/etc/passwd」ファイルに記載されている項目を示します。
「/etc/passwd」ファイルには、1行に1ユーザーの情報が記載されており、各項目は「:」で区切られています。
ユーザーの管理
システムの管理者であるrootアカウントは、Linuxのインストール時に作成されますが、rootアカウント以外のユーザーアカウントはインストール時の他、インストール後に作成することができます。
ユーザーアカウントを作成すると、デフォルトではそのユーザーのホームディレクトリが、「/home」ディレクトリ配下に作成されます。
Linuxでは、ユーザーのホームディレクトリの雛形として「/etc/skel」ディレクトリが用意されています。
そのため、どのユーザーにも共通で配布すべきファイルや基本的な設定ファイルなどがある場合、「/etc/skel」ディレクトリ配下に対象ファイルを配置しておくことにより、ユーザーアカウントの作成時に、このディレクトリ内のファイルがユーザーのホームディレクトリ内にコピーされます。
ユーザーアカウントの作成
新規にユーザーを作成するには、「useradd」コマンドを使用します。
このコマンドは、管理者権限を持つrootユーザーのみが実行できます。
基本的には、useraddコマンドの後にユーザー名を指定するだけでかまいませんが、オプションを併用することによりユーザーIDやホームディレクトリを指定することもできます。
なお、ユーザー名はシステム内で重複しないよう、注意する必要があります。
useraddコマンドの実行例
# useradd –c “LPIC User” –u 2000 lpicuser
上記の例では、「-c」オプションによりコメントとして「LPIC User」を指定し、「-u」オプションによりユーザーIDを「2000」として、ユーザー名「lpicuser」を作成しています。
その他の項目は指定していないため、ホームディレクトリは「/home/lpicuser」として作成され、デフォルトのシェルは「/bin/bash」が指定されます。
ユーザーのパスワードを設定する
作成したユーザーアカウントでシステムにログインするには、認証用のパスワードが必要となります。 そのため、パスワードが設定されていないユーザーアカウントでは、システムにログインすることができません。
ユーザーアカウントのパスワードを設定するには、「passwd」コマンドを使用します。
新規ユーザーアカウントにパスワードを設定する場合は、必ずrootユーザーで行います。
また、管理者権限のあるrootユーザーは、すべてのユーザーアカウントのパスワードを設定および、変更することができますが、一般ユーザーの場合は、設定済みの自分のパスワードを変更することしかできません。
「passwd」コマンドにより設定された情報は、「/etc/shadow」ファイルに保存されます。
なお、セキュリティ上一度設定したパスワードを使い続ける事は望ましくありません。 運用ルールに従い、定期的に変更するようにしましょう。
passwdコマンドの実行例
# passwd lpicuser
ユーザー lpicuser のパスワードを変更。
新しいパスワード: ←パスワードを入力(表示されない)
新しいパスワードを再入力してください: ←パスワードを再入力(表示されない)
passwd: すべての認証トークンが正しく更新できました。
上記の例では、「lpicuser」に対してパスワードを設定しています。
いかがでしたでしょうか。
ぜひ学習の際にお役立て下さい。