「共用型のレンタルサーバー」を利用していて、このような疑問を持ったことはありますでしょうか?
- なぜ他人のディレクトリが見れないのか?
- なぜ他人のデータが見れないのか?
- 自分のデータは他人に見られていないのか?
という疑問に対して解説します。
下記の記事は具体的に chroot を使って DNS サーバーを構築しています。
【CentOS7】 DNSサーバーの構築手順(bind-chroot、bind9.9.4)
共用型レンタルサーバーなのになぜ他人のデータが見れないのか?
レンタルサーバーには「共用型」と「専用型」がある
レンタルサーバーには「共用型」と「専用型」があります。
- 共用型のレンタルサーバ → 複数の人に1台のサーバを貸し出すサービス
- 専用型のレンタルサーバー → 一人に1台のサーバーを貸し出すサービス
共用サーバーの場合
専用サーバーの場合
メリット | デメリット | |
---|---|---|
共用型レンタルサーバー | 価格が安い | できることが限定的 他人の影響を受ける |
専用型レンタルサーバー | ハイスペック 他人の影響を受けない | 価格が高い |
レンタルサーバーに使える予算がたくさんあれば専用サーバーを借りて自分の好きなようにカスタマイズできます。
しかしカスタマイズよりも安く使いたいなら共用型のレンタルサーバーを利用します。
ただ、正直言って高い料金を払って専用型のレンタルサーバーを借りたところでメリットはあるかと言うと、そんなにはないと思います。
メリットがある場合としては
- サーバー周りで専門的なスキルがある(最低限レンタルサーバー会社のインフラ系エンジニアと同等レベルもしくはそれ以上)
- Webアプリを開発しているが、特定の環境でしか動かない(15年前のJavaのバージョンでしか動かないとか・・・でもVPSでも可能か?AWSだと難しい)
- 膨大なアクセスが見込め、取りこぼしがないようにしたい(共用型レンタルサーバーだと他人の影響を受けるため)
でしょうか。
手厚いサポートなら「共用型」でも受けられますし、新しいWebアプリを開発したい場合も「仮想(VPS)」や「クラウド(AWS)」で開発した方がコストを抑えることができると思います。
わざわざ高い料金を払ってでも「専用型レンタルサーバー」にしなければいけない理由はそんなにないです。
共用型のレンタルサーバーはいろんな人が共用しています。
たとえばレンタルサーバー会社によって環境が違いますが、「共用型レンタルサーバー」でも
- 他人のディレクトリが見えるがアクセスできないパターン
- そもそも自分のディレクトリしか見えないパターン
があります。
他人のディレクトリが見れるがアクセスできないパターン
これは単純に「アクセス制限」しているからです。
だから見えるけどアクセスはできません。
アカウントがあるのでログインができます。
そしてディレクトリも移動できます。
しかしアクセス制限がされているので、見えるけどアクセスはできません。
ただ、この形式は私は好きではないですね。
というもの、たいていアカウント名でディレクトリを作っているのでセキュリティ的にパスワードがクラッキングされる危険性も高いと思うからです。
そもそもアカウント名も知らなければ、もっとリスクは下がるはずですから。
しかもこの形式でパスワードが「password」とか「testtest」なんて設定していたとしたら怖いですよね。。
そもそも自分のディレクトリしか見えないパターン
次が「そもそも自分のディレクトリしか見えないパターン」です。
ちなみにエックスサーバーの共用型レンタルサーバーの場合は自分のディレクトリしか見えないパターンです。
共用型レンタルサーバーということは複数の人で1台のサーバを使うことになるので、自分が保存したデータと同じサーバーで、他の誰かもデータを保存していることになります。
ということは、設定次第では「他人のディレクトリにアクセスできてデータを読めてしまう」こともあれば「他人からデータを読まれてしまう」可能性もあります。
しかし現状、そんなレンタルサーバーはありませんので安心してください。
では、なぜ他人のデータが見れないのでしょうか?
chrootで規制している
「FFFTP」とか「WinSCP」などでFTPアカウントで接続したり、sshでレンタルサーバーにログインして利用したりしていると思いますが、「chroot」で他人のディレクトリにアクセスできないように規制されています。
そもそも「chroot」とは何か?
chroot は「change root」の略です。
特定のプロセスと、その子プロセスに対して「ルートディレクトリを設定」することができます。
通常、ルートディレクトリは「/」で表現されるトップディレクトリになりますが、「chroot」コマンドで設定することより、例えば apache プロセスのルートディレクトリを「/var/chroot/apache」など任意のディレクトリに変更することができます。
要は root(ルートディレクトリ)を変更するコマンドとも言えます。
例えば、レンタルサーバーは大体「Linux」で構築されていますが、Linuxのディレクトリ構造はこのようなツリー構造になっています。
/(root)ディレクトリの直下には「/home」や「/var」といったディレクトリが配置されています。
しかし「chroot」で下図のように「/home/yama」ディレクトリをヤマちゃんにとっての「/(root)」ディレクトリに設定して、それ以上、上のディレクトリには行けないようにしています。
また、「見せない」ようにもしています。
アクセス制限をしているのではなく、「閉じ込めている」イメージです。
だから「root監獄」とも言われます。
man 2 chrootの結果
manページは別に読まなくてもいいんですが、manページを読むと新しい発見というか、何かしら気が付くことがあります。
# man 2 chroot | col -b NAME SYNOPSIS int chroot(const char *path); Feature Test Macro Requirements for glibc (see feature_test_macros(7)): chroot(): DESCRIPTION Only a privileged process (Linux: one with the CAP_SYS_CHROOT capability) may call chroot(). This call changes an ingredient in the pathname resolution process and does nothing else. This call does not change the current working directory, so that after the call ‘.’ can be outside the tree rooted at ‘/’. mkdir foo; chroot foo; cd .. This call does not close open file descriptors, and such file descriptors may allow access to files outside the chroot tree. RETURN VALUE ERRORS EACCES Search permission is denied on a component of the path prefix. EFAULT path points outside your accessible address space. EIO An I/O error occurred. ELOOP Too many symbolic links were encountered in resolving path. ENAMETOOLONG ENOENT The file does not exist. ENOMEM Insufficient kernel memory was available. ENOTDIR EPERM The caller has insufficient privilege. CONFORMING TO NOTES FreeBSD has a stronger jail() system call. SEE ALSO COLOPHON Linux 2010-09-20 CHROOT(2) |
結論
いろいろな理由から他人のディレクトリが見えるレンタルサーバーより、見れないレンタルサーバーの方がいいと思いました。
最近エックスサーバーを使っていて、値段の割には「かゆいところに手が届く」ようなサービスを提供しているのでお勧めしています。
月額900円(税抜)から、高速・多機能・高安定レンタルサーバー『エックスサーバー』
コメント
コメント一覧 (1件)
[…] 【chroot】 なぜFTPでレンタルサーバーにアクセスしても、他のアカウントの… […]