この章では、ディレクトリとファイルの所有者と所有権について理解を深めていきます。
ファイルの所有者と所有グループ
ファイルを作成すると、そのファイルを作成したユーザーのユーザーIDとグループIDがファイルの所有者と所有グループになります。これらは、ファイルの情報として重要な属性です。所有者はchownコマンドで変更でき、所有グループはchgrpコマンドで変更できます。
所有者の変更(chown)
ファイルの所有者を変更するには,chownコマンドを使います。
ユーザーとグループを返納するには、rootユーザーである必要があります。ディレクトリとファイルは区別なく変更できます。
ユーザーとグループの区切りには[.]の代わりに[:]を使うことも可能です。
1 |
chown ユーザー[.グループ] ディレクトリ or ファイル |
【代表的なオプション】
-R : 指定したディレクトリにある全てのファイルの所有者を変更
所有グループの変更(chgrp)
ファイルの所有グループを変更するにはchgrpコマンドを使います。
ディレクトリとファイルは区別なく変更できます。
1 |
chgrp グループ ディレクトリ or ファイル |
【代表的なオプション】
-R : 指定したディレクトリにある全てのファイルの所有者を変更
ファイルとアクセス権
ファイルはファイルを所有するユーザー、ファイル所有グループからファイル所有者を除いたユーザー、その他のユーザーの3レベルで権限を設定できます。
ファイルにはユーザーで分けた3つのレベルごとに読み込み可能、書き込み可能、実行可能の3つの権限があります。ファイルのモードを変更するにはchmdコマンドを使います。
ファイルにはユーザーで分けた3つのレベルごとに読み込み可能、書き込み可能、実行可能の3つの権限があります。ファイルのモードを変更するにはchmdコマンドを使います。
ファイルに設定できるアクセス
アクセス権について理解するために重要な概念がパーミッションです。さきほど ファイルにはユーザーで分けた3つのレベルごとに読み込み可能、書き込み可能、実行可能の3つの権限があります。これらを確認するためには、lsコマンドに-lオプションを付けたものを使用します。
試しにホームディレクトリでls -lコマンドを打ってみましょう。
試しにホームディレクトリでls -lコマンドを打ってみましょう。
その結果、各ファイルやディレクトリの先頭にアルファベットの羅列が表示されたと思います。これが各ファイルやディレクトリのアクセス権を表しています。さきほどアクセス権は3つの権限があると説明しましたが、読み込み可能はr (readable)、読み込み可能はw (writable)、実行可能はx (executable)の1文字で表しています。
以下の図のように、各ファイルやディレクトリのアクセス権を表記する前にファイル種別が書かれています。ディレクトリである場合は,”d”、ファイルであれば”-“と表記されます。ファイル種別を示した後に、所有ユーザー、所有グループ、一般ユーザーに対するアクセス権がr,w,xで示されています。例えば、あるファイルの所有ユーザーには全アクセス権が付与されているが、所有グループ、一般ユーザーには読み込み権限しか与えられていない場合、「- rwx r– r–」で表されます。
アクセス権の変更(chmod)
ファイルやディレクトリのアクセス権を変更するにはchmodコマンドを使います。
1 |
chmod モード(or 8進数表記尾モード) ディレクトリ or ファイル |
ファイルのモードを所有ユーザーと所有グループとそれ以外のユーザーについて設定します。モード指定の書き方で次の2通りの記述方法があります。
・モードの書式を複数書き、カンマで区切って指定する。
・8進数3桁で各ユーザーのレベルを指定する。
【代表的なオプション】
-R : 指定したディレクトリにある全てのファイルのアクセス権を変更
モードは、u(所有ユーザー)、g(所有グループ)、o(一般ユーザー)に対して、r(読み)、w(書き)、x(実行)を設定したり(=)、取り消したり(-)、加えたり(+)します。全てのユーザーに同じ権限を与える場合はaを指定します。
8進数で設定する場合は、rwxを数値で表したものの合計値を3桁で表します。
664であれば、所有ユーザーと所有グループには読み取り権(4)と書き込み権(2)があり(4+2=6)、一般ユーザーには読み取り権(4)があることが分かります。
【演習】
touchコマンドでファイルを作成し、lsコマンドでアクセスを確認してみましょう。
その後、ファイルの権限を上記で説明した2つの方法で変更してみましょう。
ファイル作成のモード
ファイルを新規に作成すると、ユーザーごとに規定されたパーミッションである、664、644が設定されてファイルが作成されます。umaskコマンドを使うことで指定したパーミッションでファイルを作成するように制限することができます。
1 |
umask [8進数のモードのマスク値] |
・現在のマスク値を表示
umaskコマンドに続けてマスク値を指定しなかった場合、現在のマスク値を表示します。
・マスク値を変更
umaskコマンドに続けてマスク値を指定すると、コマンドを実行後に作成されるファイルが指定したパーミッションで作成できます。umaskコマンドは許可しないビットを指定します。umaskコマンドで指定するマスク値は、すべてのユーザーが読み書きできるパーミッション666から、設定したいパーミッションを引き算することでマスク値を求めることができます。
以下のようにパーミッションが666のファイルを644に変更したい場合は、umask値を022に設定します。
【演習】
現在のマスク値をumaskコマンドで確認して、touchコマンドでfile1を作成してください。その後、マスク値を070に変更してfile2を作成してください。ls -lコマンドでこれら2つのファイルのアクセス権を確認してみましょう。