5    ファイルとディレクトリへのアクセス制御

この章では,次のような項目について説明することにより,システムあるいはファイルおよびディレクトリへのアクセスを制御する方法を説明します。

この章で説明する例に従って実際に操作することにより,上記のトピックについて理解することができます。

例を実行するためには,まずシステムにログインする必要があります。 また,ログイン・ディレクトリには次のファイルおよびディレクトリが必要です。

上記の名前とは異なるファイル名を使用している場合は,適当に置き換えて例を実行してください。

5.1    パスワード・セキュリティ・ファイルとグループ・セキュリティ・ファイル

ユーザがシステムにログインするためには,ユーザ・アカウントを作成しておく必要があります。 通常,ユーザ・アカウントの追加はシステム管理者が行います。 ユーザ・アカウントの追加は日常的な作業ですが非常に重要です。

ユーザ・アカウントが作成されると,新しいユーザに関する情報が次の 2 つのファイルに追加されます。

/etc/passwd

このファイルには,システムの全ユーザについてのユーザ情報が含まれている。

/etc/group

このファイルには,システム上の全グループについてのグループ情報が含まれている。

これらのファイルはシステムを使用できるユーザ名と各ユーザのアクセス権を定義します。 さらに,他のすべてのシステム・セキュリティ制御も,パスワード・セキュリティおよびグループ・セキュリティに依存しています。 以降の各項で,/etc/passwd ファイルと /etc/group ファイルについて説明します。

5.1.1    /etc/passwd ファイル

/etc/passwd ファイルには,システムの全ユーザのログイン・アカウントとその属性の定義が含まれています。 このファイルを変更するためには,スーパユーザ特権が必要です。 詳しくは5.7 節を参照してください。

/etc/passwd ファイル内の各記述は,個々のユーザのログイン・アカウントを定義しています。 各フィールドはコロンで区切られ,最後のフィールドは改行復帰文字 (リターン) で終わります。 /etc/passwd ファイルの情報は,次のような形式で記述します。

username:password:UID:GID:gecos:login_directory:login_shell

各フィールドの意味は次のとおりです。

username

ユーザのログイン名

password

暗号化されたユーザのパスワード

暗号化することによって,権限のないユーザまたはプログラムがパスワードを不正に使用するのを防止する。 パスワードが設定されていないユーザの場合,このフィールドは空白になる。

UID

ユーザ ID

システムがユーザを識別するための固有の番号。

GID

グループ ID

システムがユーザの省略時のグループを識別するための番号。 ユーザは 1 つまたは複数のグループに所属できる。

gecos

通常,このフィールドにはユーザ自身に関する一般情報が含まれ,インストレーション固有のフォーマットで保存される。 通常は,以下の情報をコンマで区切ったリストである。

name

フルネーム

office

オフィスの番号

wphone

オフィスの電話番号

hphone

自宅の電話番号

login_directory

ログイン・ディレクトリ

システムにログインしたときの現在のディレクトリ。 ユーザが自分専用のファイルを格納するために使用する。

login_shell

ログイン・シェル

システムにログインした時に login プログラムによって実行されるプログラム。 通常は,コマンドを解釈するために使用されるシェル・プログラム。 シェルについての詳細は,第 7 章および第 8 章を参照。

次に示すのは /etc/passwd ファイルの記述例です。

lee:NebPsa9qxMkbD:201:20:Lee Voy,sales,x1234:/users/lee: \
                                      /usr/bin/posix/sh
 

ユーザ・アカウント lee はユーザ ID が 201 で,グループ ID が 20 です。 Lee のフルネームは Lee Voy で,所属は営業,内線番号 1234 です。 ログイン・ディレクトリは /users/lee で,POSIX シェル (/usr/bin/posix/sh) がコマンド・インタプリタとして定義されます。 パスワード・フィールドには暗号化された Lee のパスワードが記述されています。

5.1.2    /etc/group ファイル

