プロセス、アクセス制御

					2006年05月16日
コンピュータリテラシ

                                       筑波大学 電子・情報工学系
                                       コンピュータサイエンス専攻
                                       新城 靖
                                       <yas@is.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/literacy-2006/2006-05-16
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/

■連絡事項

■補足

ネットワーク・ニュース Emacs

■プロセス

説明するのは、けっこう難しい。完全な理解には、次のような勉強が必要にな る。

◆プロセスとは

プログラムがメモリに読み込まれ、CPU (processor) により実行できる状態に なったもの。 ←→プログラムは、ディスクにあってもプログラム。

「端末」を複数開くと、「シェル」のプロセスが2つ。 プログラムとしては、同じ tcsh だが、プロセスとしては別物になる。

その昔は、1度に1個のプログラムだけしかメモリに入れられなかった。 (プログラムとプロセスの違いが希薄。)

メモリにプロセスが3つ、UNIXカーネル、ハードディスク、CPU

プログラムとプロセス

◆プロセスの役割

保護の単位
(故意か過失かを問わず) 特に許可を出さない限りプロセスは他のプロセスの 影響(データ見る、データを破壊する、強制終了させる) を受けないようになっている。 あるプロセスの動作がおかしくなっても、 コンピュータ全体としては動作しつづける。
資源割当ての単位
メモリ、ディスク、プリンタ、ディスプレイ、キーボードなどコンピュータが 処理を進める上で利用価値のあるものを総称して 資源(resource) という。 複数のプロセスを動作させる時、資源が不足してきたら、ある基準で分配する。
ユーザの代理
ユーザ(人間)の代わりに、コンピュータの中に入り込み、資源を利用する。

プロセスの操作

「殺す」と「止める」は違う。 殺したプロセスは、再開できない。 止めたプロセスは、場合によっては、再開できる。

■プロセスを作る==プログラムを実行する

プログラムを実行すると、プロセスが作られる。 例:
% ls [←]

■プロセスの観察

プロセスには、ID (identifier)と属性がある。 psコマンドは、プロセスの一覧と属性を表示するコマンドである。
% ps [←]
  PID  TT  STAT      TIME COMMAND
 4641  p2  S      0:00.54 -tcsh
 4676  p2  S      0:01.25 emacs
 4790  p2  S      0:00.02 lv index.html-m4
 4650  p3  S      0:00.10 -tcsh
 4671  p3  S+     0:00.57 vin
 4782  p4  S      0:00.06 -tcsh
 4788  p4  S+     0:01.10 emacs -nw
% []
1行が1プロセスに対応。左から次のような意味を持つ。
PID プロセス識別子
プロセスを区別する番号。 これは16ビットの整数で0-65535(または0〜32767)。
TT 端末名
そのプロセスが結びつけられている端末の省略形。 たとえば、端末 /dev/ttyp3p3になる。
STAT 状態
プロセスの 状態 (STATe)。 次のようなものがある。

R (runnable)
実行可能。CPU が空いていれば実行される。
U (uninterruptible), D (Disk),
ディスク入出力などの完了を待っている。割り込み不可。
S (Sleep)、I (Idle)
キーボードや他のプロセスからの入力を待っている。
Z (Zombie)
既に終了していて、終了処理の完了を待ってる。
T (Traced)
一時的に停止しているか、デバッグの対象になっている。
TIME
CPU時間。 CPUがそのプロセスを実行するために費やした時間。
COMMAND
そのプロセスを起動した時のコマンド。 プログラムが含まれているファイルの名前の一部。

◆プロセスと端末

プロセスは、端末に関連して次のように分類される ps コマンドに x オプションを指定すると、端末と結びついていないプロセス も表示する。
% ps x [←]

◆プロセスとユーザ

プロセスには、どのユーザの資格で実行しているかという情報( UID, User Identifier )が設定されている。この資格は、通常はそのプロセスを起動した ユーザになる。psコマンドを引数なしに実行すると、自分の資格で実行してい る(端末がある)プロセスだけを表示する。他人のプロセスも表示したい時は、 psコマンドを実行するときに「a」オプションをつける。

