Linuxを使い始めた人,資格試験合格を目指す人を対象に,模擬試験形式でLinuxの基礎を解説します。
問題:アクセス権が「rwxrwxrwx」であるディレクトリの中に,「r--r--r--」に設定された「file」という名前のファイルがある。次の操作を実行できるか? A) date т file B) rm file |
ポイント:Linuxでは,各ファイルやディレクトリに対し,アクセスしようとする者と作成者の関係によって,アクセスの可否が設定されます。ファイルの修正には書き込み権限が必要になりますが,ファイルの削除ではディレクトリの書き込み権限が参照されます。 キーワード:パーミッション,chmod,umask |
Linuxでは,各ファイルやディレクトリに,アクセス権が設定されます。アクセス権は,「パーミッション」とも呼ばれます。
アクセス権は,アクセスしようとするユーザーを,そのファイルやディレクトリの作成者(所有者)の「同一ユーザー(所有者)」「同じグループ」「その他」に分けて,それぞれに対して別々に設定します。
コマンドラインから「$ ls -l」と実行すると,カレント・ディレクトリに含まれるファイルやディレクトリの情報として,アクセス権が表示されます(図1)。最初の「hikasa」はファイルの所有者,次の「hikasa」は所有者の所属するグループを表します。各行の2文字目から10文字目までの9文字分がアクセス権です*1。各桁(けた)の「r」「w」「x」「-」は,rは読み出し権限,wは書き込み権限,xは実行権限,-はいずれの権限もないことを意味します。9桁の表示は3桁ずつに分けられ,先頭の3桁が「所有者」,続いて「同じグループ」,最後に「その他」のアクセス権を指します。
![]() |
図1●lsコマンドでカレント・ディレクトリの詳細情報を表示した例 各ファイルやディレクトリのアクセス権も確認できる。 [画像のクリックで拡大表示] |
例えば「rw-r-----」というファイルのアクセス権は
・所有者は読み書き可能(rw) ・同一グループは読み出し可能(r) ・その他はアクセスできない |
となります。
3桁ごとにrが4,wが2,xが1として足し算を行い,3桁の数字で表すことを「アクセス権の8進表記」と呼びます。上記の例は,「640」になります。
ディレクトリの権限に注意
ファイルに書き込み権限がないと,ファイルの内容を直接修正できません。例題にあった「$ date >> file」は直接の修正なので,ファイルへの書き込み権限がないと実行できません。しかし,ディレクトリの書き込み権限があると,ディレクトリ内にあるファイルの作成や削除ができます。ファイルを削除し,同じ名前のファイルを作成すれば実質的な修正も可能です。
本当に修正したくないファイルは,書き込みを禁止したディレクトリに保存するか,ディレクトリのアクセス権を変更する必要があります。
アクセス権の変更
アクセス権の変更は,chmodコマンドを利用します。所有者の書き込み権限を削る場合は,次のように実行します。
$ chmod u-w ファイル名もしくはディレクトリ名 |
「u」は所有者を表します。同一グループは「g」,その他は「o」,すべては「a」を指定します。「-」は削除する場合で,加える場合は「+」を指定します。所有者の権限をrwxにする場合は「u=rwx」とします。
8進表記を使ってアクセス権を「644」に変更する場合は,次のように実行します。
$ chmod 644 ファイル名もしくはディレクトリ名 |
所属の変更
前述したように,各ファイルやディレクトリには,「所有者」と「グループ」が登録されています。ファイルを作成すると,所有者にはファイルを作成したユーザー,グループは所有者の所属するグループ(大抵はユーザー名と同一のグループ)が指定されます。
「所有者」と「グループ」はコマンドで変更できます。
■所有者の変更 $ chown ユーザー名 ファイル名もしくはディレクトリ名 ■グループの変更 $ chgrp グループ名 ファイル名もしくはディレクトリ名 |
新規作成時のアクセス権
Linuxでは,ファイルやディレクトリを新規作成すると,デフォルト(初期設定)のアクセス権は次のようになります。
・ファイルは666(rw-rw-rw-) ・ディレクトリは777(rwxrwxrwx) |
ところが,Linuxディストリビューションによっては,デフォルトのアクセス権が異なる場合があります*2。特に,umaskコマンドを使って,デフォルトのアクセス権がユーザーごとに変更されていることがあります。
「$ umask」と実行すると,3桁もしくは4桁の数値が表示されます。この3桁(4桁の場合は下3桁)が「マスク値」と呼ばれます。マスク値は,前述のアクセス権の8進表記と関係があります。マスク値が「002」の場合,これをrw x -で表記すると「-------w-」になります。「マスク値が002」は,「『その他』の書き込み権限を許可しない(マスクする)」ことを表します。このとき新規でファイルを作成すると,アクセス権は「664(rw-rw-r--)」になります。ディレクトリの場合は,「775(rwxrwxr-x)」になります。
マスク値の変更は,「$ umask 新しいマスク値」でできます。
類題 Q1 umaskコマンドを実行すると「026」と表示される状態でファイルを作成した。アクセス権はどのように設定されるか。 (A) rwxr-x--x (B) rw-r--r-- (C) rw-rw-rw- (D) rw-r----- |
【問題と類題の解答は次ページ】