/etc/group ファイルには,システムを使用するすべてのグループのログイン・アカウントの定義が含まれています。 このファイルを変更するためには,スーパユーザ特権を必要とし,root としてログインする必要があります。 ユーザ名は 'etc/group' ファイルに追加します。 詳細は5.7 節を参照してください。

グループ・データベース内の各記述は,それぞれ 1 つのグループのログイン・アカウントを定義しています。 グループを定義することにより,共通の関心事のあるユーザや,同じプロジェクトにかかわっているユーザの間でファイルを共用することができます。

/etc/group ファイルの各行は,4 つのフィールドで構成されています。 各フィールドはコロンで区切られ,最後のフィールドは改行復帰文字で終わります。 /etc/group ファイルの情報は,次のような形式で記述します。

groupname:password:GID:user1[, user2, ..., userN ]

各フィールドの意味は次のとおりです。

groupname

システムがグループを識別するための固有な文字列。

password

このフィールドは常に空。 このフィールドのエントリは無視される。

GID

グループ ID

システムがグループを識別するための固有な番号。

usernames

グループに所属しているユーザのリスト。

5.2    ファイルとディレクトリの保護

オペレーティング・システムには,自分のファイルおよびディレクトリへのアクセスを制御するための多数のコマンドが用意されています。 ファイルやディレクトリは,許可を設定または変更することによって保護することができます。 許可とは,システムで作業しているユーザが格納データをどのように使用できるかを決定するコードです。

許可の設定または変更は,ファイルやディレクトリに対する保護の設定または変更と同じことです。 一般に次のような場合はデータを保護します。

注意

多くの場合,システムでは個々の動作をお互いに通知することなく複数のユーザが同時に同じファイルの変更を行うことが可能です。 この場合,システムは最後のユーザが行った変更を保管してファイルをクローズします。 そのため,それ以前に他のユーザが行った変更は失われます (テキスト・エディタのなかには,このことをユーザに警告するものもあります)。 このような問題を避けるために,許可されたユーザだけがファイルを修正できるようにファイル許可を設定すると良いでしょう。 また,各ユーザは,ファイルを使用した時期および理由を通知し合うのが望ましいでしょう。

各ファイルおよびディレクトリには,関連する 9 つの許可を設定することができます。

ファイルとディレクトリに対しては次の 3 種類の許可を設定できます。

また,これら 3 種類の許可は,次の 3 つのクラスのユーザに対して設定できます。

注意

グループ・アクセス許可はそのグループに属するすべてメンバーに与えられます。 その他のアクセス許可は,すべてのユーザーに与えられます。 特定のユーザあるいはグループ・メンバーに対してアクセス許可を設定するには,アクセス制御リスト (ACL) を使用します。 ACL についての詳細は付録 Gを参照してください。

表 5-1 に示すように,3 種類の許可は,ファイルとディレクトリとで多少意味が異なります。

表 5-1:  ファイル許可とディレクトリ許可の違い

許可 ファイル ディレクトリ
r (読み取り) 内容の表示および印刷が可能。 内容の参照は可能だが探索はできない。 通常,rx を一緒に指定する。
w (書き込み) 内容の変更および削除が可能。 ファイルあるいはサブディレクトリの追加および削除が可能。
x (実行) ファイルをプログラムとして使用できる。 ディレクトリの探索が可能。

5.3    ファイル許可およびディレクトリ許可の表示 (ls コマンド)

現在のファイル許可を表示するには,ls コマンドに -l フラグを指定して使用します。 1 つのファイルあるいは指定したファイルの許可を表示する場合は,次の構文を使用します。

$ ls -l filename
 

filename 変数には,ファイル名あるいはスペースで区切ったファイル名リストを指定します。 パターン照合文字を使用してファイルを指定することもできます。 詳細については5.4.1.3 項を参照してください。

現在のディレクトリにあるすべてのファイルの許可を表示するには,filename 変数を省略して ls -l コマンドを入力します。