◆プロセスと資源

psコマンドにuオプションを付けると、 プロセスに割り当てられたメモリ資源やCPU資源が表示する。
% ps u [←]
USER   PID %CPU %MEM      VSZ    RSS  TT  STAT STARTED      TIME COMMAND
yas   4641   0.0 -0.1    31832   1152  p2  S     6:22PM   0:00.54 -tcsh
yas   4650   0.0 -0.0    31832    956  p3  S     6:22PM   0:00.10 -tcsh
yas   4671   0.0 -0.2    31492   4532  p3  S+    6:23PM   0:00.59 vin
yas   4676   0.0 -0.6    52184  11624  p2  S     6:24PM   0:01.25 emacs
yas   4782   0.0 -0.0    31832    952  p4  S     6:26PM   0:00.06 -tcsh
yas   4788   0.0 -0.6    52184  11676  p4  S+    6:26PM   0:01.10 emacs -nw
yas   4790   0.0 -0.0    27916    532  p2  S     6:27PM   0:00.02 lv index.html-
% []
%CPU
過去1分間に利用した CPU 時間の割合。
%MEM
実際に消費してるメイン・メモリの大きさの割合。
VSZ (Virtual Size)
仮想記憶上のプロセスの大きさ。KB 単位。
RSS (resident set size)
実際に消費してるメイン・メモリの大きさ。
STARTED
プロセスが生成された時刻。

◆プロセスの親子関係

プロセスがある命令(システム・コール)を実行すると新しくプロセスが 生成される。 プロセスにはそのプロセスの生みの親が1個ある。 もとのプロセスを「親プロセス」とう。

親子関係により、プロセスは全体として木構造を作る。

親プロセスのプロセス識別子は、psコマンドに「l」オプションをつけると PPIDのところに表示される。

% ps l [←]
  UID   PID  PPID CPU PRI NI      VSZ    RSS WCHAN  STAT  TT       TIME COMMAND
 1013  4641  4640   0  31  0    31832   1156 -      S     p2    0:00.56 -tcsh
 1013  4676  4641   0  31  0    52220  12284 -      S+    p2    0:02.51 emacs
 1013  4801  4641   0  31  0    28468    660 -      S     p2    0:00.01 lv inde
 1013  4650  4649   0  31  0    31832    956 -      S     p3    0:00.10 -tcsh
 1013  4671  4650   0  31  0    31492   4536 -      S+    p3    0:00.86 vin
 1013  4782  4781   0  31  0    31832    948 -      S     p4    0:00.06 -tcsh
 1013  4788  4782   0  31  0    52184  11684 -      S+    p4    0:01.10 emacs -
 1013  4805  4676   0  31  0    31832   1060 -      Ss    p5    0:00.36 -bin/tc
% []

■プロセスを殺す(kill)

プロセスが自主的に終了しない時に、強制的に終了させること。

Unix では、プロセスを殺す方法は、主に次の2つ。

どちらの方法でも、裏では シグナル (ソフトウェア割込み) という仕掛けが働く。

◆キーによるプロセスの強制終了

端末で動作しているプロセスが、キーボードからキーを読み込んでいる状態の 時には、^C (Control + C) を押すと、終了できる。以下は、 cat コマンドのプロセスを^Cで強制終了している。
% cat [←]
Line 1[←]
Line 1
Line 2[←]
Line 2
^C
% []
^C と同様に ^\ (「^\」または「^¥」) もプロセスを強制終了させるキーで ある。^\ は、^Cが利かないときでも利くことがある。

^\ の場合、デバッグ用にcore という名前のファイル ができる。普段は、core ファイルは不要なので、^C を使うべ きである。

coins の環境では、core ファイルが作られないように設定されている。 core ファイルの利用方法は、デバッガ gdb のマニュアル、 man core (core ファイルの man ページ(man コマンドで表示されるページ))、 Unix Super Text 下巻 「第60章 デバッグの方法」を参照。

