Windows から Linux へのロードマップ: 第 4 回 ユーザー管理

パスワード、グループとそのシャドウ

IBM e ビジネス・アーキテクトである Chris Walden が、9 回の developerWorks シリーズで読者の運用スキルを Windows 環境から Linux 環境へ移行する道案内をしていきます。今回は Webmin インターフェースとコマンドラインの両方を使って、ユーザーとグループの追加と削除の仕方を見て行きます。シャドウ・パスワードとグループ・ファイルについても説明します。

Chris Walden, e-business Architect, IBM

Chris Walden は IBM Developer Relations Technical Consulting (dragonslayers としても知られています) の e ビジネス・アーキテクトです。テキサス州オースチン在住で教育、設置使用指導、IBM ビジネス・パートナーへのコンサルティングにあたっています。自他共に認める半 Linux 狂発症途中で、聞く耳持つ人がいれば誰にでも良い知らせを広めています。e ビジネス・アーキテクトとしての仕事以外に彼の地域にある、すべて Linux による基幹サーバーを管理しており、そこでは多種多様なユーザー環境でのファイル、印刷その他のアプリケーション・サービスを扱っています。コンピューター業界でフィールド・サポートから Web アプリケーション開発やコンサルティングまで 10 年の経験があります。



2003年 11月 11日

Linux でのユーザー管理は Windows での場合と非常に似ていて、かつ非常に違っています。どちらもマルチ・ユーザーであり、どういうユーザーかによってリソースへのアクセスが制限されます。どちらのシステムもユーザーを集めてグループ化しており、何か変更する度に多くのユーザーをいじることなくアクセス制御が簡単にできるようになっています。でもそこから先は、両者で違っているのです。

スーパー・ユーザー

Linux ではスーパー・ユーザーは root と呼ばれます。root ユーザーはすべてのプロセスを制御でき、すべてのファイルにアクセスでき、システム上のどんな機能も実行できます。root から隠されているものは何もありません。管理の面から言えば root は至高の存在なのです。ですから root アカウントは確実なパスワードで保護されている必要があります。日々の作業に root を使うべきではありません。

他のユーザーに root 権限を与えることはできますが、それには注意が必要です。普通は完全に root 権限を解放せず、あるユーザーが特定のプログラムを root として実行するように設定します。


新しいユーザーの追加

新しいユーザーはコンソール・ラインから、または Webmin のようなツールを使って作ります。

ユーザーを追加するコマンドは useradd です。例えば新しいユーザーをコンソールから追加するには次のようにします。

useradd -c "normal user" -d /home/userid -g users\
-G webadm,helpdesk -s\ /bin/bash userid

このコマンドで、最後のパラメーターにある「userid」という新しいユーザーができます。「normal user」というコメントが入っています。Userid のホームディレクトリは「/home/userid」です。Userid のプライマリ・グループは users ですが、userid を「webadm」や「helpdesk」グループに置くこともできます。Userid は通常のコンソール環境として「/bin/bash」シェルを使います。

Webmin を使うと新しいユーザーを作るのは簡単でかつ視覚的にできます。好きなブラウザで Webmin にログインし、System セクションに行きます。「Users and Groups」を選び、Create a new user をクリックします。

図 1. Webmin の Create User 画面
Webmin の Create User 画面

ユーザーの詳細事項を入力し Create をクリックするとユーザーが作られます。


パスワードの変更

ユーザーのパスワードを変更するにはコンソールの passwd コマンドを使います。

passwd userid

passwd コマンドで他のユーザーのパスワードを変更できるのは root だけです。コマンドを入力するとパスワードを入力するよう指示され、次にそのパスワードを確認するように指示されます。両者が一致するとユーザーのトークンは更新され、パスワードが変更されます。ユーザーはコンソールから passwd をタイプすることで自分のパスワードを変更することもできます。この場合には、新しいパスワードを入力する前に古いパスワードを入力するように指示されます。

大部分の Linux ディストリビューションは、パスワード変更のために password cracker モジュールを起動した状態でインストールします。このモジュールは入力されたパスワードがきちんとしたパスワードのルールに従っているかどうかをチェックするものです、ルールに従っていない場合には、ユーザーにその旨警告します。設定によってはセキュア・パスワードを使うように要求されるかもしれません。パスワードが設定されると root に警告が出される場合がありますが、パスワード設定を止めることはできません。

Webmin では System セクションの「Change Passwords」モジュールを使ってパスワードを変更します。リストからユーザーを選び、空白に新しいパスワードを入力します。


ユーザーの削除

コンソールからは userdel コマンドを使ってユーザーを削除できます。

userdel -r userid

オプションの -r スイッチはユーザーだけでなく、ユーザーのホームディレクトリと、そこにあるすべてのものを削除します。ディレクトリを残しておきたければ -r を付けないようにします。このスイッチはホームディレクトリを削除するだけで、そのユーザーのシステム上のファイルすべてを自動的に削除するわけではありません。


