- ベストアンサー
WinSCPでSFTPによるファイル転送ができない
- WinSCPを使用してSFTPでファイルを転送する際に、エラーが表示されて転送できない問題について
- 転送先がホームディレクトリ以外の場合にはファイルの転送ができない
- サーバー側のファイヤーウォールの設定として特定のポートが開放されていることが必要
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> クライアント側のPCで作成した > ファイルをサーバーにUPしようと思えば、 > 大ざっぱにいうと、 > 1.SFTPで一般ユーザのホームディレクトリに転送 > 2.一般ゆーざからsuでrootに昇格 > 3.root権限で一般ユーザのホームディレクトリにあるファイルを/var/www/htmlに移動させる いえーすざっつらいと。 >>危険なのであまりお勧めはしないというか普通はしない。 > 「危険」とのことですが、 > どういう「危険」が考えられるでしょうか? まぁ死ぬほど危険という事はあんまりないけどね。 抽象的な話になるけど、rootでしか書き込めない場所っていうのはrootでしか書き込めないそれなりの理由がある訳よ。 なのでその原則から外れるような行動をあえて取るのは危険含みの可能性もあるでよって事。 もちろんその辺が全部分かってて適切な書き込み権限を与えるってのはrootの判断でやっちゃっていいと私個人は思っているんだけど、QAサイトという特性上「その辺の事を」踏まえないで書き込み権限をばんばん与えるような操作を説明するには「安易にこれやっちゃうと危険だよ」という事をあえて大げさに言っておいた方がいいかなって。ほら、ITProとかでWindowsのレジストリ操作をするようなTipsって大抵「レジストリをいじると動かなくなるかも云々」って書いてるでしょう。それと同じような意味合いだと思ってくれたらいい。 今回の話についての具体的な危険性という意味では、ANo2の方も触れてくれているけど、仮にユーザーuserのパスワードが漏れたらそのサイトのコンテンツを好きなように書きかえられちゃう。 もちろん漏らさないように気をつけてるとは思うし、ユーザーuserで書き換えを行えるのは/home/userと/var/www/htmlだけなのでCentOS 6のhttpd.confの初期設定では/var/www/htmlはCGIの実行や.htaccessによる設定の上書きはできないのでWebサイト経由で不正なプログラムを実行されるとかはない。 それに、例えばSFTPをパスワード認証じゃなくって公開鍵認証のみにするとか、特定のIPアドレスからしかSSH接続できなくするとか、iptablesでOUTPUTのSRC1024番以上をブロックしておくとか、何がどうなるとどう危険なのか分かっていれば対策はいくらでも打てるので「その辺」が分かってるなら死ぬほど危険て事は無いとは思うんだけどね。 LinuxでもFreeBSDでもSolarisでもAIXでも、設定によってはいくらでもアンセキュアな状態にできるよって事だな。
その他の回答 (2)
- wormhole
- ベストアンサー率28% (1626/5665)
>「危険」とのことですが、 >どういう「危険」が考えられるでしょうか? ユーザuserが書き換えたり削除したりしてはいけないものまで可能になるという事です。 またユーザuserのアカウントやパスワードが知られてはいけない人たちに知られた場合のことを考えてみてください。
お礼
wormholeさま コメントありがとうございます。 アドバイス参考にさせていただきます。 当分の間は、root権限で 一般ユーザのホームディレクトリにあるファイルを/var/www/htmlに移動させてファイルをUPしていきます。
- anmochi
- ベストアンサー率65% (1332/2045)
添付画像ではかろうじてPermission Deniedと読めるな。OKWaveは添付画像は小サイズになるので文字を読ませたい時はエラーメッセージを本文に書かないと読めない可能性があるですよ。 このPermission Deniedとは何かと言うと、「あなたはこのディレクトリ(/var/www/html)にファイルを書き込む権限がありません」という事だ。 一般的には/home/userにSFTPで転送した後でSSHでログインしてroot権限で/var/www/htmlに移動する事になるだろうな。SELinuxが有効になっている場合はそこからコンテキストの再設定を行うか、移動ではなくコピーした後で元のファイルを削除するのが良いかも。 ちょっと危険な技で、/var/www/htmlのパーミッションを775、オーナーをapache:apacheにした状態でユーザー(user)のサブグループにapacheを加えるという手がある。こうするとuserというユーザーが直接/var/www/htmlにファイルをアップロードする事ができるようになる。危険なのであまりお勧めはしないというか普通はしない。あるいは、/var/www/htmlのパーミッションを755、オーナーをuser:apacheにしてしまうという荒業も。こちらもまぁ普通はやらないけど、個人的なサーバーだったら別にいいんじゃないか。 今回はファイアウォールは関係ないです。
お礼
anmochiさま コメントありがとうございます。 上記の補足もご確認いただければ 幸いです。
補足
たびたびの質問で恐縮です。 >ユーザーが直接/var/www/htmlにファイルをアップロードする事ができるようになる。危険なのであまりお勧めはしないというか普通はしない >一般的には/home/userにSFTPで転送した後でSSHでログインしてroot権限で/var/www/htmlに移動する ということは、クライアント側のPCで作成した ファイルをサーバーにUPしようと思えば、 大ざっぱにいうと、 1.SFTPで一般ユーザのホームディレクトリに転送 2.一般ゆーざからsuでrootに昇格 3.root権限で一般ユーザのホームディレクトリにある ファイルを/var/www/htmlに移動させる という3つの作業を行うことになるのでしょうか? >危険なのであまりお勧めはしないというか普通はしない。 「危険」とのことですが、 どういう「危険」が考えられるでしょうか? ちなみに今回はご指摘のとおり、 レンタルサーバーや仮想サーバーではなく、 中古PCを使った個人サーバーで行っています。
お礼
再度のご回答ありがとうございます。 またファイルのUPロードに関する たくさんのアドバイスをいただき、 とても助かります。 >その辺が全部分かってて 自分で言うのもなんですが、 ちゃんと分かってませんね(汗 一番の安全策は、root権限で 一般ユーザのホームディレクトリにあるファイルを/var/www/htmlに移動させることのようですね~。 ただ、これからPHPやRubyのプログラミングを 学習しつつ、こまめに実行結果を確認していきたいので、 クライアント側で作成した、ファイルをサーバー側に 素早くUPして実行結果を確認したいのも事実です。 従って、しばらくは、suでroot昇格しつつも、 並行して、 ・SFTPの公開鍵認証 ・特定のIPアドレスのみのSSH接続不可 ・iptablesでOUTPUTのSRC1024番以上をブロック の方法についても研究していきたいと思います。