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

chmodの暗記法についてはすでに解説しましたが、権限を変更する方法がもう1つあります。ただし、最初は少し難しく感じられるかもしれません。

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

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

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

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

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

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

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

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

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

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

chmod 644 haiku.txt

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

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

図 10-17. グループの書き込み権限の削除

これで、haiku.txtへのグループと他のユーザーの書き込み権限が削除されました。グループの書き込み権限を元に戻すには、2番目の権限を表す数値にw(2)を加算した数値を設定します。

chmod 664 haiku.txt

警告666と777に注意
 

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

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

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