$ ls -l
total 7
-rw-r--r--  1 larry  system  101 Jun 5 10:03 file1
-rw-r--r--  1 larry  system  171 Jun 5 10:03 file2
-rw-r--r--  1 larry  system  130 Jun 5 10:06 file3
drwxr-xr-x  2 larry  system   32 Jun 5 10:07 project
-rw-r--r--  1 larry  system    0 Jun 5 11:03 record1
-rw-r--r--  1 larry  system    0 Jun 5 11:03 record6
drwxr-xr-x  2 larry  system   32 Jun 5 10:31 reports
$
 

上記の表示の先頭の文字列は,そのファイルまたはディレクトリの許可を示しています。 たとえば,4 番目のエントリの drwxr-xr-x は,次のことを示しています。

上記の表示の 3 番目のフィールド (larry) はファイルの所有者を示し,4 番目のフィールド (system) はファイルが所属するグループを示しています。

特定のディレクトリの許可を表示するには,次のように ls -ld コマンドを使用します。

$ ls -ld reports
drwxr-xr-x   2 larry    system      32 Jun  5 10:31 reports
$
 

ファイルまたはディレクトリに関する許可を一括して,許可コードと呼びます。 図 5-1 に示すように,許可コードは 4 つの部分から構成されています。

図 5-1:  ファイルおよびディレクトリの許可フィールド

ファイルまたはディレクトリを作成する際に,システムはあらかじめ決められた許可コードを自動的に設定します。 ファイル許可コードの例を次に示します。

-rw-r--r--
 

このファイル許可コードは,所有者に対して読み取りおよび書き込み許可を与えているのに対し,グループと他のすべてのユーザに対しては,読み取り許可のみを与えています。 許可フィールドに表示されるダッシュ (-) は,指定したユーザ・クラスではその操作が許可されていないことを示します。

ディレクトリ許可コードの例を次に示します。

drwxr-xr-x
 

このディレクトリ許可コードは,所有者に対して読み取り,書き込み,および探索許可を与えているのに対し,グループと他のすべてのユーザに対しては,読み取りおよび探索許可を与えています。

システムが提供する省略時の許可コードを使用すれば,ファイルやディレクトリを作成するたびに明示的にコードを指定する必要はありません。 ユーザ固有の省略時の許可コードを作成したい場合は,umask コマンドを使用してユーザ・マスクを変更する必要があります。 umask コマンドについては,5.5 節を参照してください。

注意

ls コマンドで表示されるファイルの所有者,グループ,およびその他のアクセス許可により,プロセスによるファイルへのアクセスが許可されていたとしても,そのファイルの ACL がそのプロセスによるアクセスを認めていない場合があります。 この現象は,そのファイルの属するグループと同じグループへのアクセス許可をそのプロセスが持っている場合であっても発生することがありえます。 ACL についての詳細は 付録 G を参照してください。

5.4    ファイルおよびディレクトリ許可の設定 (chmod コマンド)

許可を変更できると,自分のデータの使用方法を自由に制御することができます。 ファイルあるいはディレクトリの許可を設定または変更する場合は,chmod (change mode) コマンドを使用します。

たとえば,ユーザはファイルを読み取ったり,修正したり,実行したりすることを自分に許可しています。 通常は,同じグループの他メンバにも,ファイルの読み取りを許可しています。 作業の性質とグループの構成によっては,他のメンバにファイルの修正または実行を許可する場合もあるでしょう。 ただし,他のすべてのシステム・ユーザには,ファイルにアクセスすることを禁止するのが一般的です。

注意

ファイルまたはディレクトリの許可を変更するためには,ファイルまたはディレクトリの所有者である (またはスーパユーザの権限を持っている) 必要があります。 つまり,ls -l コマンドを実行したときに,ユーザ名がそのファイルのリストの 3 番目のフィールドに表示されなければなりません。

重要なことですが,ファイルやディレクトリへのアクセスをどんなに制限しても,スーパユーザはいつでもその制限を無効にできるということを認識しておいてください。 たとえば,chmod コマンドを使用して,自分しかファイル report20 にアクセスできないように指定したとします。 しかし,そのように設定しても,スーパユーザはそのファイルにアクセスできます。 詳細は,5.7 節を参照してください。

