chmodと数値の少し難しい関係

 chmodの「暗記法」についてはすでに解説しましたが、権限を変更する方法がもう1つあります。ただし、数学に強くないユーザーにとっては、最初はすこし複雑に感じられるかもしれません。

 sneakers.txtの権限は、最初次のようになっていました(ls -l sneakers.txtと入力します)。

-rw-rw-r-- 1 newuser newuser 150 Mar 19 08:08 sneakers.txt

 数値による設定では、各ユーザーグループ(所有者、グループ、その他のユーザー)に対するそれぞれの権限を、次のように数値で表します。

 各ユーザーグループに対する権限に対応する値を足し合わせ、その合計を使って権限を設定します。

 sneakers.txtの権限を数値で表すと、次のようになります。

- (rw-) (rw-) (r--)
| | |
4+2+0 4+2+0 4+0+0

 所有者に対する合計は6、グループに対する合計は6、そして、その他のユーザーに対する合計は4となります。この場合、このファイルに対する権限を数値で表すと、664となります。

 ここで、sneakers.txtへの権限を、グループ(group)のメンバーに対しては書き込み権限は与えずに読み込み権限だけを与えるように変更するとします(Figure 10-16を参照)。この場合、現在のグループの権限を表す数値から2を引いて、書き込み権限を削除しなければなりません。

 権限を表す数値は6と4と4、つまり644となります。

 そこで、次のように入力します。

chmod 644 sneakers.txt

 ファイルを一覧表示(ls -l sneakers.txt)して、変更の結果をチェックしてみましょう。

-rw-r--r-- 1 newuser newuser 150 Mar 19 08:08 sneakers.txt

Figure 10-16. グループの書き込み権限を削除

 予定どおり、sneakers.txtへのグループの書き込み権限が削除されました。グループの書き込み権限を元に戻すには、2番目の権限を表す数値にw(2)を加算した数値を設定します。

chmod 664 sneakers.txt

Warning666と777に注意
 

権限を666あるいは777にすると、誰でもファイルやディレクトリの読み込みと書き込みができるようになります。つまり、このような設定では機密ファイルを不正に操作できることになります。したがって、通常は、こうした設定は避けるべきでしょう。

 以下に、よく使われる設定の数値と意味を一覧にしておきましょう。

 次に、ディレクトリに対してよく使われる設定をあげます。