- ベストアンサー
UNIXサーバでファイルを不可視にするには?
UNIXのサーバで、サーバ管理者の作ったCGI等を、 サイト管理者にFTP等で表示されたくないのですが、 ファイルをどのように設定すれば良いのでしょうか? (ファイルを弄られたり、コピーされたくないので) よろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
で、ディレクトリのパーミッションは701でOKです。 よく誤解されますがそのディレクトリ中のfileを読めるようにするためにはディレクトリに1(実行)を与えるだけです ディレクトリに読み取りを与えるとそのディレクトリ中の FILE一覧を表示できるようになります (もっともhttpd.confや.htaccessでも一覧表示は制限で きますが) で、もともとの質問に対する答えですが基本的に#5さんの方法でやるとして、 それに加えて以下の事もしなければいけません 1、httpd/conf/以下のfileは オーナー:root パーミッション:700 にする httpdそのものはroot権限で動くのでapacheの実行に は問題ないですがユーザーはhttpd.confの内容を読めません せっかくサーバー管理者用のfileを別の場所においてもユーザーがhttpd.confの内容を読めたのでは意 味ありませんから 2、実際にfileを置くディレクトリのパーミッションを701にして fileをどこにおいたかユーザーから判らなくする 3.FTPDの設定で自分のホームディレクトリ以外にはアクセスできなくする 例えばproftpd.confの場合 DefaultRoot ~/public_html !**** #public_htmlより上の層にはいけなくする。 DefaultRoot ~ !**** #ホームディレクトリより上の層にはいけなくする。 あと、#6に書いた件、他の回答者がだれも突っ込んでないので 私の勘違いかと思って自分のサーバーで実験してみましたが やはり#6に書いたとおり、任意のFILEも生成できるし そのFILEのパーミッション変更も出来ます
その他の回答 (6)
- umasikajiro
- ベストアンサー率67% (545/803)
回答2に対する補足で唖然!!! >CGI等プログラムが入っている親ディレクトリのパーミッションを707にして Oh! my GOD!!! そんな危険なこと、すぐやめてください 755よりひどいです 仮にwebサーバー管理のために 一般ユーザーと同じグループのアカウントを作った場合に グループからはアクセス出来ませんが other権限でCGIが動くにしろSuexecのユーザー権限で動くにしろ サーバ管理者がCGIを置くディレクトリに ユーザーの設置したCGIによって 任意のfileを生成・設置されてしまいます
- yambejp
- ベストアンサー率51% (3827/7415)
微妙にちがいます。 例えばapache2系であれば、/var/www/htmlを 公開用フォルダとするとhttp://www.hoge.co.jp/ のルートのところがhtmlフォルダになります。 サイト管理者であれば、その部分を色々書き 替えられればすむはずです。 またcgi-binは*ttp://www.hoge.co.jp/cgi-bin/foo.cgi のように参照されます。 あくまでもapache上のエイリアスなのでサイト管理者 は/var/www/html/cgi-binを探しても見つかりません。 よって触ることができないわけです。 (実際には/var/www/cgi-binにあるわけですから)
- yambejp
- ベストアンサー率51% (3827/7415)
通常ftpは/etc/ftpchrootなどで、ユーザーのアクセス 範囲がホームディレクトリに定められます。 例えばサイト管理者であれば、そのサイトのルートで あるディレクトリにアクセスするようchrootでホームを /var/www/htmlや/usr/local/apache/htdocsに しているのではないでしょうか。 一方cgiを置くフォルダはhttpd.confのScriptAlias などで、/var/www/cgi-binや/usr/local/apache/cgi-bin などもともとftpでアクセスできないところ を指定しているのが普通だと思います。
- yambejp
- ベストアンサー率51% (3827/7415)
CGIの領域は普通はhtmlファルトとは別フォルダで 管理されているのでそこへ一般ユーザーがftp接続 できないようにするだけでとりあえずは問題ないかと。
補足
どのような対処をすれば良いんでしょか? 具体的にお教えください。 よろしくお願いします。
パーミッションを絞るだけだと、CGIは動作しなくなります。 SuExec環境にして、ユーザー単位でファイル管理をする(そのかわり、http://foo.bar/~hoge/のようなURLになります)か、CGIの領域をaliasで切り別の場所におき、その上でftpサーバーをchrootで動作させてアクセス出来ないようにすればOKです。 難易度的には後者の方が低いですが、いずれにせよ、ちょっと手間はかかります。
補足
回答、ありがとうございます。 結構、設定が面倒なようですね。 当方のサーバーですが、 CGI等プログラムが入っている親ディレクトリのパーミッションを707にしてもプログラムが動作したんですが、 これでは、問題解決にならないでしょうか? 一応、サイト管理者がFTPで、 親ディレクトリ以降のファイルを表示、コピー等できなくなっています。 どんなものでしょうか? 専門家としてご意見をお願いします。
- galluda
- ベストアンサー率35% (440/1242)
がると申します。 「不可視」の定義にもよるのですが。 「ファイルを弄られたり、コピーされたくない」程度であれば、パーミッションを適切に設定すれば可能かと思います。
補足
早速の回答、ありがとうございます。 たとえば、 見られたくないファイルのあるディレクトリの パーミッションを707とかにすれば、 問題ないってことですか?
補足
詳しい説明、ありがとうございます。 上記方法では、 ○○.com/html/というディレクトリ以降が、 通常のFTPで使用できる範囲ということでしょうか? ○○.com/cgi-bin/以降がサイト管理者のみの領域になるということでしょうか?