chmod コマンドを使用して許可を設定する場合には,次の 2 通りの指定方法があります。

以降の各項で,許可を英字と演算記号で指定する方法と,8 進数で指定する方法について説明します。

5.4.1    英字と演算記号による許可の指定

英字と演算記号を使用して,ファイルおよびディレクトリの許可を変更することができます。

英字と演算記号を使用するときの chmod コマンドの形式は次のとおりです。

chmod userclass-operation-permission filename

userclass-operation-permission 変数は,有効にしたいユーザ・クラス/グループ/操作/許可コードを指定する 3 つのコードを表します。 filename 変数には,許可を変更したいファイルの名前を指定します。 パターン照合文字を使用してファイルを指定することもできます。 詳しくは5.4.1.3 項を参照してください。

ユーザ・クラス,操作,および許可は次のように定義されます。

5.4.1.1    ファイル許可の変更

次の例では,まず ls -l コマンドを入力して, ファイル file1 の許可を表示します。

$ ls -l file1
-rw-r--r--   1 larry    system     101 Jun  5 10:03 file1
$
 

所有者 (larry) に読み取りと書き込み許可があるのに対し,グループおよび他のユーザには読み取り許可しかないことに注意してください。

ここで,フラグ go+w を指定して chmod コマンドを入力します。 このコマンドは,グループ (g) と他のユーザ (o) の両方に,すでに認められている読み取りアクセスに加えて,file1 に対する書き込み (+w) アクセスを与えることによって,許可を拡張するものです。

$ chmod go+w file1
$
 

次に,そのファイルの新しい許可を表示します。

$ ls -l file1
-rw-rw-rw-  1 larry    system     101 Jun  5 10:03 file1
$
 

これで,グループと他のすべてのシステム・ユーザに,file1 に対する書き込み許可が与えられました。

5.4.1.2    ディレクトリ許可の変更

ディレクトリ許可の変更手順は,ファイル許可の変更手順と同じです。 ただし,ディレクトリについての情報をリストするときは,ls -ld コマンドを使用します。

$ ls -ld project
drwxr-xr-x  2 larry  system  32 Jun 5 10:07 project
$
 

ここで,chmod g+w コマンドで許可を変更し,グループ (g) にディレクトリ project に対する書き込み許可 (+w) を認めるようにします。

$ chmod g+w project
$ ls -ld project
drwxrwxr-x  2 larry  system  32 Jun 5 10:07 project
$
 

5.4.1.3    パターン照合文字の使用

ディレクトリ内のすべてのエントリの許可に対して同じ変更を行いたい場合は,chmod コマンドでパターン照合文字のアスタリスク (*) を使用することができます。 パターン照合文字については第 2 章を参照してください。

次の例では,chmod g+x * コマンドは,グループ (g) に対し, 現在のディレクトリ内のすべてのファイル (*) について実行 (x) 許可を与えます。

$ chmod g+x *
$
 

ここで,ls -l コマンドを入力し,グループに対して現在のディレクトリ内のすべてのファイルについての実行 (x) 許可が与えられたことを確認してください。

$ ls -l
total 7
-rw-rwxrw-  1 larry  system  101 Jun 5 10:03 file1
-rw-r-xr--  1 larry  system  171 Jun 5 10:03 file2
-rw-r-xr--  1 larry  system  130 Jun 5 10:06 file3
drwxrwxr-x  2 larry  system   32 Jun 5 10:07 project
-rw-r-xr--  1 larry  system    0 Jun 5 11:03 record1
-rw-r-xr--  1 larry  system    0 Jun 5 11:03 record6
drwxr-xr-x  2 larry  system   32 Jun 5 10:31 reports
$
 

5.4.1.4    絶対許可の設定

絶対許可割り当て (=) は,許可が以前どのように設定されていたかに関係なく,ファイルについてのすべての許可を再設定します。

例 5-1 では,ls -l コマンドで file3 ファイルの許可を表示した後, chmod a=rwx コマンドで,すべてのユーザ (a) に対し 3 つの許可 (rwx) すべてを与えます。

