アクセス権に関する前節までの説明では、chmod コマンドを使って現在のアクセス権の設定を相対的に変更する方法だけを取り扱ってきました。chmod コマンドの別の方法を使うことによって、ファイルやディレクトリの絶対的なアクセス権を設定できます。この方法では、アクセス権を指定する数値コードを使います。
この形式の chmod コマンドの構文は次のとおりです。
chmod numcode name
numcode は数値コード、name はアクセス権が変更されるファイルやディレクトリの名前です。
数値コードは、3 つの数字からなります。1 つの数字が 3 つのユーザカテゴリ (所有者、グループ、他のユーザ) の各々に適用されます。たとえば、次のコマンドは、所有者とグループに対して読み取り権、書き込み権、実行権の絶対アクセス権を設定し、他のユーザに対して実行権だけを設定しています。
$ chmod 771 garlic |
表 3-1 は、garlic のアクセス権が 771 というコードによって、どのように表現されるかを示しています。
表 3-1 garlic のアクセス権
アクセス権 |
所有者 |
グループ |
他のユーザ |
---|---|---|---|
読み取り権 |
4 |
4 |
0 |
書き込み権 |
2 |
2 |
0 |
実行権 |
1 |
1 |
1 |
合計 |
7 |
7 |
1 |
表 3-1 の各列は、所有者、グループ、他のユーザというユーザカテゴリにそれぞれ対応しています。読み取り権を設定するには、適切な列に 4 を挿入します。同様に、書き込み権を設定するには 2 を挿入し、実行権を設定するには 1 を挿入します。表の最終行に表示された各列のそれぞれの合計値が最終的な数値コードになります。
この方法によって絶対アクセス権を設定するもう 1 つの例を次に示します。ここでは chmod の結果を確認するために、ls -l コマンドを実行しています。
$ ls -l onion -rw-r--r-- 3 user2 1024 Feb 10 11:46 onion $ chmod 755 onion $ ls -l onion -rwxr-xr-x 3 user2 1024 Feb 10 11:48 onion $ |
ファイル onion のアクセス権は、所有者に対しては読み取り、書き込み、実行が可能、グループと他のユーザに対しては読み取りと実行が可能になるよう設定されています。onion のアクセス権の設定に使われた数値コードを表 3-2 にまとめます。
表 3-2 onion のアクセス権
アクセス権 |
所有者 |
グループ |
他のユーザ |
---|---|---|---|
読み取り権 |
4 |
4 |
4 |
書き込み権 |
2 |
0 |
0 |
実行権 |
1 |
1 |
1 |
合計 |
7 |
5 |
5 |
また、ファイル cabbage に関する読み取り、書き込み、実行の全アクセス権を所有者、グループ、他のユーザに与える場合は、次のように入力できます。
$ ls -l cabbage -rw-r--r-- 3 user2 1024 Feb 10 11:51 cabbage $ chmod 777 cabbage $ ls -l cabbage -rwxrwxrwx 3 user2 1024 Feb 10 11:53 cabbage $ |
この例の数値コードを表 3-3 にまとめます。
表 3-3 cabbage のアクセス権
アクセス権 |
所有者 |
グループ |
他のユーザ |
---|---|---|---|
読み取り権 |
4 |
4 |
4 |
書き込み権 |
2 |
2 |
2 |
実行権 |
1 |
1 |
1 |
合計 |
7 |
7 |
7 |
777 という数値コードが、指定できる最大のアクセス権の値です。
相対アクセス権の変更の場合と同様に、ワイルドカード文字の * を使ってカレントディレクトリ内の全ファイルの絶対アクセス権を設定することもできます。たとえば、カレントディレクトリ veggies 内の全ファイルに絶対アクセス権を設定することで、所有者は読み取り権と書き込み権と実行権、グループは読み取り権と実行権、他のユーザは実行権だけを持つようにするには、次のように入力します。
上記の例では、この chmod 操作をこれからどのディレクトリで実行するのか確認する必要があることを示すために、pwd コマンドを最初に実行しています。最初の ls -l コマンドは、アクセス権の変更結果を明らかにするために実行しています。相対アクセス権とは違って、絶対アクセス権を設定するときは、アクセス権の現在の設定状態を知る必要はありません。
chmod コマンドについての詳細は、『SunOS リファレンスマニュアル (1): ユーザーコマンド』を参照してください。