Linuxを使うために必要な一連の手続き,例えばログイン,シェルの操作,X Window Systemの起動,などを解説しながら,LinuxがUNIXから引き継いだ機能や操作方法がどのようなものであるのかを明らかにする。UNIXは本来,サーバーやワークステーションのOSとして発展してきた。そのため,マルチユーザーやネットワーク環境での利用が前提になっており,そうした特徴はLinuxにも引き継がれている。

 Linuxは,だれでも自由に使えるフリーのUNIXライクなOSをパソコン向けに提供することを目的に,開発されたものである*1。それゆえに,Linuxの機能や操作方法はUNIXとほとんど変わらない。従って,Linuxについて正しく理解するには,UNIXの知識をある程度持つことが不可欠である。

 UNIXは本来サーバーやワークステーション用のOSであり,スタンドアローン環境で利用した場合でも,ログインなどのように一見不必要に思われる手続きや処理を行わなければならない。このため,Windows95/98やMacintoshユーザーには異質なOSと映りがちで,そのことがUNIX系OSの敷居を高くしてしまっている面がある。

 そこで,Linuxをインストールした後の操作を一通り紹介しながら,なぜそれらの操作が必要なのかを詳しく説明する。それを理解すれば,LinuxをはじめとするUNIX系OSの原理・原則が把握でき,Linuxを分かって使いこなせるようになる。そして,分かって使いこなすことこそ,Linux活用に至る一番の近道なのである。

ログイン:マルチユーザーでの利用が前提

 Linuxを使うには,起動した際にまずログインと呼ばれる作業を行う。“login:”というプロンプトの後ろに,ユーザー名(ID)を入力して,Enterキーを押す。すると,

Password:

 というプロンプトが表示される。あらかじめ設定されたパスワードを入力すれば,そのシステムが使えるようになる。

 インストール時に特にユーザー名を設定しなかった場合は,“root”(ルート)というユーザー名を入力する。ここでも,“Password:”というプロンプトが表示されたら,root用に設定したパスワードを入力する。それによりrootというユーザーとして,システムを利用できるようになる(写真1)。

写真1●ログイン画面
写真1●ログイン画面
テキスト・モードでのログイン画面。"login:"プロンプトの後ろに,ユーザー名を入力する。

 なぜ,UNIX系OSではシステムを使う際にユーザー名/パスワードを入力して,ログインする必要があるのだろうか。それは,1台のコンピュータを複数のユーザーが利用することを前提に,UNIXが開発されたためである。1台のコンピュータのリソース,具体的にはプロセッサや主メモリー,ハード・ディスク装置などを複数のユーザーで共有するために,それらリソースの割り当てを受ける手続きであるログインという作業が必要なのだ。

 現在では,1人1台体制でパソコンを使うことが当り前になった。しかし,UNIXが生まれた1970年当時は,コンピュータがまだ高価だったため,通常は1台のコンピュータを複数人で共用していた。コンピュータが複数の端末からの処理要求を同時並行的に処理する(実際には処理時間を短い時間単位に区切り,その時間単位ごとに処理をこなしていく),タイム・シェアリング・システム(TSS)としてUNIXシステムは開発され,利用されていた。LinuxもこのUNIXの特徴を引き継いでおり,たとえ1人のユーザーだけしかシステムを使わない場合でも,ログイン作業が必要なのである。

一般ユーザーとスーパーユーザー

 UNIX系OSでは,ログインするユーザーを次の2種類に分け,それぞれで異なる扱いをする。(1)システムを利用するだけの「一般ユーザー」と,(2)システムを管理する「スーパーユーザー」である。スーパーユーザーは,“root”(ルート)あるいはルート権限保持者とも呼ばれ,ユーザー名も“root”を利用することが多い。

 一般ユーザーとスーパーユーザーでは,権限が異なる。具体的には,閲覧・編集,あるいは実行できるファイル/ディレクトリに違いがある。スーパーユーザーは,基本的にすべてのファイルやディレクトリを操作する権限を持つ。しかし,一般ユーザーは,限られたファイルやディレクトリにしかアクセスできない。例えば,スーパーユーザーなら読み書きできるシステム管理用の設定ファイルを,一般ユーザーだと編集できない。実際,UNIXにはスーパーユーザーだけしか編集できない,あるいは実行できないファイルが多数存在する。

 権限を設けているのは,誤った操作や悪意の操作によりシステムがダメージを受けないようにするため,あるいは個人専用のファイルなどを他人に盗み見されないようにするためである。たとえスーパーユーザーとしてログイン可能な場合でも,普段は一般ユーザーとしてログインしてシステムを利用し,運用・管理など必要なときだけスーパーユーザーで作業することが望ましい。そうしたことが合理的にできるよう,UNIXではログイン後に別のユーザー(スーパーユーザーを含む)の権限を持つことができる(詳細は後述)。