stty コマンドを使うと、^C^\ を変更でき る。

% stty -a [←]
speed 9600 baud; 40 rows; 80 columns;
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl
        -echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
        -extproc
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff ixany imaxbel -ignbrk
        brkint -inpck -ignpar -parmrk
oflags: opost onlcr -oxtabs -onocr -onlret
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow
        -dtrflow -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = ;
        eol2 = ; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
        min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
        stop = ^S; susp = ^Z; time = 0; werase = ^W;
% []
「intr」のところに表示されるものが「^C」, 「quit」のところに表示されるものが「^\」に相当するキー。 「kill」は、1行削除の意味。

◆kill コマンドによるプロセスの強制終了

^C^\ で死なないプロセス (emacs など) を殺すには、kill コマンドを使う。
% kill pid [←]
これは、プロセス識別子pidのプロセスを殺す。 他人のプロセスは、権限がないので殺せない。

注意:pid には、プロセス識別子となる番号を入れる。pid と打つのではない。pid と打たれても、kill コマンドは、どのプロセスを殺せ ばよいのかわからない。

◆kill -KILL

単純な kill コマンドでは死なないプロセスの場合、 -KILLをつけてkillコマンドを実行する。
% kill -KILL pid [←]

■遠隔ログイン

(文字端末を使っている状態で)別のコンピュータ にネットワーク経由で接続して (文字端末の状態で)利用可能にすること。

手引き26ページにあるように、ssh コマンドを使う。

host1% ssh hostname
Password: (パスワードを打つ)[←]
hostname% []
hostname は、 azalea21 など、接続したいコンピュータの名前を入れる。

ログイン先とログインもとでユーザ名が異なる時(プロセスを殺したいと時など、 一時的に他人の端末を借りる時)には、次のように、-l オプションに続きログ イン先のユーザ名を使う。

host1% ssh hostname -l user
Password: (パスワードを打つ)[←]
hostname% []
または、「@」の前にログイン先のユーザ名を指定する。
host1% ssh user@hostname
Password: (パスワードを打つ)[←]
hostname% []

遠隔ログインすると、ログイン先でシェルが実行される。 シェルを終了(exitコマンド)すると、遠隔ログイン自身も終了する。

ssh で一番最初に接続する時には、次のように Warning: が出ることがある。

[azalea20:~] yas% ssh azalea21[←]
The authenticity of host 'azalea21 (130.158.86.41)' can't be established.
RSA key fingerprint is d8:b2:bd:32:c0:9d:80:16:dc:40:7e:73:03:25:4f:b9.
Are you sure you want to continue connecting (yes/no)? yes[←]
Warning: Permanently added 'azalea21,130.158.86.41' (RSA) to the list of known hosts.
Password:
Welcome to Darwin!
[azalea21:~] yas% []
この意味については、後述。 公開鍵暗号系をきちんと理解した上で yes[←] と打つべきである。

◆なぜ電源を切ってはいけないのか

手引きXVIページ。

きちんと終了するには、 2種類の記憶のための部品 メモリ(RAM)の内容のうち、いくつかを ハードディスクにきちんと保存する必要がある。

いきなり電源を切ったり、リセットしたりすると、 ハード・ディスクに保存すべき内容を保存しないまま 失われた状態になり、つじつまが合わなくなる。

■アクセス制御

アクセス制御(access control) とは、「主体」が、「オブジェクト」を「操作」する時、どんな操作なら正し いということを定義して、それがきちんと守られていることをということを保 証することである。

図? アクセス制御における主体、オブジェクト、および、操作

図? アクセス制御における主体、オブジェクト、および、操作

Unixでは、アクセス制御の主体は、プロセスである。 アクセス制御のオブジェクトは、ファイル、または、プロセスである。 操作には、次のようなものがある。

◆ユーザとグループ

Unix (MacOSX, Linux含む), Windows NT/2000/XP では、ユーザ(個人)とグルー プを識別したアクセス制御を行うことができる。 オペレーティング・システムごとに、ユーザやそのグループの考え方は、基本 的には似ているが、細かい所で異なる。