ユーザーの整理

Linux の設定はテキストベースです。Linux のすべてのユーザーは /etc/passwd と呼ばれるファイルの中にいます。このファイルは一度に一ページ分、more コマンドを使って見ることができます。

more /etc/passwd

/etc directory

Linux では大部分の設定ファイルは /etc ディレクトリにあることを思い出してください。

このファイルの構成はきわめて単純で、各行が新しいユーザーを表しており、そのパラメーターはコロン (:) で分けられています。

userid:x:75000:75000::/home/userid:/bin/bash

最初の列はユーザー名を表します。2 番目はパスワード、3 番目は数字で表したユーザー ID、4 番目はユーザーのプライマリ・グループの数字 ID、5 番目はユーザーのフルネームまたはコメントを表します。6 番目はユーザーのホームディレクトリで普通は /home ディレクトリにあり、ユーザー ID と同じ名前です。7 番目はユーザーのデフォルト・コンソール・シェルを表します。

パスワード・ファイルの構造
Login IDPasswordUser IDGroup IDCommentHome directoryDefault shell
useridx7500075000 /home/userid/bin/bash

上の例では Password の列が「x」になっていることに注意してください。これはユーザーのパスワードが「x」であるわけではありません。かつて一時期にはパスワードは普通、このファイルにプレーン・テキストとして保存されていました。その構成は今でも可能ですが、その意味するところから、稀にしか使われません。その解決方法として、シャドウ・パスワードと呼ばれるものが作られました。/etc/passwd ファイルのパスワード部分には「x」が置かれ、暗号化されたパスワードが /etc/shadow ファイルに入ります。この方法でユーザー情報とパスワードデータを分離できたため、セキュリティが改善されています。さらに MD5 パスワード暗号化アルゴリズムにより更に強固なパスワードが使えるので、セキュリティがさらに高まっています。下記はシャドウ・パスワードのエントリーの例です。

シャドウ・パスワードとユーザー権限

UNIX 式を引きずっている Linux のユーザー管理で、ちょっと変わっているのがパスワード・ファイルです。ログインするユーザーは自分のユーザー名が存在するかどうか見るために /etc/password ファイルを読める必要があります。その同じファイルにパスワードがあるということは、クラッカーがパスワードを見つけてしまう潜在的な危険性をはらんでいることになります。/etc/passwd ファイルをダウンロードし、別の強引な手段を使ってユーザー名と暗号化されたパスワードを解読することもできなくはありません。ただ、シャドウ・パスワードは人が読める形式である必要はないので、クラッカーも手掛かりが持てないことになります。この手法もまだ完璧とは言えません。ユーザー名は見えるので、クラッカーにユーザー情報が少し漏れてしまうからです。より安全なのはユーザーを LDAP のような別のリポジトリに置くことです。

userid:$1$z2NXZR19$PZpyL84DmPKBXMeURaXXM.:12138:0:186:7:::

シャドウ・パスワード機能はすべて背後で行われるので、その機能を起動する以外、めったにいじる必要はありません。

グループ

Linux でのグループは Windows の場合とほとんど同じです。グループを作り、メンバーをそのグループのリストに加えます。するとリソースがグループに割り当てられた権限を持てるようになります。グループのメンバーは、そのグループに割り当てられたリソースにアクセスできるようになります。

グループを作るのは簡単で、コンソール・コマンドの groupadd を使います。

groupadd mygroup

これでメンバーの無い「newgroup」というグループができます。グループは /etc/group と呼ばれるファイルに置かれます。各グループはそれぞれ別の行で、次のような形式でリストアップされます。

mygroup:x:527:

最初の列はグループ名を表します。2 番目はパスワードです。ここでも「x」は、本当のパスワードは /etc/gshadow というシャドウ・ファイルに保存されていることを意味しています。3 番目はグループ番号です。それ以降はグループのメンバーのユーザー ID で、それぞれコンマで区切られます。

グループにメンバーを追加するには gpasswd コマンドを使います。-a スイッチとそのメンバーのユーザーID を使って追加します。

gpasswd -a userid mygroup

メンバーを削除するのにも同じコマンドを使いますが、スイッチは -a ではなく、-d を使います。

gpasswd -d userid mygroup

/etc/group ファイルを直接編集してグループに変更を加えることもできます。

パスワード・ファイル編集の注意

/etc/passwd や /etc/group ファイルを直接編集する際に本当に危険なのは、間違って ID 番号を複製してしまうことです。すべてのリソースはユーザー名やグループ名ではなく ID 番号を使います。もし間違って ID 番号を複製してしまうと、アクセス許可したつもりのないものにアクセスを許可してしまうことになります。例えば、ユーザーの ID を 0 に変えたとします。0 は root なので、このユーザー ID でログインすると root でログインしたことになるのです!またファイル中の、ユーザー行やグループ行を削除すると、そのユーザーやグループは削除されてしまいます。人はこうした間違いをしがちです。ツールを使うことでそうした間違いは防げます。ただ、簡単な問題の場合は /etc/group ファイルをちょっと編集して直すのが一番早いこともあるのです。これらのファイルを編集する時には、自分が非常に強力な権限を持っていることを意識してください。ご注意を!