例 5-1:  絶対許可の設定

$ ls -l file3
-rw-r-x-r--  1 larry  system  130 Jun 5 10:06 file3
$ chmod a=rwx file3
$ ls -l file3
-rwxrwxrwx   1 larry  system  130 Jun 5 10:06 file3
$
 

許可を削除するために絶対割り当てを使用することもできます。 例 5-2 では,chmod a=rw newfile コマンドは, ファイル file3 からすべてのユーザ (a) の実行許可 (x) を削除します。

例 5-2:  絶対許可の削除

$ chmod a=rw file3
$ ls -l file3
-rw-rw-rw-   1 larry  system  130 Jun 5 10:06 file3
$
 

5.4.2    8 進数による許可の指定

8 進数を使用して,ファイルおよびディレクトリの許可を変更することもできます。

8 進数許可コードを chmod コマンドで使用するときは,次の形式でコマンドを入力します。

chmod octalnumber filename

octalnumber 変数は,所有者,グループ,および他のユーザについての許可を指定する 3 桁の 8 進数です。 filename 変数は,許可を変更するファイルの名前です。 これはファイル名でも,スペースで区切ったファイル名リストでもかまいません。 パターン照合文字を使用してファイルを指定することもできます。 詳しくは5.4.1.3 項を参照してください。

8 進数は各タイプの許可に対応します。

4 = read 2 = write 1 = execute

許可のグループ (許可フィールド) を指定するには,該当する 8 進数を加算します。 rw,および x はそれぞれ,読み取り,書き込み,および実行を示します。

3 = -wx (2 + 1) 6 = rw- (4 + 2) 7 = rwx (4 + 2 + 1) 0 = --- (許可なし)

表 5-2 は,8 通りの許可の組み合わせを列記したものです。

表 5-2:  許可の組み合わせ

8 進数 2 進数 許可 説明
0 000 なし 許可は一切与えられていない
1 001 --x 実行
2 010 -w- 書き込み
3 011 -wx 書き込み/実行
4 100 r-- 読み取り
5 101 r-x 読み取り/実行
6 110 rw- 読み取り/書き込み
7 111 rwx 読み取り/書き込み/実行

ファイルまたはディレクトリの完全な許可コードは 3 桁の 8 進数で指定され,それぞれの数字が所有者,グループ,および他のユーザに対応します。 表 5-3 に,いくつかの代表的な許可コードと,それらと許可フィールドとの関係を示します。

表 5-3:  8 進数と許可フィールドとの関係

8 進数 所有者フィールド グループ・フィールド 他のユーザ・フィールド 完全なコード
777 rwx rwx rwx rwxrwxrwx
755 rwx r-x r-x rwxr-xr-x
700 rwx --- --- rwx------
666 rw- rw- rw- rw-rw-rw-

次の例では,8 進数を使用して file3 の許可を変更しています。

$ ls -l file3
-rw-rw-rw-  1 larry  system  130 Jun 5 10:06 file3
$ chmod 754 file3
$ ls -l file3
-rwxr-xr--  1 larry  system  130 Jun 5 10:06 file3
$
 

5.5    ユーザ・マスクを使用した省略時の許可の設定

ファイルやディレクトリを作成すると,それに対して省略時の許可が設定されます。 この省略時の許可は,最初はオペレーティング・システムまたは実行しているプログラムのいずれかによって設定されます。 これにより,ファイルやディレクトリを作成するたびに,許可コードを指定する手間が省けます。 オペレーティング・システムは,省略時の許可として,実行ファイルに対しては 777 を,それ以外のファイルに対しては 666 を割り当てます。

ファイルまたはディレクトリの作成時にプログラムが設定する許可をさらに制限する場合は,umask コマンドを使用してユーザ・マスクを指定します。

ユーザ・マスクは,ファイルまたはディレクトリが作成されるときにアクセス許可を決定する数値です。 したがって,ファイルまたはディレクトリを作成するとき,作成用プログラムが指定する許可から,umask 値が禁止するものをマイナスした結果に設定されます。