図? 実世界のユーザとUNIX中のプロセス・ファイル

図? 実世界のユーザとUNIX中のプロセス・ファイル

◆ユーザ

ユーザ(user, 利用者)とは、Unixの外では、個人(人間)。 Unixの内部では、次のどれかで表現する。
ユーザ名(user name)
文字列
UID(user ID, user identifier)
16ビット-32ビットの整数

Unixでは、全てのファイルやプロセスは、あるユーザの所有物である。 ファイルとプロセスには、UID が付加されている。

◆グループ

グループ(group)とは、Unixの外の世界では、計算機を使う人間の集合。 Unixの内部では、次のどれかで表現する。
グループ名(group name)
文字列
UID(user ID, user identifier)
16ビット-32ビットの整数

1人のユーザが複数のグループに属することができる。

◆ファイルの属性

ファイルは、属性(ls -l で表示)として、UID と GID を1つずつ持つ。 ファイルの所有者となる個人は、1人。 ファイルが属するグループも1つ。

◆プロセスの属性

プロセスは、UID (1個) と GID を複数個持つ。

◆プロセスのユーザ名とグループ名を調べる

プロセスの所有者のユーザ名を表示するには whoamiコマンドを用いる。
% whoami [←]
yas
% []
この例では、この人(のプロセス)のユーザ名は、yas

プロセスが属しているグループのグループ名を調べるには、 groupsコマンドを用いる。

% groups [←]
lab wheel staff
% []
この例では、この人(のプロセス)は、 lab, wheel, staff という3つ のグループに属している。

idコマンドも使える。

% id [←]
uid=1231(yas) gid=40(lab) groups=40(lab), 0(wheel), 10(staff)
%

◆ファイルの UID・GID 属性を調べる

ファイルの UID 属性(所有者属性)と GID 属性を調べるには、ls -l を用いる。

◆ファイルに対するアクセス制御

Unixでは、ファイルの「内容」のアクセス制御を次の3段階で行う。
ユーザ
ファイルのUID(所有者)が、プロセスのUIDと同じ
グループ
ファイルのGIDが、プロセスのGIDのリストのどれかと同じ
その他
上の2つに当てはまらない時
これをつかって、モード属性の下位9ビットのうち、どの3ビットを使うかを 決める。そして、そのビットが1になっていれば、その操作が許される。

ファイルの「内容」のアクセス3段階であるが、ファイルの「属性」次の2段 階である。

ユーザ
ファイルのUID(所有者)が、プロセスのUIDと同じ
それ以外
ファイルのUID(所有者)が、プロセスのUIDと異なる
ユーザの権限では、ファイルの属性(モード、グループ、時刻)を変更する ことができる。それ以外の権 限では、属性を読み出すことはできるが、変更は一切できない。 つまり、ファイルの内容がアクセスできなくても、ls -l, stat(2) で 属性を調べることはできる。

◆ディレクトリのx

ディレクトリのモードで x は、そのディレクトリの内容を検索できることを意 味する。ディレクトリの x を落すことで、それ以下の部分木全体のアクセスを 禁止することができる。

◆プロセスに対するアクセス制御

プロセスのアクセス制御は、次の2段階で行なう。
同一ユーザ
操作対象のプロセスが、操作するプロセスのUIDと一致している。
それ以外
操作対象のプロセスが、操作するプロセスのUIDと一致していない。
プロセスの操作としては、シグナルを送ることができるかどうか (kill() システムコール) と、デバッガで デバッグすることができるとか(ptrace() システムコール)、トレースを調べることができるかなどが ある。それらの操作は、同一ユーザの場合 許され、そうではない場合は、許されない。

◆スーパー・ユーザ

どのようなアクセスも可能な無敵のユーザ。

スーパー・ユーザ(super user) は、UID が 0 。 特権ユーザ(privileged user)ルート(root)su (su コマンド、あるいは super user の略)ともよばれる。 スーパーユーザのユーザ名は、慣例として root という文字列が使われる。