Webmin では、先にユーザーに関してのところで説明したのと同じツールでグループを作ったり編集したり削除したりすることができます。

ユーザーとグループの関連付け

ここはアクセス・コントロールについて突っ込んだ議論をする場所ではありませんが、ユーザーとグループがファイルとどういう関係にあるかを少しは知っておく必要があります。ファイルにある、長いディレクトリのリストを見ると次のようなものがあるはずです。

-rw-r--r-- 1 userid mygroup 703 Jun 23 22:12 myfile

他の列は無視しておいて、3 列目と 4 列目それに最後の列を見てください。3 列目にはこのファイルの所有者名、つまり userid があります。4 列目にはこのファイルに関連付けられたグループ、mygroup があります。最後の列はファイル名です。各ファイルは所有者もグループも一つしか持てません。どの範疇にも属さないユーザーを Other として、権限を割り当てることができます。Other は Windows の Everyone グループに対応するものと思ってください。

ファイル所有者が一つというのはオペレーティング・システムでは普通ですが、グループ所有者が一つというのは、慣れない管理者にとっては制限が多いように感じられるかもしれません。そんなことはありません。ユーザーは複数のグループのメンバーになれるので、セキュリティを扱う新しいグループを作るのも簡単なのです。Linux では業務単位よりもむしろ、リソースへのアクセス権限の程度でグループ定義がされる場合が多いと言えます。システム中でリソースが論理的に整理できたら、グループを増やしてリソースへのアクセスを調整するようにすれば良いのです。

ユーザーとグループの関連づけについてより詳しくは、記事の終わりの参考文献にあります。ファイル許可を変える詳細については man chmod を見てください。


まとめ

ユーザーもグループも基本的には Linux でも Windows と同じように動作しますが、Linux ではシステム・リソースに関連付けられるのは一つのグループだけ、という点は異なります。Linux ではグループは非常に手軽なので、複雑な環境では恐れずどんどんグループを作って構わないと思えば良いのです。グループは業務単位ではなく、リソースへのアクセスを考えて作ります。

ユーザーとグループの情報はそれぞれ /etc/passwd ファイルと /etc/group ファイルに保存されます。システムには恐らく /etc/shadow ファイルと /etc/gshadow ファイルもありますが、これはセキュリティを高めるために暗号化されたパスワードを含むファイルです。これらのファイルでユーザーやグループを直接編集することもできますが、作業には十分な注意が必要です。

ユーザー機能、グループ機能はすべてコンソールから操作できます。つまりスクリプト化できるということです。また Webmin のようなツールを使ってグラフィカルに操作することもできます。

参考文献

  • Windows から Linux へのロードマップシリーズの他の記事も参考にしてください。 (developerWorks, 2003年 11月)
  • Linux Headquarters には多くの話題を網羅した基本的なチュートリアルとヒントがあります。うたい文句は「I've installed Linux... now what??? (Linux はインストールした・・・次はどうしろって?) 」です。their tutorials も面白いかもしれません。
  • The Linux Documentation Project にある list of HOWTOs by category でも簡単に素早く、今回の話題に関連したドキュメントを見つけられます。
  • IBM Directory Server は、 (特に X.500 ベースの) ディレクトリ・サービスへのアクセスのための LDAP (Lightweight Directory Access Protocol) を実装しています。詳細については Authenticating Linux users with IBM Directory Server を見てください。
  • ファイル許可とセキュリティに関しては Linux Documentation Project の Introduction to Linux ガイド Chapter 3 で説明されています。
  • メリーランド大学 (The University of Maryland) が selection of secure passwords で金言集を公開しています。
  • The Red Hat Linux Manual のドキュメンテーションが Shadow password file の使い方をさらに詳しく説明しています。
  • Linux Shadow Password HOWTO がシャドウ・システムの背景とその原理を説明しており、またその実装方法も順を追って説明しています。
  • システムのセキュリティは膨大で複雑な話題ですが、すべてがつながっている世界では誰にでも関係します。これを学ぶのに早すぎることも遅すぎることもありません。ドキュメント Adding Security to Common Linux Distributions と Strategies for Keeping a Secure Server (先に挙げた Linux Administration Made Easy ガイドの 12 章目です) はそのために役に立つでしょう。
  • developerWorks Linux ゾーンでは、Linux に関する豊富な資料をご覧いただけます。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux
ArticleID=230977
ArticleTitle=Windows から Linux へのロードマップ: 第 4 回 ユーザー管理
publish-date=11112003