UNIX系OSにおけるファイルのアクセス権限について
アクセス権
UNIX系OSは複数のユーザからアクセスされることを前提に作られています。
そのためユーザごとに各ファイル(コマンドも含めて)に対するアクセス権限を適切に与えなければなりません。
このアクセス権には、
の3つがあります。
ディレクトリにも上記の3つの権限があり、
を表します。
では実際にファイルの権限を見てみましょう。
現在のディレクトリで
$ ls -l
とコマンドを入力($はコマンドラインを表します)。
drwxrwxrwx 1 user group 20 6 4 testfile
というような結果が返ってくるはずです。
最初の10文字(drwxrwxrwx)の2文字目以降の9つの文字がアクセス権限を表し、userとgroupが所有するユーザとグループをそれぞれ表します。
まず最初の10個の文字列の2文字目以降に着目します。
最初の3文字がファイルの所有者のアクセス権、次の3文字がグループのアクセス権、最後の3文字がその他のユーザのアクセス権を表します。rやwなどの英字で表されていればその権限を持っており、-(ハイフン)が書かれていればその権限を持っていないという意味です。
それぞれのユーザやグループがどの権限を持っているのかをこのように確認できます。
グループ
UNIXではすべてのユーザがグループに所属します。ユーザは複数のグループに所属することもあります。
自分の所属しているグループは
$ groups
で確認できます。
$ groups <ユーザ名>
でユーザ名の所属するグループも確認できます。
このグループ情報は/etc/groupに記述してあります。
アクセス権の変更
アクセス権を変更するにはchmodコマンドを用います(change modeの意味)。
rwxのそれぞれの権限を2進表記に見立てて
r = 4
w = 2
x = 1
として、与えたい権限をこの数の和で表します。
例)
この数を所有者、グループ、他のユーザに与える権限の順に並べます。
実際に変更するコマンドは以下のようになります(#はコマンドラインでsuperuserが実行しているという意味)。
# chmod 755 filename
ここでは所有者にrとwとx、グループにrとx、他のユーザにrとxの権限を与えています。
所有者/所有グループの変更
所有者/所有グループを変更するにはchownコマンドを使います(change ownerの意)。
使い方は以下のように
# chown username:groupname filename
とします。これでfilenameの所有者がusername、グループがgroupnameに変更されました。
# chown -R username:groupname dirname
とします。
アクセス権、所有者を変更する例
あるユーザがphpファイルを作成し、コマンドラインからそのファイルを実行し、DBにinsertすることを考えてみましょう。
この時ファイルの実行者は所有者なので、ユーザ権限にwがあれば実行できます。
しかし、ブラウザ上からこのphpファイルを実行することを考えてみてください。
この時のファイルの実行者はapacheでありapacheはwww-dataグループに所属しています。
この時、グループ(あるいは他のユーザ)のw権限がなければこの書き込みプロセスはpermissionがないので失敗してしまいます。
そこで、ブラウザ上からもこのファイルを実行できるようにするために、
# chown user:www-data filename
# chmod 664 filename
としてファイルの所有グループとグループのアクセス権限を変更する必要があります。
参考:
- 作者: ケビン・リチャード,エリック・F・ジョンソン,武藤健志,トップスタジオ
- 出版社/メーカー: 翔泳社
- 発売日: 2007/02/22
- メディア: 大型本
- 購入: 1人 クリック: 6回
- この商品を含むブログ (2件) を見る
何か間違いがあれば指摘してください。
(文責: 篠塚@shinofumi_jp)