ファイルのバックアップなど、システム管理の作業には スーパー・ユーザの仕組みが必要になる。

ファイルの UID・GID 属性を変更する

ファイルの UID 属性(所有者属性)を変更するには、chown コマ ンドを用いる。ただし、スーパーユーザの権限が必要である。

ファイルをコピーして、元ファイルを消すことはできる。

ファイルの GID 属性を変更するには、chgrp コマンドを使う。 一般ユーザは、自分が属しているグループにのみ変更できる。 任意のグループに変更するには、スーパー・ユーザの権限が必要である。

◆ユーザ名とUID、グループ名とGIDの対応、属性の伝播

■ファイルのモードの変更

◆chmod コマンド

chmodコマンドは、ファイルのモード属性を変更するためのコマンド。
% ls -l file1 [←]
-rw-r--r--   1 yas  prof  6 May 16 03:26 file1
% chmod go-r file1 [←]
% ls -l file1 [←]
-rw-------   1 yas  prof  6 May 16 03:26 file1
% []
file1に対して、グループ(g)とそれ以外の人(o)に対して「読込み可」の許可を 取り除いている。

chmodは一般的には次の形式で実行する。

% chmod set file1 file2 ... [←]
set の形式
[ugoa][=+-][rwx]
ここの[ugoa]は、誰に対するアクセスの設定を変更するかを対象となる人を以 下の表から選んで並べる(複数可)。
文字 単語 意味
u user ユーザ(利用者,所有者)
g group グループ
o others その他
a all 全員、ugo と同じ
[=+-]の意味
文字 意味
+ 許可を追加する
- 許可を除く
= 指定した許可だけとする
[rwxXst]の部分には次のような指定が可能。
文字 単語 意味
r read 読込み可
w write 書込み可
x execute 実行可
X execute 実行可(所有者に対して「実行可」がある時だけ)
setには[ugoa][=+-][rwx]の指定を「u=rw,og=r」のように「,」で区 切って複数並べることもできる。

chmod には、-R (recursive)オプションがある。 これは、ディレクトリをたぐり全部変更することを意味する。

◆モードの実例

rw-r--r--
誰かでも読めるファイル
rwxr-xr-x
誰かでも読めるアクセスできるディレクトリ。 xもたてる。 (たてる==ビットを1にする。)
rwxr-xr-x
実行可能ファイル
rwx------
MH や Mew を使っている場合は、~/Mail ディレクトリのモード
rw-r--r--
WWWページ用のファイル (~/public_html以下のファイル)
rwxr-xr-x
WWWページ用のディレクトリ (public_html以下のディレクトリ)
rwxr-xr-x または rwx--x--x
WWWページを作成する時のホーム・ディレクトリ (~~/public_html の親ディレクトリ)。 x ビットを出す。
rw-rw-r-- または rwxrwxr-x
グループで共同作業するような時には、グループに属する人には書き込みを許す。
r-xr-xr-x, r-x------
読み込み専用のディレクトリ。 その下のファイルを削除することができない。
注意:WWWページを作成する時には、ホーム・ディレクトリのモードにも注意す る。ホーム・ディレクトリがrwx------になっていたら、いくら ~/public_html のモードを rwxr-xr-x にしても、アクセスで きない。

■ファイルの保存

MacOSX では、ファイルを保存する時に次のようなウインドウが表示される。

Save As のウインドウ

三角のボタン▲▼を使うことで、より詳しい表示と切り替えることができる。

Save As のウインドウ

Finder のウインドウの左側に表示される「サイドバー」に、ホーム・ディレク トリやデスクトップを入れておくと便利。入れるには、Finder でそのフォルダ を表示して、サイドバーにドラッグする。同じサイドバーは、保存のウインド ウにも表示される。

■コマンドのまとめ

