LinuxやLinuxをベースとした環境でファイルやディレクトリを操作する場合、ファイルやディレクトリのアクセス権や所有者についての理解が必要です。
そこでここではRedHat系Linuxを例に、ファイルやディレクトリの所有者やアクセス権を確認したり、所有者やアクセス権を設定する方法を紹介します。
目次
ファイルの所有者とグループ
ファイルやディレクトリを作成すると、作成したユーザーがそのファイルやディレクトリの所有者として設定されます。また、所有者のプライマリグループがファイルやディレクトリのグループとして設定されます。
ファイルやディレクトリの所有者を確認するときは「ls -l」コマンドを実行します。
たとえば、グループ「user99」に所属するユーザー「user99」がファイルを作成すると、そのファイルの所有者は「user99」所有グループは「user99」となります。
ファイルの所有者を変更する
ファイルやディレクトリの所有者を変更するときは「chown」コマンドを使用し、コマンドの書式は次のとおりです。
chown [オプション] ユーザー[:グループ] ファイル名/ディレクトリ名
たとえば、sample.txtの所有者と所有グループをrootに変更したいときは、以下のように実行します。
# chown root:root sample.txt
また、chownコマンドに「-R」オプションを付加すると、指定したディレクトリとその配下のファイルの所有者を一括変更できます。
ファイルのアクセス権
ファイルやディレクトリには、どのユーザーがどのような操作を行えるかを定義したアクセス権が設定されています。
アクセス権は、所有者/所有グループに所属するユーザー/そのほかのユーザーの3者それぞれに対して、読み取り/書き込み/実行のいずれの操作を許可するかを設定されています。
アクセス権の表記は読み取り(r)、書き込み(w)、実行(x)で表し、ファイルやディレクトリに設定されているアクセス権を確認するときは「ls -l」コマンドを実行します。
アクセス権の表示は、左から3文字ずつ「所有者のアクセス権」「所有グループのアクセス権」「そのほかのユーザーのアクセス権」を表しています。
たとえば、上に表示されている「sample2.sh」のアクセス権は次のとおりです。
- 所有者は、読み取り/書き込み/実行が可能(rwx)
- 所有グループは、読み取り/実行が可能(r-x)
- そのほかのユーザーは、読み取りのみ可能(r--)
なお、アクセス権の左側の1文字はファイルの種別を表しており「-」は通常のファイル、「d」はディレクトリ、「l」はリンクを表します。
ファイルのアクセス権を変更する
ファイルやディレクトリのアクセス権を変更するときは「chmod」コマンドを使用し、コマンドの書式は次のとおりです。
chmod [オプション] アクセス権 ファイル名/ディレクトリ名
chmodコマンドでアクセス権を変更する場合、アクセス権の指定方法には記号で指定する方法と、数値で指定する方法があります。
記号で指定する場合は、設定対象と権限を以下の記号を組み合わせて指定します。
対象 | 説明 |
---|---|
u | 所有者 |
g | 所有グループ |
o | そのほかのユーザー |
a | 上記3つすべて |
操作 | 説明 |
---|---|
+ | 権限を追加 |
- | 権限を削除 |
= | 権限を指定 |
権限 | 説明 |
---|---|
r | 読み取り |
w | 書き込み |
x | 実行 |
たとえば、sample2.shファイルに対して、所有グループとそのほかのユーザーに書き込み権限を付与したい場合は、以下のようにコマンドを実行します。
# chmod go+w sample2.sh
数値で指定する場合は、対象のファイルやディレクトリに対する所有者/所有グループ/そのほかのユーザーそれぞれの権限を、下表の数値の和で指定します。
数値 | 説明 |
---|---|
4 | 読み取り |
2 | 書き込み |
1 | 実行 |
たとえば、sample2.shファイルに対して、以下の設定でアクセス権を設定したいときは、次のようにコマンドを実行します。
- 所有者:読み取り+実行(4+1=5)
- 所有グループ:読み取り(4)
- そのほかのユーザー:なし(0)
# chmod 540 sample2.sh
なお、chmodコマンドも「-R」オプションを付加すると、指定したディレクトリとその配下のファイルのアクセス権を一括変更できます。
デフォルトのアクセス権を設定する
ファイルやディレクトリを作成したときにデフォルトで設定されるアクセス権は、umask値で決定され、ファイルは「0666」ディレクトリは「0777」からumask値を引いた値がアクセス権として設定されます。
現在のumask値を確認するときは、以下のようにコマンドを実行します。
$ umask
0002
上の場合umask値が「0002」なので、ファイルを作成したときのアクセス権は「0666-0002=644」、ディレクトリを作成したときのアクセス権は「0777-0002=775」となります。
umask値を変更するときは、以下のようにコマンドを実行します。
$ umask [umask値]
たとえば、umask値を「0027」と設定した場合、ファイルを作成したときにアクセス権は「0666-0027=640」となり、ディレクトリを作成したときのアクセス権は「0777-0027=750」となります。
あとがき
LinuxやLinuxをベースとした環境で、ファイルやディレクトリの所有者やアクセス権を確認したり設定する場合、基本的知識としてはここで紹介した内容を把握しておけばOKでしょう。