umaskコマンドの形式は次のとおりです。

umask octalnumber

octalnumber 変数は,省略時の許可 (777 または 666) からマイナスする許可を指定する 3 桁の 8 進数です。

ユーザ・マスクの設定は,5.4.2 項で説明している許可ビットの設定に非常に似ています。 ファイルやディレクトリの許可コードは 3 桁の 8 進数で指定されます。 各桁が許可の種類を表します。 各桁の位置 (1 桁目,2 桁目,または 3 桁目) は,下記に対応する 3 ビットを表します。

ただし,ユーザ・マスクを設定すると,ファイルを作成するプログラムが要求する許可にかかわりなく,どの許可を与えないかを実際に指定することになります。

表 5-4 は,可能な 8 通りの unmask 許可の組み合わせをわかりやすく列記したものです。 umask 許可の値は,通常の許可コードで指定される値の逆です。 これらの許可値は,ファイル作成プログラムによって設定される値に対して適用されます。

表 5-4:  umask 許可の組み合わせ

8 進数 許可 説明
0 rwx 読み取り/書き込み/実行
1 rw- 読み取り/書き込み
2 r-x 読み取り/実行
3 r-- 読み取り
4 -wx 書き込み/実行
5 -w- 書き込み
6 --x 実行
7 なし 許可は一切与えられていない

たとえば,027 というユーザ・マスクを指定すると,次のような許可が設定されます (ファイルは実行ファイルとします)。

自分のファイルおよびディレクトリに設定するユーザ・マスク値は,情報資源をシステムでどのように共用するかによって異なります。 次のガイドラインを参考にしてください。

umask がどのように機能するかを理解するため,次のコマンドを入力したとしましょう。

$ umask 037
 

このコマンドは 740 という許可コードを設定し,次のような結果が生じます (ファイルが実行ファイルである場合)。

ファイルを作成した直後は,省略時の設定で,エディタは常に次の省略時の許可を割り当てます。 つまり,所有者にはすべての許可が認められ,他のすべてのユーザには読み取りと実行許可だけが認められます。 ただし,以前に 037 というユーザ・マスクを設定しているため,ファイル許可にさらに制限を加えます。 その結果,所有者には相変わらずすべての許可が認められていますが,グループはファイルを実行できず,また他のすべてのユーザには許可が一切認められないことになります。

5.5.1    umask の設定

umask コマンドは 2 通りの方法で実行することができます。

テキスト・エディタによって作成されるファイルの許可を制限する際に,ユーザ・マスクがどのように機能するかを示す例として,次の操作を実行してみてください。

  1. 次のコマンドを入力して,自分のユーザ・マスクの現在値を調べる。

    $ umask
     
    

    ユーザ・マスク値が 000 であれば,ファイルを作成するプログラムが設定する許可に対して一切制限を加えません。 ステップ 3 に進んでください。

    ユーザ・マスク値が設定されていれば,それを書き留めます。 その後,ステップ 2 に進んでください。

  2. ユーザ・マスク値を 000 に設定する。

    これにより,ファイルを作成するプログラムによって設定される許可に対して一切の制限を加えません。 ユーザ・マスクを設定する前に,現在のユーザ・マスク値を必ず書き留めておいてください。 再設定する必要が生じるかもしれません。

    次のコマンドを入力します。

    $ umask 000
     
    

  3. ファイルを作成し,保管してから,エディタを終了する。

  4. ls-l コマンドを使用して,そのファイルの許可を表示する。

    読み取り/書き込み許可がすべてのユーザに与えられているとします。

    $ ls -l
    -rw-rw-rw-  1 user-name   15 Oct 27 14:42 yourfile
    $
     
    

  5. 次のコマンドを入力して,ユーザ・マスクを 022 に再設定する。

    $ umask 022
     
    

    ユーザ・マスク 022 は次のとおり許可制限を設定します。 つまり,所有者にはすべての許可が認められ,その他のすべてのユーザには読み取りおよび実行許可だけが認められます。

  6. 別のファイルを作成し,保管してから,エディタを終了する。

  7. ls -l コマンドを使用して,ファイルの許可を表示する。

    $ ls -l
    -rw-r--r--  1  user-name   15 Oct 27 14:45 yourfile2
    $
     
    

    ここで,ユーザ・マスク値 022 に従って,グループと他のすべてのユーザに対する書き込み許可が削除されます。

  8. ユーザ・マスクを元の値または別の値 (任意) に再設定する。