ps			プロセスの一覧の表示
ps ux			プロセスの一覧の表示(BSD,Linux)
ps aux			プロセスの一覧の表示(BSD,Linux)
stty all		端末の状態の表示(BSD)
stty -a			端末の状態の表示(System V,Linux)
kill PID		プロセスを殺す
kill -KILL PID		プロセスを殺す(必殺)
ls -l	f1 f2 f3	ファイルの属性の表示
ls -d	d1 d2 d3	ディレクトリの名前の一覧の表示
chmod [ugoa][=+-][rwx] f1 f2 f3	モード属性の変更
whoami		       プロセスのUID属性の表示
groups		       プロセスのgroups属性の表示
id		       プロセスのUID,GID,groups属性の表示
PID はプロセス識別子。 ;

■実習

実習時間中には、 以下の課題をできるだけ多く行いなさい。全部を行う必要はない。

★練習問題(55) psコマンド

ps コマンドを使って、プロセスの一覧を表示しなさい。

★練習問題(56) psコマンドのオプション

ps コマンドで、次のオプションの動作を確認しなさい。
a
all。他人のプロセスも含めて全てのプロセス。
l
long。長い表示。
u
長い表示。
U user (大文字)
ユーザ名 user のプロセスだけ
x
端末無しのプロセスの表示
ux
u と x の組み合わせ
w
横幅を広げた表示。
ww
もっと横幅を広げた表示。www, wwww も有効。
BSD 系の ps (Linux含む) では、オプションの「-」を省略できる。

くわしくは、man ps を調べなさい。

手引き23ページの「ps -u [自分のログイン名]」 という記述は、MacOSX では誤り。 orchid-calc1 などの Linux や、 System V 系 Unix (Solaris) では有効。

★練習問題(57) psコマンドで横長の表示

ps ux や ps aux では、MacOSX 関連のプロセスの表示が切れてしまう。 w コマンドを使うか、端末を横長にして表示してみなさい。

★練習問題(58) topコマンド

top コマンドで、「重たい」プロセスを表示しなさい。 「重たい」プロセスとは、CPU時間を大量に消費しているプロセスや メモリを大量に消費しているプロセスのことである。
% top [←]
% top -o cpu [←]
(CPU を消費している順)
MacOSX では、top コマンド自分自身が「重たい」と認識される。 その場合は、top コマンドが頻度を下げる。
% top -s 4 -o cpu [←]
man top でマニュアルを表示して、-o オプションと -U の使い方を 調べなさい。そして、メモリの利用順 (rsize) で表示しなさい。 -U オプションで自分自身のプロセスだけを表示しなさい。

top コマンドの -U オプションは、マニュアルに記述された通りの動作をしない。

★練習問題(59) 「アクティビティモニタ.app」の利用

「ユーティリティ(/Applications/Utilities/)」にある 「アクティビティモニタ.app(Activity Monitor.app)」 を動作させ、プロセスの一覧を表示させなさい。
% open "/Applications/Utilities/Activity Monitor.app" [←]
または、Finder で、「移動」メニューから「ユーティリティ」を 選択。「アクティビティモニタ.app」のアイコンをダブルクリック。

アクティビティモニタの表示

アクティビティモニタの表示

表示されるプロセスの範囲を変えてみなさい。

top コマンドの表示と比較しなさい。

★練習問題(60) lsofコマンド

lsof コマンド(list open files) は、プロセスの一覧と同時に、プロセスがど のファイルを開いているかを表示するコマンドである。これを実行してみなさ い。

★練習問題(61) killコマンド

kill コマンドを使って、プロセスを殺してみなさい。たとえば、端末を2個表 示し、片方の端末で、lv コマンドでファイルを表示しなさい。もう片方の端末 で、ps コマンドで PID を調べ、kill コマンドで殺しなさい。

★練習問題(62) killコマンドで他人のプロセスを殺そうとしてみる

ps コマンドで調べたプロセスのうち、他人のプロセス(root、その他) を kill コマンドで殺そうとしてみなさい。何がおきるかを観察しなさい。どのよ うなエラーが生じるか。

★練習問題(63) sshコマンド

ssh コマンドで別の隣のコンピュータに遠隔ログインしてみなさい。

あるいは、次のコンピュータに遠隔ログインしてみなさい。

