パーミッション初心者ガイド:755 と 666 の違いを理解する
2009.03.17
error この記事は最終更新日から15年以上が経過しています。
Webデザイナー系の人とかに、仕事で Movable Type の設置からカスタマイズまでレクチャーすることとかが多いんですが、その時に、パーミッションについての解説をすると、妙に感動される人が結構な確率でいらっしゃいます。
曰く「いつもよくわからないまま 755 とか 666 とか設定するように書かれているからその通りにしていたけど、その意味がはじめて理解できた」とのこと。
つまり、Webデザイナー系の人は仕事柄、CGI の設置とかは経験してるんで、パーミッションの変更作業自体は普通にやってるんだけど、技術的なことには別に興味ないから、その作業自体の意味を知る機会がないみたいなんですよね。
というわけで、普段は(比較的初心者向けとは言え)技術者向けの記事ばっかり書いてる気がするんですが、今回は(ある程度Webのことがわかっている)非技術者の人が読むことを意識して、記事を書いてみます。
メジャーな FTP ソフトである「FFFTP」のパーミッション変更画面を例に出してみましたが、CGI の設置とかを経験している方なら、「拡張子 .cgi のファイルのパーミッションを 755 に変更」という文面は、見たことがあるかと思います。
あと、データファイルやログファイルを「666」に変更、とか。
この「755」とか「666」という数字が何を意味しているのかを簡単に解説してみようかと思います。
これらの三桁の数字は、それぞれ左から「そのファイルのオーナー」「オーナーと同グループのユーザー」「その他のユーザー」の、ファイルに対する権限を表します。
※オーナーとかグループって何、というのはとりあえず保留で。
つまり「755」なら、オーナーの権限は「7」、同グループのユーザーの権限は「5」、その他のユーザーの権限も「5」というわけです。
「666」ならどのユーザーも権限は「6」ですね。「644」なら、オーナーだけ「6」で、それ以外のユーザーは「4」です。
じゃあ、この「7」とか「6」とか「4」とかの数字は何なんだ、という話になるわけですが、ここで先ほどの FFFTP の画面をもう一度見てみてください。
「オーナー」「グループ」「その他」の各枠内に「呼出」「書込」「実行」という項目がありますね。
パーミッションとは、各ファイルに対する「呼出(ファイルを読むこと)」「書込(ファイルに書き込むこと)」「実行(プログラムを起動・実行すること)」の権限の設定だったわけです。
で、「呼出」「書込」「実行」の各権限には以下の数字が割り振られています。
- 「呼出」= 4
- 「書込」= 2
- 「実行」= 1
この数字を足し算したものが、「オーナー」「グループ」「その他」の各権限になります。
「呼出」「書込」「実行」全ての権限があれば「4+2+1 = 7」。
「呼出」「実行」の権限があるなら「4+1 = 5」
「呼出」「書込」の権限なら「4+2 = 6」
という具合です。
ここまでをふまえると、「755」というパーミッションが何を表しているのか、何となくわかりますよね。
- オーナー:「呼出」「書込」「実行」(4+2+1 = 7)
- グループ:「呼出」「実行」(4+1 = 5)
- その他:「呼出」「実行」(4+1 = 5)
というわけです。
「644」なら、
- オーナー:「呼出」「書込」(4+2 = 6)
- グループ:「呼出」(4)
- その他:「呼出」(4)
という感じですね。
だいぶパーミッションの謎も解けてきたんじゃないでしょうか。
後は、最初に出てきた「オーナー」「グループ」「その他」という謎の言葉が理解できれば、納得できそうですね。
この「オーナー」「グループ」「その他」の概念については、本格的に説明するとまたややこしくなるので、あくまで「FTP でファイルをレンタルサーバーetcにアップロードして Webサイトを運営してる非技術者な人」向けに、ざっくりとした説明をしておきます。
まず「オーナー」というのは、FTP でファイルをアップロードしたあなた自身のことです。
つまり、オーナーの権限が「7」というのは、読み込み(サーバー上のファイルの中身を見ること)も、書込み(サーバー上のファイルの内容を変更したり削除したり、上書きアップロードすること)も、実行(CGI 等のブログラムを実行すること)も可能、ということです。
「グループ」というのは、同じサーバー内の自分と同じグループのユーザーのことなんですが、そう言われても意味不明ですよね(笑)。
まあ、要するに「自分と同じサーバーにログインできる、自分以外の誰か」であることは間違いないので、この権限は個人的には「0」にしておくのが良いんじゃないかなと思ってます。
例えば、CGI の配布元にパーミッションを「755」と指定されていた場合も「705」にしとく、とかですね。
そして「その他」のユーザーというのは、文字通りなんですが、ブラウザ経由でアクセスしてくる一般ユーザーは、全てここに含まれます。
ちなみに、サイトオーナー自身であっても、ブラウザでアクセスしている時は「その他」のユーザーですので勘違いのないように。
つまり、「755」というのは、サイトオーナー自身はプログラムの実行も読込も書込(削除や上書きアップロードも含む)できるけど、それ以外のユーザーは書込(削除や上書きアップロードも含む)はできない、という設定なわけです。
誰にでも削除や上書きできちゃうと困りますからね。
ただ、CGI 経由でログファイルなどに書き込む際には、その CGI にアクセスしたユーザー(つまりは「その他」のユーザー)に書込権限がないと、ログの書込み等ができません。
なので、ログファイルやデータファイルには「666」(オーナー以外にも書込権限がある)というパーミッションが求められるケースが多いわけです。
ちなみに、「呼出」(読込)権限がない=「403 Forbidden」のエラーが返ってくる、ということになります。
Apacheでホスト名を設定する方法—httpd.conf での設定手順
2010.04.03
Apacheで特定のホスト名でアクセスできるように設定する方法を解説します。httpd.conf に適切な設定を追加し、ホスト名と対応するディレクトリを指定する方法を紹介します。
定期的なFTPバックアップ転送を自動化する方法
2009.09.14
FTPを使用して、定期的にサーバー間でバックアップデータを転送する方法を解説します。シェルスクリプトとcronを使って、毎日自動的にバックアップを転送する仕組みを作る手順を紹介します。
さくらのレンタルサーバーでメール受信時にスクリプトを起動する設定方法
2009.04.05
さくらのレンタルサーバーで、メール受信時に特定のスクリプトを自動で実行するための設定方法を詳しく解説します。必要なアカウント設定から、メール転送設定、スクリプトの実行権限設定までを一通り紹介します。
コマンドラインでのFTP操作—基本的なコマンドと使い方
2007.12.07
コマンドラインでFTPを操作する機会は少ないかもしれませんが、特定の状況では非常に便利です。この記事では、FTPの基本的なコマンドを紹介し、特にネットワーク系スクリプトやWebサーバー間のファイル転送に役立つ操作を解説します。