ユーザーやグループの管理

 システムに登録されたすべてのユーザーの情報は,“/etc/passwd”(etcディレクトリ内にあるpasswdという名称の)ファイルで管理されている(図1)。図1の中のUID,GIDはそれぞれユーザー識別子,グループ識別子と呼ばれるものである。

図1●ユーザーを管理している/etc/passwdファイルの中身
図1●ユーザーを管理している/etc/passwdファイルの中身
ユーザー名,パスワード,UID,GID,ユーザー情報(氏名など),ホーム・ディレクトリ,シェルの順番でユーザーに 関する情報が登録されている。

 ユーザーのIDは,ファイルやディレクトリなどにアクセスする権限を設定するときなどに利用される。ユーザーのIDとしてはユーザー名とUIDの2つがある。ユーザー名は人間にとって分かりやすいように設けられたIDであり,またUIDはコンピュータがユーザーを識別するための番号である。

 グループは複数のユーザーを1つのまとまりとして扱うための概念である。同じグループに属する複数のユーザーに共通の権限を与えるときなどにグループのIDが使われる。グループのIDも,人間にとって分かりやすいように設けられたグループ名と,コンピュータがグループを識別するための番号であるGIDの2つがある。各ユーザーは必ず1つ以上のグループに参加することになっている。グループ名は,“/etc/group”ファイルで管理されている(図2)。

root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
adm:x:4:root,adm,daemon
tty:x:5:
disk:x:6:root
lp:x:7:daemon,lp
mem:x:8:
kmem:x:9:
wheel:x:10:root
mail:x:12:mail
news:x:13:news
uucp:x:14:uucp
man:x:15:
games:x:20:
gopher:x:30:
dip:x:40:
ftp:x:50:
nobody:x:99:
users:x:100:
floppy:x:19:
wnn:x:101:
utmp:x:22:
xfs:x:102:
console:x:103:
gdm:x:42:
pppusers:x:230:
popusers:x:231:
slipusers:x:232:
slocate:x:21:
asou:x:500:
図2●/etc/groupファイルの中身
グループ名,パスワード,GIDが登録され,その後ろにグループ・メンバーのユーザー名が書き込まれる。

ユーザーを追加する

 インストール中にユーザー登録をしなかった場合は,そのUNIXシステムにはスーパーユーザーしか設定されていないことが多い。その場合は,一般ユーザーを登録しよう。ユーザーを登録するには,スーパーユーザーでログインし,以下のコマンドを入力すればよい。

# useradd [ユーザー名]

 ユーザー名には任意の名前を使用できる。ただし,既に登録されているユーザー名は使用できない。登録したら,前述の/etc/passwdファイル(システムに登録されたすべてのユーザーの情報を収めたファイル)を閲覧してみよう。

# less /etc/passwd

 と入力すると,passwdファイルの中身が表示される。先ほど登録したユーザー名で始まる行があるはずだ。useraddは,このpasswdファイルにユーザーの情報を書き込むコマンドにほかならない。

 ただし,この段階では登録した一般ユーザーの名前(ID)でログインすることはできない。登録したのはユーザーのIDだけで,まだパスワードが設定されていないためである。早速,パスワードを登録しよう。

# passwd [ユーザー名]

 ここでは間違いがないように,パスワードの入力を2回要求される。以上の作業が終われば,一般ユーザーのユーザー名でUNIXシステム(Linuxを搭載したPC)にログインできる。なお,登録したユーザーには,自由に使えるディスク領域として「ホーム・ディレクトリ」(詳細は後述)が与えられる。

 登録したユーザーを削除するには,userdelコマンドを使う。

# userdel -r [ユーザー名]

 のように,userdelコマンドに引数“-r”を指定する(付ける)と,そのユーザーのホーム・ディレクトリも一緒に削除される。

ユーザーを切り替える

 先ほど述べたように,普段システムを使うときにはスーパーユーザーではなく,一般ユーザーでログインするのが望ましい。しかし,アプリケーション・ソフトをインストールしている最中などにスーパーユーザーとして作業する必要に迫られることがある。

 その際は,ユーザーを切り替えてシェル(シェルについては後述する)を起動する,suコマンドを使えばよい。スーパーユーザーに切り替えたい場合には,次のように入力する。

$ su -

 引数(コマンド・オプションとも呼ばれる)の“-”は,切り替え先のユーザー(ここではスーパーユーザー)でログインしたのと同一の利用環境(例えばパス設定,起動時のディレクトリなど)にするための指定である。パスワード入力を要求するプロンプトが表示されるので,スーパーユーザーのパスワードを入力する。パスワードが正しければ,スーパーユーザーの権限(ルート権限)が与えられるので,基本的にどのようなファイルでも操作できるようになる。

 スーパーユーザーから元のユーザーに権限や利用環境を戻すには,

# exit

 と入力する。

 スーパーユーザー以外のユーザーに切り替えるときは,

$ su ユーザー名

 と入力する。このように,作業途中でユーザーを切り替えられる機能がUNIX系OSには標準で備わっている。