ログインしたら、次のようなコマンドを実行してみなさい。 そして、ログイン元のコンピュータの結果と比較しなさい。

★練習問題(64) ssh+ps、ssh+top、ssh+kill

遠隔ログインした先のコンピュータで ps コマンドや top コマンドを使って、 プロセスの一覧を表示しなさい。遠隔ログインする手元のコンピュータと比較 しなさい。

★練習問題(65) ssh+kill

遠隔ログインした先のコンピュータで kill コマンドでプロセスを殺しなさい。

★練習問題(66) MacOSX Command+Option+Esc

MacOSX で、Command+Option+Esc キーを押すと 「アプリケーションの強制終了」のウインドウを表示できる。

(まず、Commandキー(Command) と Option キーを左手で押し、 押しっぱなしの状態で、右手で Esc キーを一度押して離す。)

Command+Option+Escキー

「アプリケーションの強制終了」のウインドウ

★練習問題(67) ps -lによる親子関係

ps -l を使えば、プロセスの親子関係を調べることができる。親子関係は、全 体としては、木構造になっている。そのことを調べなさい。

全てのプロセスの親プロセスは、PID 1 プロセスになっている(根に相当)。

システムによっては、pstree というコマンドが使える。

★練習問題(68) whoami,groups,idコマンド

whoami, groups, idコマンドを使って、プロセス(シェル)のUID, GID, groups 属性を表示しなさい。

★練習問題(69) chgrp コマンド

chgrp コマンドで、ファイルやディレクトリのGID属性を変更しなさい。

★練習問題(70) ディレクトリのGIDの伝播

UIDとGIDの伝播を確認しなさい。 /tmp など、誰でも書き込みできる場所にファイルを作成すると、その ファイルの UID 属性はどうなるか調べなさい。新たに実験用のディレクトリを mkdir コマンドで作成しなさい。そのディレクトリのGID属性を chgrp で変更 し、その中に新たなファイルやディレクトリを作成したら、その GID がどう設 定されるかを確かめなさい。また、既存のファイルをmv コマンドで移動したら どうなるかを調べなさい。

◆課題8 プロセス、アクセス制御

締め切りは、2006年5月19日金曜日とする。

以下の問題について、問題、および、回答をテキスト・ファイルに記述し、 レポート提出ページから提出しなさい。 端末の表示(コマンドの実行結果)は、コピー&ペースト等の機能を使って提出 するファイルに含めなさい。

テキスト・ファイルで、右揃えをするには、パラグラフの区切りを、空行にし た上で、M-q (Esc q, M-x fill-paragraph) の機 能を利用するとよい。

(1) 端末を2つ開きなさい。片方で強制終了させてもよいプロセスを作成しな さい。もう一方の端末で、そのコンピュータで動作している自分自身のプ ロセスだけを ps コマンドで表示しなさい。端末と結びついていないプロ セスも含めなさい。

(2) kill コマンドを使って、(1) で作成したプロセスを殺しなさい。ps コマ ンドの結果を示し、それがきちんと死んだことを示しなさい。

(3) ls -l (ls -ld) を使って、次のファイルのモードを調べなさい。

(4) まず、適当な内容を持つテキスト・ファイルを作成しなさい。そして、次 のような要求を満たすように chmod コマンドを使ってモードを変更しなさい。 提出するファイルには、chmod コマンドをどのように利用したか、また、その 結果 ls -l の表示がどのようになったかを含めなさい。

(5) ssh で、別のコンピュータに遠隔ログインしなさい。そこで動作している 自分自身のプロセスを殺しなさい。一般のプロセスを殺したときとシェル (tcsh)を殺した時の動きは少し異なる。そのことを説明しなさい。 (加点 課題)。

(6) 次のようなファイルやディレクトリを作成し、それが動作していることを ls -l や rm コマンドなどで示しなさい (加点課題)。

(7) ps コマンドを使って自分自身のプロセスの親子関係を調べなさい。そして、 それを字下げやパス名的な表記を使って全体像を示しなさい (加点課題)。


Last updated: 2006/05/16 17:32:43
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>