注意

ユーザ・マスクでファイルやディレクトリへのアクセスにどんな制限を課しても,スーパユーザ特権を有するユーザは,その制限を無効にできます。 詳細は,5.7 節を参照してください。

ユーザ・マスクを指定して得られる結果が,意図したものと異なる場合は,システム管理者に問い合わせてください。

オペレーティング・システムでの省略時のユーザ・マスク値は 022 です。 これは所有者にはすべてのアクセスを許可し,グループのメンバや他のすべてのユーザにはファイルへの書き込みを禁じるものです。 ただし,ご使用のシステムの設定によってはユーザ・マスクの省略値が異なる場合もあります。

5.6    ファイルにアクセスするための ID の変更

su コマンドを使用すれば,ログイン・セッション中に ID を変更することができます。 ID を変更する理由は,自分が所有していないファイルにアクセスできるようにするためです。 システムのセキュリティを保護するため,所有者またはシステム管理者の許可がない限り,別の ID を引き継ぐべきではありません。

su コマンドを使用すれば,そのユーザのパスワードを知っている場合に限って,そのアカウントにログインできます。 su コマンドはユーザを認証してから, プロセスのユーザ ID と実効ユーザ ID の両方を,新たに指定されたユーザ ID の値に再設定します。 実効ユーザ ID とは,プロセスで現在有効なユーザ ID のことです。 ただし,それはログインしている人のユーザ ID ではないこともあります。

su コマンドの形式は次のとおりです。

su username

username 変数は,引き継ぎたい ID を持っている人のユーザ名です。

ID を変更した後,自分が引き継いだ ID を確認したい場合は,whoami コマンドを使用してください。 このコマンドは自分が引き継いだ ID のユーザ名を表示します。

新しい ID の下での作業が完了したら,自分自身のログイン ID に戻ります。 これを行うには,Ctrl/D を押すか,または exit コマンドを入力します。

次の 例 5-3 では,Juan が Lucy の ID を引き継ぎ,コマンドでそのことを確認し,ファイルを削除してから,コマンドで自分のログイン ID に戻る方法を示しています。

例 5-3:  su コマンドの使用

$ whoami [1]
juan
$ su lucy [2]
Password: ... [3]
$ whoami [4]
lucy
$ rm file9 [5]
$ exit [6]
$ whoami [1]
juan
$ 

  1. whoami コマンドで ID を確認しています。 [例に戻る]

  2. su コマンドで lucy の ID を使用できるようにしています。 [例に戻る]

  3. セキュリティ上の理由から,入力したパスワードは画面には表示されません。 [例に戻る]

  4. ID が lucy になっていることを確認しています。 [例に戻る]

  5. ファイルを削除しています。 [例に戻る]

  6. exit コマンドを実行すると元の ID に戻ります。 [例に戻る]

詳しくは, su(1) および whoami(1) リファレンス・ページを参照してください。

5.7    スーパユーザの概念

システムには,一般ユーザの許可を無効にするスーパユーザが存在します。 スーパユーザはルートとも呼ばれます。

ルート・ユーザはシステムの実行に関する絶対的権限を持っています。 このユーザにはすべてのファイルとすべての装置にアクセスする権利があり,システムに対して変更を行うことができます。 ルート・ユーザはスーパユーザ特権を持っているユーザであるとも表現できます。

ルート・ユーザが実行する作業の例を次に示します。

上記のタスクの多くは通常,システム管理者が実行するものです。 これらの作業を実行するシステム管理者はスーパユーザ特権を必要とします。 システム管理者の任務はシステムを管理することであり,上記タスクの実行の他に,新しいソフトウェアをインストールしたり,システム性能を解析したり,ハードウェア故障を通報したりすることが含まれます。

