このチュートリアルは、Linux を試してみたいけれども、今まで Linux を使ったことがないという Windows ユーザーのためのものです。このチュートリアルで取り上げるいくつかの基本タスクは、今までとは勝手が違うかもしれません。具体的には、以下のタスクについて説明します。
- ログイン: ログイン方法と Linux デスクトップについて説明します。
- ナビゲーションと設定: 個人の要求に合わせて設定を調整します。
- コマンドライン・アクセス: どうしてもコマンドラインで作業しなければならない場合のタスクです。
- スーパー・ユーザー (または root) への切り替え: 一般ユーザーの権限では十分ではないときには、スーパー・ユーザーに切り替えます。
- 別のユーザーとして GUI アプリケーションを使用する方法: マルチユーザー・システムの機能を使いこなせるようになってください。
- リムーバブル・デバイス: リムーバブル・メディアを使用する方法、そしてリムーバブル・デバイスを取り外す際にデータが失われないようにするための方法を説明します。
- ログアウト: しばらくの間 Linux を使用しないとき、またはログアウトや他のアプリケーションのパネル・アイコンが必要な場合には、このセクションで説明するタスクを行います。
- ユーザーとグループの追加: ユーザーまたはユーザー・グループをシステムに追加します。
以上のタスクについての説明およびサンプル・コードでは、よく使われている次の 3 つのディストリビューションと、それぞれがデフォルトで使用するグラフィカル・デスクトップを使用する前提とします。
- Fedora 14 (GNOME デスクトップを使用)
- OpenSUSE 11.3 (KDE 4 デスクトップを使用)
- Ubuntu 10.10 (GNOME デスクトップを使用)
上記以外のディストリビューション、デスクトップ、およびウィンドウ・マネージャーを使用することもできますが、その詳細については皆さんが独自に調べてください。ここに記載する情報のなかに、特定のディストリビューション、さらにはそのディストリビューションの特定のバージョンに特有の情報がある場合でも、このチュートリアルで学ぶ内容は、新しいディストリビューションを操作する際の指針として役に立ちます。このチュートリアルでは、ビギナーの支援に目的を絞っているため、カーネルの再コンパイルやソフトウェアのインストールなどといった高度なタスクについては説明しません。詳しい情報を入手するには、無料の Linux (LPI) 認定試験対策の連載を読むことをお勧めします。
このチュートリアルを執筆している時点では、近日中に GNOME 3 が入手可能になる予定です。ユーザー・インターフェースに、ここで説明する内容とは違う点があるかもしれないことを考慮に入れておいてください。
チュートリアルを始める前に、Linux システムをインストールし、インストール・プロセスの一環として少なくとも 1 つの非 root ユーザーを作成してください。
Linux ディストリビューションをインストールしてシステムを起動すると、自動的にログイン状態になる場合も、ログイン画面が表示される場合もあります。この 2 つの起動方法を切り替える方法、そして自動ログインに伴うセキュリティーへの影響については、次のセクションで説明します。このセクションではログインの操作を実行中であることを前提とします。このチュートリアルで取り上げる 3 つのシステムのそれぞれでは、ログインの実装方法が多少異なりますが、いずれも 1 人以上のユーザーの名前のリストを表示してユーザーを選択するように促します。ユーザーを選択すると、パスワードの入力を求められます。
ログイン画面
画面の外観は、Linux ディストリビューションによって異なります。この短いチュートリアルでは説明しませんが、当然のことながら、画面をカスタマイズすることは可能です。図 1 に Ubuntu 10.10 システムの標準ログイン画面を、図 2 に Fedora 14 システムの標準ログイン画面を示します。両方の画面に示されているのは、これらのシステムで使用されているデフォルトの GNOME デスクトップです。
図 1. Ubuntu 10.10 のログイン画面
図 2. Fedora 14 のログイン画面
デフォルトの KDE 4 デスクトップを使用した OpenSUSE 11.3 システムの標準ログイン画面は、図 3 のように表示されます。
図 3. OpenSUSE Linux 11.3 のログイン画面
ID を入力するか選択して Enter キーを押すと、パスワードの入力を求められます。上記の OpenSUSE の例のように、ログイン画面にパスワード・フィールドが表示されている場合には、パスワード・フィールドにタブで移動してパスワードを入力することができます。ID を入力するフィールドが表示されておらず、選択可能な ID のリストにはない ID を入力する必要がある場合には、通常は図 2 に示されているような「Other... (その他…)」というエントリーがあるので、そのエントリーを選択して、ID の入力フィールドを表示します。これについては、「スーパー・ユーザー (または root) への切り替え」セクションで詳しく取り上げます。
ログイン画面には、他にも項目が表示されていることがあります。例えば、時計やシステムの名前、そしてシステムをシャットダウンあるいは再起動するためのアイコンや名前付きメニューなどです。
ユーザー補助
GNOME デスクトップ上には、人物が円で囲まれたように見える小さなアイコンがあります。このアイコンをクリックすると、スクリーン・キーボードやフォントの拡大などのユーザー補助オプションの一覧を示すダイアログが表示されます。Fedora システムの場合の例を図 4 に示します。ここでは、図 2 のログイン画面が読みやすくなるように、テキストのサイズを大きくするオプションを選択しました。
図 4. Fedora ログインのユーザー補助オプション
デスクトップ画面
パスワードを入力して再度 Enter キーを押すと、ログインが完了してデスクトップが表示されます。図 5 は、Ubuntu 10.10
システムにユーザー ian としてログインした場合の画面です。画面の上部と下部には、それぞれパネルが表示されています。パネル上のアイコンにマウスを重ねたり、アイコンをクリックしたりして、デスクトップの内容を探ってください。
注: 次に記載する 3 つの図は、デスクトップがどのように見えるかを把握してもらうためのものです。図の文字が小さくて読めなくても気にしないでください。
図 5. GNOME デスクトップを使用した Ubuntu 10 の初期ウィンドウの例
Fedora 14 も同じく GNOME デスクトップを使用します。図 6 は、上部パネルの左側にある「System (システム)」アイコンをクリックした後、「Preferences (設定)」を選択している様子を示しています。その下位メニューに表示された「Desktop Effects (デスクトップ効果)」メニュー項目の上にマウスを重ねると、ホバー・ヘルプに「Select desktop effects (デスクトップ効果の選択)」が表示されます。このメニュー項目を選択すると表示されるウィンドウで、「デスクトップ上でウィンドウをあちこちに移動するとウィンドウのエッジが揺れるようにする」などのデスクトップ効果を選択します。この効果には、3D グラフィック機能と、おそらく (オープンソースではない) グラフィック・ドライバーが必要であることに注意してください。
図 6. GNOME デスクトップを使用した Fedora 14 の初期ウィンドウの例
KDE 4 デスクトップを使用した OpenSUSE の場合には、図 7 のような表示になります。
図 7. KDE デスクトップを使用した SUSE Linux の初期ウィンドウの例
比較的新しい KDE 4 デスクトップでは、他とは異なるナビゲーション・メタファーを使用します。これについては、「ナビゲーションと設定」セクションで詳しく説明します。「Desktop Folder (デスクトップ・フォルダー)」のウィンドウ・メニューは、上端に固定されているのではなく、ウィンドウの左側または右側にスライドできることに注意してください。
ここで少し時間を割いて、デスクトップ上の Linux パネルの内容を探ってみましょう。その後、ナビゲーションについて調べ、一例としてマウスを左利き仕様に切り替えてデスクトップをカスタマイズする方法を説明します。
デスクトップのパネル
パネルはデスクトップと対話する際の出発点になるとともに、システムに関する情報を提供します。通常、デスクトップには 1 つまたは 2 つのパネルがあります。これらのパネルは一般に、デフォルトで画面の最上部、最下部、またはその両方に配置されます。パネルの位置は、一般にパネルを右クリックしてプロパティーを変更することで、必要に応じて左端または右端に移動することができます。
大抵はディストリビューションやデスクトップによってパネルのレイアウトが異なるので、ここで説明するレイアウトとは違う場合があることを踏まえておいてください。図 8 は、Ubuntu での GNOME パネルの例です。この図には、明確にするために 2 つのパネルの両端を示しています。
図 8. Ubuntu での GNOME パネルの機能
- 上部パネルの左側部分からは、プログラム、フォルダー (ディレクトリー)、システム設定およびシステム情報にアクセスすることができます。
- 上部パネルの右側部分には、日時などの情報の他、いくつかのクイック・アクセス・ボタンが表示されます。これらのボタンを使用して、ボリューム・コントロールの設定やチャット・ウィンドウのオープン、そしてログアウトなどの機能にアクセスすることができます。
- 下部パネルの左側部分には、すべてのウィンドウを非表示にしてデスクトップを表示するためのボタンと、アクティブなウィンドウに対応するボタンがあります。
- 下部パネルの右側部分には、ゴミ箱と、仮想デスクトップ間をナビゲートするための 4 つの四角形があります。ほとんどの Linux システムでは複数の異なるデスクトップをセットアップするため、例えば、E メールと Web ブラウズ用のデスクトップ、プログラムの開発作業を行うためのデスクトップ、さらにテスト用のデスクトップなどといったようにデスクトップを個別に使い分けることができます。デスクトップを切り替えるには、そのデスクトップが縮小化された四角形をクリックするか、あるいはキーの組み合わせを使用します。GNOME では一般に、Alt+Tab キーを押して特定のデスクトップでアプリケーション・ウィンドウを切り替えるのと同じように、Ctrl+Alt+左矢印キー、または Ctrl+Alt+右矢印キーを押すことで、デスクトップを切り替えることができます。OpenSUSE の場合には、Ctrl+F1 から Ctrl+F4 までのキーを押すと、デスクトップ 1 からデスクトップ 4 が直接選択されます。デスクトップの内容を探る際には、思いがけない結果にならないように、必ず非 root ユーザーとしてログインしてください。制限のない権限で操作していると、誤った操作によって重大な結果を招く恐れがあります。
図 9 に、Fedora システムのパネルを示します。これは、図 6 の画像を使って作成した図なので、左上隅にある「System (システム)」項目が選択されている状態になっています。Ubuntu では上部パネルの右側にログアウト機能へのクイック・アクセスがあり、下部パネルの左側にはすべてのウィンドウを非表示にする機能、右側にはゴミ箱アイコンがありましたが、Fedora システムのパネルには、これらの機能がないことに注意してください。この点を除けば、パネル・レイアウトはほとんど同じです。
図 9. Fedora での GNOME パネルの機能
OpenSUSE システムには、最下部に 1 つのパネルがあるだけです (図 10 を参照)。プログラムならびにフォルダーとシステム機能には、左端近くにある「Start (スタート)」ボタンと呼ばれる大きなボタンからアクセスします。パネルの左側にはブラウザーとデスクトップ・ナビゲーターへのクイック・アクセス・ボタンもあり、これらのボタンの隣に 5 つの仮想デスクトップのそれぞれに対応するボタンが並んでいます。パネルの右側には、Ubuntu GNOME の上部パネルの右側と同じように、時計と複数の便利なボタンがあります。
図 10. OpenSUSE での KDE 4 パネルの機能
GNOME 2.3x デスクトップで使用しているのは、今ではお馴染みとなっているカスケード・メニューです。図 11 には、Fedora の「System (システム)」アイコンからマウスの設定にアクセスする方法を示してあります。これらのメニューの配列は、ディストリビューションによって異なる場合があります。例えば Ubuntu と Fedora では、マウスの設定は同じ場所にありますが、デスクトップ効果を設定するには、Fedora システムでは 「System (システム)」 > 「Preferences (設定)」 > 「Desktop Effects (デスクトップ効果)」の順にナビゲートする必要がある一方、Ubuntu では「System (システム)」 > 「Preferences (設定)」 > 「Appearance (外観の設定)」の順にナビゲートして、「Visual Effects (視覚効果)」タブを表示します。グラフィカル・アプリケーションの内容を調べるという行為は、さまざまな石をひっくり返して、その下に何が隠れているのかを確かめるようなものです。
図 11. Fedora でマウスの設定にアクセスする方法
その一方、KDE 4 デスクトップでは「Start (スタート)」メニューに異なるメタファーを使用します。「Menu (メニュー)」パネルは入れ替わるので、メニュー項目をクリックするか、またはメニューの下部に提示されたアイコンにマウスを重ねることによってナビゲートします。図 12 に例として、「Favorites (お気に入り)」メニューと「Applications (アプリケーション)」メニューを示します。
図 12. マウスをアイコンに重ねると変更される KDE 4 のメニュー
サブメニューを選択すると (例えば、「Start (スタート)」 > 「Applications (アプリケーション)」 > 「Utilities (ユーティリティー)」)、前のメニュー・レベルに戻れるように、メニューの左側に戻るボタンが表示されます。図 12 に、戻るボタンを示します。
図 13. KDE 4 メニューの戻るボタン
OpenSUSE の「Start (スタート)」メニュー項目のなかには、選択するとダイアログ・ボックスが開き、そのダイアログ・ボックスにさらに選択する項目が含まれている場合もあります。その一例は、「Start (スタート)」 > 「Applications (アプリケーション)」 > 「Configure Desktop (デスクトップの構成)」の順に選択されるメニューです。このメニューによって開かれるウィンドウでは、図 14 に示すように「Keyboard & Mouse (キーボードとマウス)」設定メニュー項目にマウスを重ねるとホバー・ヘルプが表示されます。
図 14. KDE 4 のデスクトップの構成メニュー
一般にマウスは右利きのユーザーを前提としていますが、数多くのデスクトップ設定のなかには、左利き用にマウスの構成を変更するための設定もあります。マウスの設定ダイアログにナビゲートする方法については、図 11 または図 14 を参照してください。
Ubuntu システムでは、図 15 のようなウィンドウが表示されます。このウィンドウで、マウスの設定を変更することができます。ウィンドウには、基本的な左利き用または右利き用の設定をはじめとする、変更可能な設定がいくつかある他、ユーザー補助に関する詳細な設定を行えるタブもあります。設定は即時に有効になります。したがって、左利き用の選択項目をクリックすると、マウスは左利き用に設定されるので、ダイアログを閉じるには、右マウス・ボタンを「ボタン 1」として使用することになります。Fedora システムでのダイアログも同様です。
図 15. GNOME でマウスの設定を変更するためのダイアログ
KDE を使用した OpenSUSE システムでは、図 16 のようなウィンドウでマウスの設定を変更することができます。このダイアログに表示されるマウスの画像に注目してください。左利き用に切り替えると、マウスの画像の右ボタンが強調表示されて、これが主要な選択ボタンであることが示されます。右利き用に戻すと、左ボタンが強調表示されます。Ubuntu でのダイアログと同じく、設定できるオプションは他にもありますが、Ubuntu でのダイアログとは異なり、変更内容は「Apply (適用)」ボタンをクリックするまでは適用されません。
図 16. KDE でマウスの設定を変更するためのダイアログ
Linux システムでは、GUI を使用するのではなく、Linux コマンドを入力しなければならないことがあります。Linux のターミナル・ウィンドウは、Windows での DOS コマンド・プロンプトと似ています。このチュートリアルで使用している KDE デスクトップの場合、「Start (スタート)」 > 「Applications (アプリケーション)」 > 「System (システム)」 > 「Terminal (端末)」の順にナビゲートすることで、使用可能なターミナル・プログラムのリストを表示することができます (図 17 を参照)。
図 17. KDE 4 を使用した OpenSUSE でのターミナル・ウィンドウのオープン
Ubuntu システムでターミナル・ウィンドウを表示するには、「Applications (アプリケーション)」 > 「Accessories (アクセサリ)」 > 「Terminal (端末)」の順にナビゲートするか (図 18 を参照)、「Applications (アプリケーション)」 > 「System (システム)」 > 「Terminal (端末)」の順にナビゲートします。Fedora システムでは、「Applications (アプリケーション)」 > 「System Tools (システムツール)」 > 「Terminal (端末)」の順にナビゲートします。
注: 「Terminal (端末)」メニュー項目を右クリックすると (マウスを左利き用に構成してある場合は、右クリックに相当するボタンを使用)、通常は「Terminal (端末)」アイコンをパネルまたはデスクトップに追加する選択肢が表示されます。アイコンをパネルに追加すれば、メニューをナビゲートすることなく素早くターミナル・ウィンドウにアクセスすることができます。
図 18. Ubuntu でのターミナル・ウィンドウのオープン
OpenSUSE システムでは、「Terminal (端末)」(konsole) 項目を選択すると、図 19 のようなターミナル・ウィンドウが表示されます。図 19 と図 20 はどちらも、この後に説明するコマンドを入力して、その結果が出力されている様子を示しています。
図 19. OpenSUSE でのシェル
図 20 は、Ubuntu のターミナル・ウィンドウの例です。
図 20. Ubuntu でのシェル
シェル・ウィンドウのデフォルトの外観は、どのディストリビューションとどのデスクトップを使用しているかによって異なります。シェル・ウィンドウのサイズは、左マウス・ボタンでウィンドウの角または四辺をドラッグすることで変更することができます。最新の履歴を表示するには、スクロール・バーを使用してスクロール・バックします。root 以外のユーザーの場合、コマンド・プロンプトは $ 文字で終わるのが通常です。# 文字で終わるコマンド・プロンプトは、このシェルのユーザーが root ユーザーであるか、root 権限を持っていることを一般に意味します。上矢印を使用すれば、前に実行したコマンドを再表示することができ、必要に応じてそのコマンドを変更することができます。ウィンドウの色やフォントなどの設定は、通常は「Settings (設定)」メニューまたは「Terminal (端末)」メニューからアクセスして変更することができます。
図 19 と図 20 には、以下のコマンドと、その実行結果の出力が示されています。
-
whoami - このターミナル・ウィンドウを使用しているユーザーを示します (上記の例では、
ian)。 -
pwd - カレント作業ディレクトリーの完全なディレクトリー名を出力します (上記の例では、
/home/ian)。注意する点として、コマンド・プロンプトの $ の前にあるチルダ (~) は、ユーザーが現在、そのユーザーのホーム・ディレクトリーにいることを示しています。 -
cd - カレント (または作業) ディレクトリーを変更します。上記の例では、/ (ルート) ディレクトリーに変更した後、一般に一時ファイルの保存先として使用される /tmp
ディレクトリーに変更しています。/ はファイルシステム全体のルートであり、/root は
rootユーザーのホーム・ディレクトリーであることに注意してください。ディレクトリー名を指定せずにcdを実行すると、ユーザーはホーム・ディレクトリーに戻されます。cd -を実行すると、ユーザーはカレント・ディレクトリーの前に作業していたディレクトリーに移動されます。root 以外のユーザーのホーム・ディレクトリーは、通常 /home の下にあります。例えば、私の ID がianとなっているシステムでは、/home/ian が私のホーム・ディレクトリーとなります。チルダ (~) はカレント・ユーザーのホーム・ディレクトリーの省略形であることを思い出してください。特定のユーザーのホーム・ディレクトリーを参照するには、そのユーザーの名前を追加します。例えば、ユーザーianのホーム・ディレクトリーは、~ianとして参照することもできます。 -
uname - パラメーターを使用しない場合、このコマンドによってオペレーティング・システムの名前 (Linux) が表示されます。
-aパラメーターを使用すると、システムに関する追加情報が表示されます。 -
which PATH環境変数に設定されているディレクトリーをスキャンして、パラメーターとして指定されたコマンドをシェル・プロンプトで入力したときに実行される実行可能プログラムのフル・パスを調べて表示します。上記の例を見ると、xclockプログラムは /usr/bin/xclock から実行されることがわかります。注: このアプリケーション・コマンドは、デフォルトの Linux インストールで必ずインストールされるわけではありません。通常は、org-x11-apps というような名前のパッケージに含まれています。したがって、このアプリケーション・コマンドを使用するには、該当するパッケージを見つけてインストールしなければならない場合もあります。-
xclock - デスクトップで新しいウィンドウを起動して時計を表示します。コマンドの末尾に追加されている &
に注目してください。これよって、コマンド・プロセッサーはコマンドの完了を待たずに、ターミナル・ウィンドウに制御を返すことになります。また、これはこのターミナル・ウィンドウから派生した最初のプロセスであり、そのプロセス
ID (
PID) は 1774 となっていることにも注意してください。 -
ps -Tオプションを指定して使用すると、このターミナル・ウィンドウによって起動されたすべてのプロセスが表示されます。一部のシステムでは、psコマンドによるデフォルトの表示にプロセスの状態も示されます。指定できるすべてのオプションおよび出力列についての詳細は、man ページを参照してください。上記の例で状態が表示されていたとすると、bashシェル・プログラムが入力を待機中であることが示されます (スリープ中であることを示す状態S)。これは、xclockプロセスにしても同じです。実行中の ps コマンドの状態は、実行可能であることを示す状態Rとなります。
以上のコマンドによる出力は、上記の 2 つのターミナル・ウィンドウに示されています。リスト 1 に、Ubuntu システムでの出力をテキスト形式で記載します。
リスト 1. Ubuntu での基本的なコマンドの出力
ian@pinguino:~$ whoami ian ian@pinguino:~$ pwd /home/ian ian@pinguino:~$ cd / ian@pinguino:/$ cd /tmp ian@pinguino:/tmp$ uname Linux ian@pinguino:/tmp$ uname -a Linux pinguino 2.6.35-27-generic #48-Ubuntu SMP Tue Feb 22 20:25:29 UTC 2011 i686 GNU/Linux ian@pinguino:/tmp$ which xclock /usr/bin/xclock ian@pinguino:/tmp$ xclock& [1] 2072 ian@pinguino:/tmp$ ps -T PID SPID TTY TIME CMD 2049 2049 pts/1 00:00:00 bash 2072 2072 pts/1 00:00:00 xclock 2073 2073 pts/1 00:00:00 ps ian@pinguino:/tmp$ |
その他、以下のコマンドが役に立つ場合もあります。
-
infocmd_name - cmd_name というコマンドに関する情報を表示します。info というドキュメント・システムについて調べるには、
info infoを試してみてください。 -
mancmd_name - cmd_name というコマンドに関するオンライン・マニュアル (man) ページへのインターフェースです。情報には、info 形式のものも、man
ページ形式でのみ有効なものもあります。マニュアル・ページについての詳細を調べるには、
man manを試してみてください。
Linux でのタスクには、root またはスーパー・ユーザーの権限が必要なものも数多くあります。スーパー・ユーザーとも呼ばれる root
ユーザーは、一般にシステムの構成やソフトウェアのインストールなどの管理タスクを行う際に使用されるユーザーです。root
を使用するのは、管理タスクを行う場合に限ってください。通常の作業に root を使用するのは避けなければなりません。root ユーザーにはあらゆるタスクが許可されるので、誤ってシステムを壊してしまう可能性もあり、通常それは望ましいことではないからです。一般ユーザーの特権は限られているため、一般ユーザーであれば、不注意によってシステムへ与える損傷はかなり防ぐことができます。
現在、グラフィカル・ユーザー・インターフェースを備えた管理アプリケーションのほとんどでは、非 root ユーザーは root のパスワードを入力してからでないと、そのアプリケーションの機能にアクセスできないようになっています。その一方、root としてターミナル・ウィンドウからコマンドを実行する必要がある場合には、この安全策は適用されません。
皆さんが最初に考え付くのは、現行のユーザー ID からログアウトし、新しいユーザー ID としてログインし直すという方法で、別のユーザー ID
に切り替えることでしょう。けれども、別のユーザーとして実行する必要のあるコマンドが、たった 1 つか 2 つの簡単なコマンドだけの場合を考えてみてください。Linux
には、そのような場合に使える方法があります。それは、su (substitute user) コマンドと sudo コマンドです。これらのコマンドを使用すれば、一時的に別のユーザーとして 1
つ以上のコマンドを実行することができます。この方法は、root アクセスを必要とするタスクによく使われます。実際、ユーザーが ssh (または安全性にかなり乏しい telnet)
などのターミナル・プログラムを使用してリモートからシステムに接続している場合、多くの Linux ディストリビューションでは、そのユーザーは root
としてサインインできないようになっています。これは有効なセキュリティーのプラクティスなので、迂回することはお勧めしません。代わりに、非特権ユーザーとしてサインインしてから、su または sudo コマンドを使用して root 権限が必要な作業を行ってください。
要約すると、root 権限で任意のコマンドを実行するには、主に 2 つの方法があります。
suコマンドを使用する (通常は、-オプションを使用して root に切り替えます)。sudoコマンドを使用して単一のコマンドを root 権限で実行する。
Fedora または OpenSUSE などのシステムでは上記の方法をどちらでも使用できますが、おそらく su
を使用するほうが一般的です。Ubuntu などの Debian ベースのシステムでは、セキュリティー・モデルによって root ログインが禁じられるため、root
としてログインすることも、su を使用して root になることもできません。したがって、sudo を使用する必要があります。
例えば、ログインしてターミナル・ウィンドウを見ると、root ユーザーにはなっていませんが、root 権限が必要なコマンド (fdisk など) を実行しなければならないとします。この場合、su
コマンドを単独で使用するか、あるいはそれよりも一般的な方法として、このコマンドに - オプションを追加して root に切り替えます。
- オプションなしで su コマンドを実行すると、ただ単にユーザーが root
に切り替わるだけで、パスを含む環境変数は変更されません。- オプション (文字入力が好きな場合には、-l または -login と入力することもできます)
を使用すると、代替ユーザーのログイン起動ファイルが読み込まれるため、パス、環境、プロンプトなどがターゲット・ユーザーのものに設定されます。リスト 2 に、Fedora
システムでオプションを指定せずに su コマンドを実行した場合と、- オプションを指定して実行した場合の例を記載します。いずれの場合も pwd コマンド (作業ディレクトリーを出力するコマンド)
を実行してカレント作業ディレクトリーを表示していますが、プロンプトが異なる点に注意してください。プロンプトを独自のプロンプトにカスタマイズする方法、あるいはプロンプトの表示が異なる理由について深く理解するには、developerWorks の「ヒント: プロンプトの魔術」を参照してください。
リスト 2. root ユーザーへの切り替え
[ian@echidna ~]$ su Password: [root@echidna ian]# pwd /home/ian [root@echidna ian]# su - [root@echidna ~]# pwd /root |
お気付きかもしれませんが、root に切り替えるにはもちろんパスワードを入力しなければなりません。root 権限を取得した後は、su または su - を使用して別のユーザーに切り替えることも、login
オプションを使って root に切り替えることもできます。非 root ユーザーに切り替えるには、該当する ID を追加するだけの話です。前と同じく、- オプションは必要に応じて使用しても、使用しなくても構いません。以下は、その一例です。
su - db2inst1
前の ID に戻るには、Ctrl+d を押します。または、ほとんどの Linux システムでデフォルトとなっている
bash シェルを使用している場合には、「exit」と入力して Enter キーを押します。
su の使用方法を学んだところで、fdisk コマンドを使って実践してみましょう。
リスト 3. su を使用して fdisk コマンドを実行する
[ian@echidna ~]$ fdisk /dev/sda Unable to open /dev/sda [ian@echidna ~]$ su - Password: [root@echidna ~]# fdisk /dev/sda Command (m for help): m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) Command (m for help): q [root@echidna ~]# exit logout [ian@echidna ~]$ |
su コマンドと同様に、sudo
コマンドを使用することによって、別のユーザーの権限でコマンドを実行することができます。特定のユーザーまたはユーザーのクラスが実行できるコマンドは、/etc/sudoers
ファイルに記載されています。sudo コマンドの場合、su
コマンドとは対照的に root や他のユーザーのパスワードを知っている必要はありません。ただし、自分のパスワードを入力する必要があります。root によって管理される
/etc/sudoers ファイルは、visudo コマンドを使用して編集することができます。
一般に、複数の sudo
コマンドを立て続けに実行する場合、毎回パスワードを再入力する必要はありません。代わりに、-s
オプションを指定して sudo を実行するという方法があります。この方法を使用すると、シェルが実行されるので、シェルを閉じるまでは、ターゲット・ユーザーとしてシェルから多数のコマンドを実行することができます。リスト 4 に、このオプションを指定する場合と指定しない場合のコマンドの使用方法を記載します。
リスト 4. Ubuntu で sudo コマンドを使用する
ian@pinguino:~$ fdisk /dev/sda
Unable to open /dev/sda
ian@pinguino:~$ sudo fdisk /dev/sda
[sudo] password for ian:
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): p
Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x54085408
Device Boot Start End Blocks Id System
/dev/sda1 * 1 2611 20972826 7 HPFS/NTFS
/dev/sda2 2612 2624 104422+ 83 Linux
/dev/sda3 2625 14593 96140962 5 Extended
/dev/sda5 2625 2689 522081 82 Linux swap / Solaris
/dev/sda6 2690 5180 20008926 83 Linux
/dev/sda7 5181 9341 33423201 83 Linux
/dev/sda8 9342 14593 42186658+ 83 Linux
Command (m for help): q
ian@pinguino:~$ sudo -s
root@pinguino:~# fdisk /dev/sda
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): q
root@pinguino:~# exit
ian@pinguino:~$
|
sudoers ファイルで権限が与えられていないユーザーは、リスト 5 のようなエラー・メッセージを受け取ることになります。
リスト 5. 権限なしで sudo を使用しようとした場合
[ian@echidna ~]$ sudo fdisk /dev/sda [sudo] password for ian: ian is not in the sudoers file. This incident will be reported. |
お気付きかもしれませんが、前のセクションの su コマンドの説明では出力をターミナル・ウィンドウに表示するコマンドしか実行しませんでしたが、通常は GUI コマンドも実行できるようになります。例えば、一部のインストール・プログラムは、root 権限だけでなく GUI インストーラーもなければ、プログラムをインストールすることはできません。GUI アプリケーションを別のユーザーとして起動できないとしたら、この先の説明を読んでください。ディストリビューションによっては、別のユーザーとして GUI アプリケーションを実行するために、追加のステップが必要になります。
注: 最近のディストリビューションでは、一度に複数のデスクトップを開いておいて、Ctrl+Alt+F7 や Ctrl+Alt+F8 などのキー・シーケンスでデスクトップを切り替えられることも珍しくありません。必要な作業によっては、これが代替手段となる場合もあります。このメニュー・オプションについて詳しくは、「ログアウト」セクションを参照してください。
Linux での GUI アプリケーションが使用する X Window System は、複数のユーザーがウィンドウ表示のアプリケーションを使用して、ネットワークを通じてコンピューターにアクセスできるように設計されたクライアント・サーバー・システムです。それぞれの X ディスプレイは、[ホスト名]:[ディスプレイ番号].[スクリーン番号] という形式の名前を持ちます。PC などのワークステーション上で実行されている Linux の場合、通常はスクリーンを 1 つ持つディスプレイが 1 つだけあります。この場合、ディスプレイ名は省略されるのが通常なので、ディスプレイの名前は :0.0、あるいは単に :0 となります。
X Window System サーバーはディスプレイの情報を必要とするだけでなく、サーバーへの接続がユーザーに許可されているかどうかも知る必要があります。一般に、接続の許可は MIT-MAGIC-COOKIE-1 を使用して行われます。これは、サーバーがリセットされるたびにランダムに再生成される長いランダム・ストリングです。アプリケーションがこの情報を X サーバーに渡せるように、ユーザーの環境では DISPLAY 変数と XAUTHORITY 変数が設定されます。XAUTHORITY 変数が指すファイルは、セキュリティー対策として、そのファイルを所有するユーザーしか読み取り、書き込みを行えません。ここでの説明では、このファイルを読み取る場合にはグラフィカル・ログインを使用することを前提とします。したがって、起動ファイルにはこれらの変数が自動的に設定されていることになります。リスト 6 に記載する Ubuntu システムでのコードの例には、DISPLAY 変数と XAUTHORITY 変数の値、そして XAUTHORITY 変数が指すファイルの所有権が示されています。
リスト 6. DISPLAY および XAUTHORITY 変数の値
ian@pinguino:~$ echo $DISPLAY :0.0 ian@pinguino:~$ echo $XAUTHORITY /var/run/gdm/auth-for-ian-WoeKHn/database ian@pinguino:~$ ls -l $XAUTHORITY -rw------- 1 ian ian 53 2011-04-01 16:24 /var/run/gdm/auth-for-ian-WoeKHn/database |
試しに、同じく Ubuntu システムで sudo を使ってユーザー editor として xclock コマンドを実行してみます。リスト 7 に示されているように、DISPLAY 変数と XAUTHORITY 変数の値はユーザー
ian に設定された値と同じですが、xclock コマンドは失敗します。
リスト 7. sudo を使用して表示する DISPLAY および XAUTHORITY 変数の値
ian@pinguino:~$ sudo -u editor echo $DISPLAY [sudo] password for ian: :0.0 ian@pinguino:~$ sudo -u editor echo $XAUTHORITY /var/run/gdm/auth-for-ian-WoeKHn/database ian@pinguino:~$ sudo -u editor xclock No protocol specified Error: Can't open display: :0.0 |
上記の例では、ユーザー editor の XAUTHORITY 変数は
/var/run/gdm/auth-for-ian-WoeKHn/database に設定されていますが、そのファイルでのパーミッションで許可されるのは、ユーザー
ian によるファイルの読み取りまたは書き込み操作だけです。XAUTHORITY
変数が指すファイルの読み取り操作をユーザー editor が実行できない場合、この変数を設定することもできません。この問題の対処方法を検討する前に、ユーザー ian の DISPLAY 変数または XAUTHORITY
変数のいずれかの設定を削除するとどうなるかを見てみましょう。それには、env
コマンドの -u オプションを使って環境変数を指定してから xclock
コマンドを実行します。こうすると、環境変数の設定が削除された状態で xclock コマンドが実行されます。結果はリスト 8 のとおりです。
リスト 8. DISPLAY および XAUTHORITY 変数の値を削除する
ian@pinguino:~$ env -u DISPLAY xclock Error: Can't open display: ian@pinguino:~$ env -u XAUTHORITY xclock |
意外な結果かもしれませんが、XAUTHORITY 環境変数の値を削除した場合でも、xclock コマンドは実行されます。
ここまでで MIT-MAGIC-COOKIE-1 のセキュリティー対策については説明しましたが、トークンが提供されていない場合には、X
サーバーは接続が許可されたホストのリストもチェックします。このリストを表示または更新するには、xhost
コマンドを使用します。エントリーを追加するには + オプションを指定し、エントリーを削除するには - オプションを指定します。特殊なファミリー・エントリー local:
(「:」が付いていることに注意)
を使用すると、システム上の任意のローカル・ユーザーがディスプレイにアクセスできるようになります。このシステムは単一ユーザー・システムなので、su によって任意の非 root
ユーザーに切り替えれば、xclock やその他の X アプリケーションを起動できるようになるということです。リスト 9
に、xhost コマンドの使用方法を示します。
リスト 9. xhost を使用する
ian@pinguino:~$ xhost access control enabled, only authorized clients can connect SI:localuser:ian ian@pinguino:~$ xhost +local: non-network local connections being added to access control list ian@pinguino:~$ xhost access control enabled, only authorized clients can connect LOCAL: SI:localuser:ian ian@pinguino:~$ sudo -u editor xclock ian@pinguino:~$ # Close the xclock window to return here ian@pinguino:~$ xhost -local: non-network local connections being removed from access control list ian@pinguino:~$ xhost access control enabled, only authorized clients can connect SI:localuser:ian |
単一ユーザー・システムでは、すべてのローカル・ユーザーがディスプレイを使用できるようにすることが、通常はシンプルかつ妥当な設定です。制限を強化する必要がある場合には、xauth を使用して XAUTHORITY ファイルから cookie を抽出し、その cookie をディスプレイにアクセスする必要があるユーザーに渡します。リスト 10 では以下のタスクを実行します。
- ユーザー
ianとしてxauthを実行し、対象とする他のユーザーに E メールやその他の手段で送信できる形式で cookie を表示します。 sudo -sを実行してユーザーeditorに切り替え、いくつかのコマンドを実行します。xauthを実行して新しい許可ファイルを作成します。echoを使用してデータを stdin にパイプすると同時に、行の末尾にバックスラッシュ (\) を使用してコマンドを複数の行に分割していることに注意してください。- XAUTHORITY 変数に新規の値をエクスポートして、この変数が新しく作成された許可ファイルを指すようにします。
- 最後に、アンパサンド (&) を末尾に追加した xclock コマンドを実行し、このコマンドをバックグラウンドで実行することでターミナル・ウィンドウの制御を維持します。
リスト 10. xauth を使用する
ian@pinguino:~$ xauth -f $XAUTHORITY nextract - :0 0100 0008 70696e6775696e6f 0001 30 0012 4d49542d4d414749432d434f4f4b49452d31 0010 3c4bc87 c2ce4ce5e97f8199c213b4ec9 ian@pinguino:~$ sudo -s -u editor editor@pinguino:~$ echo "0100 0008 70696e6775696e6f 0001 30 0012"\ > " 4d49542d4d414749432d434f4f4b49452d31"\ > " 0010 3c4bc87c2ce4ce5e97f8199c213b4ec9" | > xauth -f ~editor/temp-xauth nmerge - xauth: creating new authority file /home/editor/temp-xauth editor@pinguino:~$ export XAUTHORITY=~editor/temp-xauth editor@pinguino:~$ xclock& [1] 4827 |
この簡単な説明を元に、X アプリケーションを別のユーザーとして実行できるようになるはずです。ここでは Ubuntu
を例として使用しましたが、説明した基本原則はすべてのディストリビューションに当てはまります。xauth および
xhost コマンドの使用方法についての詳細は、以下のいずれかのコマンドを使用して、該当するオンライン・マニュアル・ページを表示してくさい。
info xauthman xauthinfo xhostman xhost
Linux および UNIX システムでは、すべてのファイルには、/ をルートとする 1 つの大きなツリー構造のファイルシステムの構成要素としてアクセスします。CD-ROM 上のファイルにアクセスするには、CD-ROM デバイスをファイル・ツリー内のマウント・ポイントにマウントする必要があります。現行のディストリビューションでは、このマウント・プロセスが自動化されているのが通常なので、ディスクを挿入すると自動的にディスクが認識されてマウントされます。データが失われないようにするには、マウントしたデバイスを適切にアンマウントすることが重要です。
CD または DVD ディスクを SUSE 11.3 システムに挿入するか、USB ドライブを接続すると、図 21 のようなポップアップ・ウィンドウが表示されます。このウィンドウに気付かずに、ウィンドウが閉じてしまった場合には、図の左上に示してあるパネル・アイコンを使って、もう一度そのウィンドウを開くことができます。このアイコンにマウスを重ねると、デバイスがまだマウントされていないことを示すツールチップが表示されます。
図 21. CD または DVD が SUSE システムに搭載されたときのポップアップ
画像の右側にあるプラグ・アイコンにマウスを重ねると、「Click to access this device from other applications (このデバイスに別のアプリケーションからアクセスするには、ここをクリックしてください)」という内容のツールチップが表示されます。「4 actions for this device (このデバイスに対する 4 つのアクション)」というテキストにマウスを重ねると、画像が図 22 のように展開されます。そこに表示される実行可能なアクションは、システムにどんなソフトウェア・パッケージがインストールされているかによって異なります。
図 22. CD または DVD に対して実行可能なアクション
「Open with File Manager (ファイル・マネージャーで開く)」の項目をクリックすると、図 23 のようなウィンドウが表示されます。このウィンドウから、DVD をナビゲートしたり、ファイルを開いたり、アプリケーションを実行したりすることができます。ウィンドウの項目にマウスを重ねると、ウィンドウの右側の部分に説明が表示されます。
図 23. SUSE のファイル・マネージャー
Ubuntu およびFedora システムでのディスク挿入時のデフォルト・アクションは多少異なり、通常は図 24 に示すようなアイコンがデスクトップに表示されます。それと同時に、ファイル・マネージャー (Nautilus) も自動的に開くはずです。自動的に開かない場合には、アイコンをダブルクリックするとファイル・マネージャーが開きます。使用しているシステムによっては、autorun ファイルをディスクのルートで実行するかどうかを尋ねるプロンプトが出される場合もあります。
図 24. Ubuntu で CD を挿入した場合
別のアプリケーション (OpenSUSE)
からデバイスにアクセスすることを選択した場合、または任意のディストリビューションで、ファイル・マネージャーや別のアプリケーションを使用してデバイスを開いた場合には、デバイスは自動的にマウントされます。ディスクがマウントされるのは通常
/media ディレクトリーで、マウント・ポイントとしてはおそらくディスク・ラベルが使用されます。これを確認するには、ターミナル・ウィンドウを開いて、mount コマンドを実行します。リスト 11 は、OpenSUSE システムでこのコマンドを使用する例です。他のシステムで使用する場合もほとんど同じですが、マウントのオプションについては多少の違いがあります。
リスト 11. mount コマンドを使用する
ian@lyrebird:~> mount /dev/sdb12 on / type ext4 (rw,acl,user_xattr) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) ... /dev/sr0 on /media/openSUSE-DVD-x86_64.0702..001 type iso9660 (ro,nosuid,nodev,uid=1000, utf8) |
この例では、ディスクは /media/openSUSE-DVD-x86_64.0702..001 にマウントされているので、この場所でディスクを調べることも、ターミナル・ウィンドウからディスク上のディレクトリーに変更することもできます。CD/DVD デバイスが /dev/sr0 としてマウントされていることに注意してください。Linux システムでは、デバイスもファイルシステム・ツリーに表示されます。別の言い方をすれば、デバイス /dev/sr0 内のメディア上にあるファイルシステムには、マウント・ポイント /media/openSUSE-DVD-x86_64.0702..001 を起点とするアプリケーションがアクセスできるということです。デバイスのマウント方法について詳しく学ぶには、developerWorks の記事「Linux の 101 試験対策: ファイルシステムのマウント、アンマウントの制御」を参照してください。
DVD または CD がマウントされると、そのディスク上のファイルをファイルシステムの新しい構成要素として使用できるようになります。CD-ROM がマウントされている間、Linux は CD にロックを掛けるため、イジェクト・ボタンを押しても CD を取り出せません。けれども、だからといって外部 CD ドライブや USB ドライブを取り外したり、USB スティックを USB ソケットから引き抜いたり、フロッピー・ディスクを取り出したりすることができないわけではありません。データ損失を防ぐには、常にデバイスをアンマウントしてから安全に取り出す必要があります。
デバイスは、グラフィカル・デスクトップまたはコマンドラインからアンマウントすることができます。デバイスをアンマウントするためのコマンドは umount (unmount の「n」がないことに注意) です。eject
コマンドは、最初にデバイスをアンマウントしてから、例えば CD トレイを開くなどしてイジェクトを試みます。従来、デバイスをマウントおよびアンマウントするには root
権限が必要でしたが、最近ではユーザーにもマウント操作が許可されることが一般的になってきています。その場合、非 root ユーザーでもデバイスをマウント、アンマウントすることができます。リスト 11 で、オプション uid=1000 が使用されていたことにお気付きでしょうか。uid 1000 は、このシステムでのユーザー ian に相当します (リスト 12 を参照)。
リスト 12. id コマンドによる現行ユーザーの確認
iian@lyrebird:~> id uid=1000(ian) gid=100(users) groups=33(video),100(users) |
グラフィカル・デスクトップ・ツールを使用してデバイスをアンマウントするときに注意しなければならないのは、ログアウトしてから別のユーザーとしてログインした場合の id だけです。これから、グラフィカル・ツール、コマンドラインのツールの順にアンマウント方法を調べていきます。
Ubuntu または Fedora では、リムーバブル・メディアのアイコンを右クリックすると、図 25 のようなコンテキスト・メニューが表示されます。このメニューに、デバイスのアンマウントまたはイジェクトのいずれかのオプションがあるはずです。CD または DVD のイジェクト・オプションを選択するとデバイスがアンマウントされ、アイコンがデスクトップから消えてトレイが開きます。USB ドライブの場合のオプションは、イジェクトではなくアンマウントとなります。USB ドライブがアンマウントされた後、安全にこのデバイスを引き抜くことができます。複数のパーティションに区切られた外部ハード・ディスクを使用しているとしたら、すべてのパーティションがアンマウントされたことを確認してから、デバイスを取り除くか、電源をオフにする必要があります。
図 25. SUSE のファイル・マネージャー
図 26 に、USB ドライブと前に使用した DVD が接続された OpenSUSE システムを示します。このシステムにマウントされているのは、DVD とハードディスク・ドライブの 1 つのパーティションです。OpenSUSE はマウントされたデバイスとアンマウントされたデバイスとを区別するために、プラグ・アイコン (デバイスがマウントされていない状態) をイジェクト・ボタン (デバイスがマウントされた状態) に変更します。また、デバイス・アイコンの左下にある小さな四角形でも、内側の斜めの線がアスタリスクに変わります。書き込み可能なメディア (この例でのハードディスク・ドライブなど) の場合には、使用可能なスペースも表示されます。
図 26. OpenSUSE のファイル・マネージャー
マウントされたドライブは、イジェクト・ボタン (上の図の 2006R1 パーティションに示されているボタン) をクリックするだけで、アンマウントまたはイジェクトすることができます。CD や DVD などのデバイスをイジェクトすると、トレイが開くか、または同様の物理的な切断が行われた後、そのデバイスが接続済みデバイスのリストから削除されます。
コマンドラインからの安全なデバイスの取り外し
前述の umount および eject
コマンドについて、今度はその使用方法を説明します。この 2 つに加え、知っておくと役立つ lsof コマンドについても説明します。これらのコマンドに関しては、システムによってある程度の違いがあるため、ここで説明する内容とまったく同じではない場合があることを心構えておいてください。
まず始めに、リスト 13 に Ubuntu システムで unmount コマンドを使用して CD
をアンマウントする例を記載します。このコードでは最初に grep で mount
の出力をフィルタリングし、「media」(リムーバブル・ディスクの一般的なマウント・ポイント) が含まれるエントリーだけを表示します。次に、デバイスのマウント・ポイント
(/media/Ubuntu 10.10 i386) を指定して umount
を実行して、デバイスをアンマウントします。最後に、mount と grep
によるフィルタリングをもう一度実行し、デバイスがマウントされていない状態になっていることを確認します。umount への引数には、マウント・ポイントとデバイス名 (この例の場合、/dev/sr0) のどちらも使用できることに注意してください。
リスト 13. コマンドラインから Ubuntu 上の CD をアンマウントする
ian@pinguino:~$ mount | grep media /dev/sr0 on /media/Ubuntu 10.10 i386 type iso9660 (ro,nosuid,nodev,uhelper=udisks, uid=1000,gid=1000,iocharset=utf8,mode=0400,dmode=0500) ian@pinguino:~$ umount /media/Ubuntu\ 10.10\ i386 ian@pinguino:~$ mount | grep media |
このように、Ubuntu では自動的にマウントされたドライブを、コマンドラインを使用してアンマウントすることができます。上記のシナリオを今度は OpenSUSE 11.3 に適用してみると、リスト 14 のような結果になるはずです。
リスト 14. コマンドラインから OpenSUSE 上の CD をアンマウントする (1)
ian@lyrebird:~> mount | grep media /dev/sr0 on /media/openSUSE-DVD-x86_64.0702..001 type iso9660 (ro,nosuid,nodev,uid=1000, utf8) /dev/sdc6 on /media/2006R1 type ext3 (rw,nosuid,nodev) ian@lyrebird:~> umount /media/openSUSE-DVD-x86_64.0702..001/ umount: /media/openSUSE-DVD-x86_64.0702..001 is not in the fstab (and you are not root) ian@lyrebird:~> umount /dev/sr0 umount: /dev/sr0 is not in the fstab (and you are not root) |
ときには、グラフィカル・ツールで実行できる操作と、コマンドラインで実行できると思われている操作との間に違いがある場合があります。Linux
が成熟するにつれ、このような違いは少なくなっていますが、それでもこの例のように違う点が見つかることがあります。明らかな解決策は、このチュートリアルですでに学んだように、su または sudo を使って、必要なコマンドを root
権限で実行することです。そこで、今度は su を使用して試してみます (リスト 15 を参照)。
リスト 15. コマンドラインから OpenSUSE 上の CD をアンマウントする (2)
ian@lyrebird:~> su -
Password:
lyrebird:~ # mount | grep media
/dev/sr0 on /media/openSUSE-DVD-x86_64.0702..001 type iso9660 (ro,nosuid,nodev,uid=1000,
utf8)
/dev/sdc6 on /media/2006R1 type ext3 (rw,nosuid,nodev)
lyrebird:~ # umount /dev/sdc6
lyrebird:~ # umount /media/openSUSE-DVD-x86_64.0702..001/
umount: /media/openSUSE-DVD-x86_64.0702..001: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
|
今度は正常に /dev/sdc6 をアンマウントすることができましたが、/media/openSUSE-DVD-x86_64.0702..001
についてはアンマウントすることができませんでした。Linux がこのデバイスはビジー状態であると警告したためです。eject コマンドを使ったとしても、同じようなエラー・メッセージを受け取ることになったでしょう。前に、Linux は使用中の CD
または DVD
にはロックを掛けて取り外せないようにすると説明したことを思い出してください。さらによくある事態は、他のユーザーが使用しているために、ファイルシステムをアンマウントできないような状況です。上記のエラー・メッセージに提案されているように、lsof または fuser コマンドを使用すると、アンマウントを妨げているユーザーを調べることができます。この 2 つのコマンドの一般的な使用方法をリスト 16 に記載します。
リスト 16. lsof および fuser を使用する (root として使用)
lyrebird:~ # lsof /media/openSUSE-DVD-x86_64.0702..001/ COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 3824 ian cwd DIR 11,0 2048 2048 /media/openSUSE-DVD-x86_64.0702..001/ boot lyrebird:~ # fuser -um /media/openSUSE-DVD-x86_64.0702..001/ /media/openSUSE-DVD-x86_64.0702..001: 3824c(ian) |
lsof コマンドは、開かれている実際のファイルまたはディレクトリー (この例では
/media/openSUSE-DVD-x86_64.0702..001/boot) と、そのファイルまたはディレクトリーを使用していているプロセス ID (3824)
およびユーザー ID (ian) を表示します。もう一方の fuser コマンドが表示するのは、/media/openSUSE-DVD-x86_64.0702..001 ファイルシステムを使用しているユーザー ID とプロセス ID だけです。開かれている特定のファイルやディレクトリーは表示しません。
一般に、ファイルシステムを使用している実行中のプロセスまたはウィンドウをきちんと閉じるには、上記のコマンドによる情報を使用しますが、一部の Linux
システムでは、umount コマンドに -L オプションを指定して遅延アンマウントを実行するという方法も使えます。遅延アンマウントでは、ファイルシステムがビジーでなくなると同時にファイルシステム階層からそのファイルシステムは取り外され、そのファイルシステムへのすべての参照がクリーンアップされます。OpenSUSE 11.3 ではこのオプションを使用することはできないため、ファイルシステムへの参照をクリーンアップするには、アンマウントの障害となっているプロセスを終了するか、あるいはこれらのプロセスが該当するリソースを使用していないことを確かめてから、アンマウントする必要があります。
前のリスト 14 で、OpenSUSE システムではデスクトップからマウントされたデバイスをアンマウントする際に、コマンドラインで umount を実行することはできないと説明しました。そのため、root
権限を使ってこの問題に対処しましたが、それ以外にも方法があります。それは、halmount
コマンドを使用してデバイスをアンマウントすることです。HAL (Hardware Abstraction Layer)
は、さまざまなハードウェア・デバイスに一貫したアプリケーション・インターフェースを提供します。ただし、halmount
を使用しても、ビジー状態のデバイスをアンマウントすることはできません。リスト 17 に、halmount
を使用する方法に続き、root
に切り替えて、ディスクをビジーにしているプロセスを強制終了する方法を示します。この方法でプロセスをキルするとデータの損失が発生する可能性があるため、データが失われないことが確実でない限り、この方法はお勧めしません。リスト
17 では、プロセスを強制終了した後に通常のユーザー・モードに戻り、ビジー状態でなくなったファイルシステムを halmount によってアンマウントします。そして最後に、eject を実行してトレイを開き、DVD をイジェクトします。
リスト 17. halmount、kill、そして eject を使用する
ian@lyrebird:~> halmount -u /dev/sr0 /dev/sr0: org.freedesktop.Hal.Device.Volume.Busy: umount: /media/openSUSE-DVD-x86_64.0702 ..001: device is busy. ian@lyrebird:~> lsof /dev/sr0 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 3824 ian cwd DIR 11,0 2048 2048 /media/openSUSE-DVD-x86_64.0702..001/ boot ian@lyrebird:~> su - Password: lyrebird:~ # kill -9 3824 lyrebird:~ # ps -ef | grep 3824 root 5542 5507 0 22:47 pts/2 00:00:00 grep 3824 lyrebird:~ # logout ian@lyrebird:~> halmount -u /dev/sr0 ian@lyrebird:~> eject /dev/sr0 |
Linux でのリムーバブル・メディアの使用方法について簡単に説明しましたが、この説明を参考に、データを損失することなく、リムーバブル・メディアのファイルを快適に使用できることを願っています。
ログアウト、画面のロック、シャットダウン、およびシステムの再起動は、同じメニューまたは同様のメニューからアクセスできるという点で、通常は互いに関連するタスクです。ディストリビューションが、これらのタスクに簡単にアクセスするためのクイック起動ボタンを追加することはよくあります。追加されないとしても、自分でボタンを追加する方法があります。
ログアウトするには、「Start (スタート)」 > 「Leave (終了)」の順にクリックします。すると、ログアウト、画面のロック、およびシステムのシャットダウンまたは再起動を項目として含んだメニュー (図 27 を参照) が表示されるので、適切な項目を選択します。
図 27. Red Hat Enterprise Linux 3 で追加されたログアウト・ボタン
OpenSUSE パネルの右下には、終了および画面のロック用のアイコンもあります。右側の「Leave (終了)」アイコンをクリックすると、図 28 に示すようなダイアログ・ボックスが表示されます。この場合も、適切な項目を選択してください。
図 28. OpenSUSE パネルのログアウト・アイコンを使用する
Ubuntu のログアウト機能および再起動機能には、Ubuntu の上部パネルの右端にあるパネル・アイコンからアクセスします。このアイコンは、OpenSUSE での「Leave (終了)」アイコンと似ていて、クリックすると図 29 のようなダイアログが表示されて、実行する処理を選択できるようになっています。
図 29. Ubuntu パネルのログアウト・アイコンを実行する
Fedora では、上部パネルの「System (システム)」メニュー (図 30 を参照) からログアウトおよび再起動機能にアクセスします。選択できる項目は、上記に示した OpenSUSE と Ubuntu での項目と同様です。
図 30. Fedora GNOME デスクトップからログアウトする
Fedora の場合、OpenSUSE や Ubuntu のように、ログアウト用のパネル・アイコンも、画面ロック用のパネル・アイコンもインストールされません。その一方、独自にボタンを追加するのはごく簡単です。
まずは、パネルの空白の部分を右クリックします。表示されるコンテキスト・メニューから「Add to Panel... (パネルに追加)」を選択すると、パネルに追加できる項目のリストが表示されます。「Log Out (ログアウト)」項目までスクロール・ダウンして、これをクリックすると、パネルにログアウト・ボタンが追加されます。画面ロック・アイコンについても、同じようにして追加することができます。
図 31. Fedora GNOME デスクトップにログアウト・ボタンを追加する
上記の操作で、ログアウト・アイコンがパネルに追加されます。
リストに表示されていないアプリケーションを「Applications (アプリケーション)」メニューから起動できる場合や、そのアプリケーションを起動するためのメニュー項目を開ける場合には、その項目のところで右クリックしてコンテキスト・メニューを開きます。すると、そのコンテキスト・メニューに、パネルまたはデスクトップにランチャーを追加するための項目が含まれているはずです。
場合によっては、システムの新しいユーザーとそのユーザーの新しいグループを定義しなければならないことがあります。例えば、mqm という名前のユーザーと、同じく mqm という名前のグループを定義しなければならないことや (さらに、WebSphere Application Server の組み込みメッセージング・コンポーネントをインストールする際に、mqbrkrs という別のグループを定義しなければならないこと)、データベースを管理するユーザーを作成しなければならないことが考えられます。
ユーザーを作成する際にユーザー番号を指定しない場合、通常はグラフィカル・ツールによって次に使用可能なユーザー番号が割り当てられます。Fedora システムと Red Hat システムの場合、ユーザー番号は 500 から始まるので、システムをインストールしたときに作成したユーザーは、ユーザー 500 となっているはずです。OpenSUSE と Ubuntu では、ユーザー番号は 1000 から始まります。私と同じようにいくつかのシステムで同じ ID を使用している場合、各システムで同じ ID およびグループ番号を使用すると都合が良いと思います。
このセクションでは説明のために、ユーザー ID 2000 とグループ 2000 を設定した testuser
という名前のユーザーを追加します。通常は、最初にグループを定義してから、そのグループを使用するユーザーを定義するので、ここでもこの順番で定義します。この定義は、ユーザー管理用のグラフィカル・ツールを使用して行うことも、ターミナル・ウィンドウでコマンドを入力して行うこともできます。ここでは、OpenSUSE のシステム管理ツールを使用したグラフィカル・プロセスを概説します。その後、Fedora または Ubuntu
システムで、これに相当するツールが置かれている場所を説明します。最後に、この作業をどうしてもコマンドラインから実行しなければならない場合に使用するコマンドについて説明します。
KDE を使用した OpenSUSE システムでは、まず「Start (スタート)」 > 「System (システム)」の順にナビゲートして YaST2 (Yet Another System Tool 2) コントロールセンターにアクセスし、次に「System (システム)」を選択して「Administrator Settings (管理者設定)」までスクロール・ダウンします (図 32 を参照)。
図 32. YaST2 コントロールセンター
このアプリケーションを開き、左側パネルの「Security and users (セキュリティとユーザ)」をクリックして、メイン・パネルにタスクを表示します (図 33 を参照)。
図 33. YaST2 コントロールセンター
「User and Group Management (ユーザとグループの管理)」を選択します。最近 root 権限を利用していない場合は、root のパスワードの入力を求めるプロンプトが出されます。次の画面には、既存のユーザーが表示されます。「Groups (グループ)」タブを選択すると、図 34 のような内容が表示されます。
図 34. YaST2 コントロールセンターでのグループ・リスト
新規グループを追加するには、「Add (追加)」ボタンをクリックします。すると、図 35 のような画面が表示されます。システムのインストール時に、いくつものグループが作成されていることに注意してください。「Group Name (グループ名)」として「testuser」と入力し、「Group ID (グループ ID)」として「2000」と入力したら、「OK」をクリックして図 34 のグループ・リストの表示に戻り、新しいグループがリストに含まれていることを確認します。この時点では、新規グループはまだシステムに保存されていないため、ここで操作をキャンセルすると、この新規グループが失われることになります。
図 35. YaST2 コントロールセンターでグループを追加する
続いて「Users (ユーザ)」タブをクリックしてユーザーのリストを再表示し、「Add (追加)」をクリックして新規ユーザーを追加する作業に移ります。「User's Full Name (ユーザのフルネーム)」には「Test User」と入力し、「User Name (ユーザ名)」に「testuser」と入力した後、このユーザーの初期パスワードを入力し、確認のために再入力します。図 36 を参照してください。
図 36. YaST2 コントロールセンターでのユーザーの追加
「Details (詳細)」タブをクリックして、「User ID (uid) (ユーザ ID (uid))」に「2000」と入力し、「Default Group (デフォルトグループ)」のドロップダウン・メニューから「testuser」を選択します。このパネルでは、デフォルトのホーム・ディレクトリー、デフォルトのログイン・シェルなどを変更することができます。さらに、このユーザーをメンバーとして加える他のグループを選択することもできます。作業が完了したら、「OK」をクリックしてユーザーのリストに戻ります。リストには、新しいユーザーが表示されているはずです。「OK」をクリックすると、YaST がすべての変更内容を処理してシステムに保存します。
図 37. YaST2 コントロールセンターでのユーザーの詳細
Fedora または Ubuntu システムにユーザーとグループを追加する
Fedora や Ubuntu などの GNOME システムでユーザー管理を開始するには、「System (システム)」 > 「Administration (管理)」 > 「Users and Groups (ユーザーとグループ)」メニューを選択します (図 38 を参照)。
図 38. GNOME でユーザーとグループの管理を開始する
「Users and Groups (ユーザーとグループ)」を選択すると表示される管理用のダイアログは、Fedora と Ubuntu では異なります。Fedora は
system-config-users アプリケーションを起動する一方、Ubuntu は users-admin アプリケーションを起動します。ここでは、Fedora でユーザーとグループを追加する方法を説明し、後で Ubuntu の場合に Fedora と異なる点を簡単に説明します。
root としてログインしていない場合や最近 root として認証されていない場合には、プロンプトに応じて root パスワードを提供する必要があります。すると、「Users (ユーザー)」タブが開いた状態で「User Manager (ユーザー管理)」画面が表示されます (図 39 を参照)。デフォルトでこの画面に表示されるのは、一般のユーザーとグループだけです。システム・ユーザーとシステム・グループを表示するには、「Edit (編集)」 > 「Preferences (設定)」の順に選択して、「Hide system users and groups (システムユーザーとシステムグループを隠す)」チェック・ボックスのチェック・マークを外してください。
図 39. Fedora の User Manager
OpenSUSE システムで行ったのと同じように、最初にグループを定義することもできますが、Fedora の User Manager
には、あるユーザー専用のグループを作成し、ユーザー名と同じ名前のグループ名にすることができる便利な機能があります。「Add User
(ユーザーの追加)」ボタンをクリックして、前に OpenSUSE で入力したのと同じ testuser
ユーザーの詳細を入力します。ただし、今回は「Specify user ID manually (ユーザー ID
を手動で指定)」と「Specify group ID manually (グループ ID を手動で指定)」の各チェック・ボックスにチェック・マークを付けて、両方の値として「2000」を入力します。最終的に、画面は図 40 のようになっているはずです。
図 40. Fedora でユーザーを追加する
「OK」をクリックすると、User Manager に戻ります。OpenSUSE の場合とは異なり、新規ユーザーはすでにシステムに追加されています。さらに他のグループを追加する必要がある場合には、「Add Group (グループの追加)」をクリックして追加します。他のグループにユーザーをメンバーとして追加するには、グループを選択してグループのプロパティーでユーザーを追加するという方法、ユーザーを選択してユーザーのプロパティーでグループを追加するという方法のいずれかを選べます。プロパティーでの作業が完了したら、「OK」をクリックして「User Manager (ユーザー管理)」画面に戻り、「File (ファイル)」 > 「Quit (終了)」の順に選択して終了します。
Ubuntu のユーザー・マネージャー
OpenSUSE および Fedora でユーザーを追加する方法について説明したので、Ubuntu でのプロセスにも対応できるはずです。一般に、Ubuntu
はユーザーの追加プロセスを通じて、デフォルトの ID とグループを使ってユーザーをセットアップします。このプロセスに従って testuser を追加すると、画面は最終的に図 41 のようになります。
図 41. Ubuntu でのユーザー管理
今度は、「Manage Groups (グループの管理)」ボタンを使用して新規グループを追加する必要があります
(あるいは、ユーザーを追加する前にグループを追加しておくこともできます)。testuser グループを追加したら、図 41 の画面に戻ってください。この画面で
testuser を選択して「Advanced (高度な設定)」ボタンをクリックし、ID番号とユーザーのプライマリー・グループの両方を変更します。
ユーザーとグループは、コマンドラインから追加または変更することができます。これらのタスクには、root 権限が必要です。
グループに関する情報は、/etc/group にフラット・ファイルとして保存されます。新規グループを追加するには、groupadd
コマンドを使用することができます。グループを追加するのはかなり単純な作業ですが、新規ユーザーを追加する作業は、パラメーターの数が増えるため少し複雑になってきます。また、ユーザーの所属グループの番号も必要です。一例として、groupadd コマンドを使用してグループ ID を 2000 に設定した testuser グループを追加した後、grep コマンドで /etc/group
を検索し、グループの設定を確認する方法を以下に示します。注: グループ ID を指定しない場合、システムによって、既に割り当てられているグループ ID よりも 1 だけ大きい ID が割り当てられます。
root@pinguino:~# groupadd -g 2000 testuser root@pinguino:~# grep testuser /etc/group testuser:x:2000: |
上記に示されているように、testuser グループのグループ ID は 2000 です。次に、useradd コマンドを使用して、testuser
ユーザーを追加します。-c
オプションを使用して、コメントを指定することができます。この場合のコメントはユーザーの実名であるのが通常です。-u オプションを使用してユーザーの数値 ID (2000)
を指定し、-d オプションを使用してユーザーのホーム・ディレクトリーを指定します。-g
オプションは、ユーザーのプライマリー・グループを指定します。この例では、先ほど作成した testuser
グループとして 2000 を使用します。最後に使用している -G
オプションは、このユーザーに他のグループを指定するためのものです。このオプションではグループ名を使用することができます。この例では、testuser をグループ ian に追加します。
ユーザーを追加した後は、同じく grep コマンドを使用することで、ユーザー testuser が testuser グループと ian
グループに追加されたことを確認できます。新規ユーザーの作成はこれで完了ですが、このユーザーにはパスワードが設定されていないため、システムにログインすることができません。ユーザーのなかには、ログインする必要のないユーザーもいます。そのようなユーザーにはパスワードがなくても問題ありませんが、そうではない場合、他のユーザーのパスワードを設定
(または再設定) する権限は root ユーザーにあります。パスワードを設定するには、passwd コマンドを使用し、ユーザー名をパラメーターとして渡します。表示される内容に従って新しいパスワードを入力すると、続いて確認のためにパスワードを再入力するように促されます。
root@pinguino:~# useradd -c"Test User" -u 2000 -d/home/testuser -g 2000 -G ian \ > testuser root@pinguino:~# grep testuser /etc/group ian:x:1000:testuser testuser:x:2000: root@pinguino:~# passwd testuser Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully |
ユーザーを既存のグループに追加しなければならない場合もあります。それには usermod コマンドを使用することができますが、その場合、グループのリストを置き換えることになるため、既存のグループのユーザー・リストが必要になります。それよりも簡単な方法は、/etc/group を直接編集することです。編集を誤った場合に備え、まずはこのファイルのバックアップ・コピーを作成しておいてください。例えば ian グループと testuser グループの両方にユーザー editor を追加するには、/etc/group を編集して、ian および testuser の行を以下のように変更します。
ian:x:1000:testuser,editor testuser:x:2000:editor |
ユーザー情報のほとんどは /etc/passwd に保存されますが、このファイルを自分で編集することは避けてください。代わりに、useradd、usermod、userdel コマンドなどを使用して編集します。正規のシステム管理者ではないとしたら、たまに行うユーザーとグループの操作には、グラフィカル・インターフェースを使用したほうが簡単です。
学ぶために
- 高度な Linux 開発タスクについて参考にするには、developerWorks
の LPIC-1 ロードマップを調べてください。このロードマップから、2009年4月の時点での目標に基づく LPIC-1 認証の試験対策に役立つ数々の developerWorks 記事にアクセスできます。
- 「プロンプトの魔術」(developerWorks、2000年)
を読んで、独自のプロンプトをカスタマイズしてください。
- 「Linux
101 試験対策: ファイルシステムのマウント、アンマウントの制御」(developerWorks、2010年10月) で、デバイスのマウント方法について詳しく学んでください。
- developerWorks Linux ゾーンで、Linux
開発者および管理者向けのハウツー記事とチュートリアル、そしてダウンロード、ディスカッション、フォーラムなど、豊富に揃った資料を探してください。
- さまざまな IBM 製品および IT 業界についての話題に絞った developerWorks
の Technical events and webcasts で時代の流れをキャッチしてください。
- 無料の
developerWorks Live! briefing に参加して、IBM の製品およびツール、そして IT 業界の傾向を素早く学んでください。
- developerWorks の
on-demand demos で、初心者向けの製品のインストールとセットアップから、熟練開発者向けの高度な機能に至るまで、さまざまに揃ったデモを見てください。
- Twitter で developerWorks をフォローするか、developerWorks
で Linux に関するツイートのフィードに登録してください。
製品や技術を入手するために
- ご自分に最適な方法で IBM
製品を評価してください。評価の方法としては、製品の試用版をダウンロードすることも、オンラインで製品を試してみることも、クラウド環境で製品を使用することもできます。また、SOA Sandbox では、数時間でサービス指向アーキテクチャーの実装方法を効率的に学ぶことができます。
議論するために
- My developerWorks コミュニティーに加わってください。ここでは他の developerWorks ユーザーとのつながりを持てる他、開発者が主導するブログ、フォーラム、グループ、ウィキを調べることができます。

Ian Shields は、developerWorks Linux ゾーンのさまざまな Linux プロジェクトに関わっています。彼はノースキャロライナ州 Research Triangle Park にある IBM のシニア・プログラマーです。1973年にオーストラリアのキャンベラでシステム・エンジニアとして IBM に入社して以来、カナダのモントリオールやノースキャロライナ州 Research Triangle Park で、コミュニケーション・システムやパーベイシブ・コンピューティングに携わってきました。彼はいくつかの特許を保持しています。Australian National University にて純粋数学および哲学で学位を取得し、また North Carolina State University にてコンピューター・サイエンスで修士号と博士号を取得しています。