ユーザがシステムのシステム管理者であるかどうか,つまり,ルート特権を持つか持たないかは,システム環境によります。 サイト構成および担当する業務により,ユーザの特権が決定されます。

たとえば,端末またはワークステーションから集中システムにアクセスして作業を行う場合は,おそらくシステム管理者ではなくルート特権を持たないと思われます。 このような場合は,システムの維持,構成,およびアップグレードに責任を負うシステム管理者が,ルート特権を持つことになります。

独立した,あるいは他のワークステーションまたはシステムとネットワークで接続されたワークステーションから自分のタスクを遂行している場合は, たしかに自分のワークステーションについてルート特権を持っているかもしれませんが,サイトのシステム管理者ではありません。 このような場合には,自分のワークステーションだけを管理できます。 共用マシンおよびネットワークはシステム管理者が管理することになります。

ルート・ユーザになるためには,su コマンドを使用しますが,ルート・ユーザのパスワードも知っていなければなりません。

su

次の例は,Juan が管理者のタスクを遂行するためにルート・ユーザとなる手順を示しています。

$ su
Password: ...
# 
 

新しいプロンプトの番号記号 (#) は,Juan がルート・ユーザになり,新たにシェルが作成されたことを示します。 ルート・ユーザのシェルは /etc/passwd ファイルに定義されています。 これで Juan は管理者としてのタスクを遂行することができます。

注意

システムの不正使用によってデータの改ざんや破壊が発生する可能性があるため,システムに対して絶対的権限を持っているルート・ユーザは,パスワードの保護には十分に気をつけてください。

ルート・ユーザとしての作業を完了したら,自分のログイン ID に戻ります。 これを行うには,Ctrl/Dを押すか,または exit コマンドを入力します。 その後,システム・プロンプトが表示されます。

5.8    所有者とグループの変更 (chown および chgrp コマンド)

許可を設定するだけでなく,所有者やグループを変更することによっても,ファイルやディレクトリへのアクセスを制御できます。 所有者を変更するときは chown コマンドを,また,グループを変更するときは chgrp コマンドを使用してください。

注意

chown コマンドを使用するためには,スーパユーザ特権が必要です。 詳しくは5.7 節を参照してください。

chown コマンドの形式は次のとおりです。

chown owner filename

owner 変数はファイルの新しい所有者のユーザ名です。 filename 変数は,所有権を変更する 1 つまたは複数のファイルのリストです。 パターン照合文字を使用してファイルを指定することもできます。 詳しくは5.4.1.3 項を参照してください。

chgrp コマンドの形式は次のとおりです。

chgrp group file

group 変数は,新しいグループのグループ ID またはグループ名です。 ファイルのグループ所有権を変更するためには,ファイルの変更先のグループのメンバでなければなりません。 file 変数は,所有権を変更する 1 つまたは複数のファイルのリストを指定します。

詳しくは, chown(1) および chgrp(1) リファレンス・ページを参照してください。

5.9    セキュリティに関する追加情報

ユーザのサイトで実施されているセキュリティ・ガイドラインは,ファイルを無断アクセスから保護するためのものです。 セキュリティ・ガイドラインについての詳細は,システム管理者に問い合わせてください。

さらに,信用の置けないソフトウェア (ソースのわからないものや,システム・セキュリティの点で妥当性が確認されていないソフトウェア) の実行は避けるのが賢明です。 プログラムを実行するときには,そのプログラムはユーザの持つ全アクセス権を有しているため,そのプログラムが機密ファイルに違法にアクセスして読んだり,または改変しても,それを妨げる手段は何もありません。

セキュリティを危うくする 3 種類のプログラムに留意すべきです。

システム管理者がインストールしたものではないプログラムには注意してください。 掲示板や信頼できないソースから入手したプログラムは,特に用心が必要です。 たとえプログラムのソース・コードがある場合でも,それが信頼に値するかどうかを確定することは,十分慎重にプログラムを検査したとしても常に可能なわけではありません。