web-dev-qa-db-ja.com

SCPを使用してローカルからルート所有フォルダーにコピーする権限の「問題」

基本的なLAMPボックスをセットアップするために、いくつかの早期の取り組みを行っています。作業環境を手渡すだけではなく、使用するソフトウェアをセットアップするのは初めてなので、気を楽にしてください:)

Apacheをインストールしましたが、対応するhtdocsフォルダーにdrwxr-xr-xのアクセス許可があります。リモートからローカルにコピーできますが、小さなディレクトリをコピーしようとすると、アクセスが拒否されます。

ボックスで自分の管理者ユーザーアカウントを使用してログインしていることをお伝えしておきます。もちろん、htdocsは私の所有ではありません。

だから私は、私が単純にコマンドをSudoする必要があると思った-それはうまくいかなかった。次に、Webで読んだ内容に基づいて、権限を774に「修正」します。いいえ、どちらも機能しませんでした。 「3番目の「ユーザー」に書き込みアクセス権を追加する必要があるのでしょうか?それは奇妙なもののようです。

次に、フォーラムスレッドを読みました。このスレッドは、フォルダーがルート所有であるため、リモートホストのホーム/ディレクトリにファイルをscpしてから、Apacheフォルダーにsudocpする必要があると言われました。

私には長々とした方法のように思えますが、それを試みる前に、それが本当かどうか、ここにベストプラクティスがあるかどうか、そして私の仮定のいずれかが間違っているかどうかをここで尋ねると思いました。

次に、htdocsの適切な権限は何ですか?

私はまだ初期段階にあり、おそらく最終的にはFTPアクセスをセットアップする予定ですが、知っておくとよいでしょう。

3
Dan

この猫の皮をむく方法はたくさんあります。考慮すべき点は次のとおりです。

  1. htdocsツリーは、ほぼ確実にrootが所有している必要はありません。重要なのは、Apacheユーザーが読み取り可能であるということです。問題の* ixシステムに応じて、それはApachewww-dataなどになります。上記で指定したデフォルトのファイルモードであるdrwxr-xr-x(省略形755)がこれに適しています。

    したがって、問題は、このツリーを誰が所有し、どのグループに属するべきかということです。これで十分かもしれません:

    $ Sudo chown -R dan.Apache /var/www
    

    これは、ユーザーdan/var/wwwとその下のすべて(-R、再帰的)を所有し、そのグループApacheにもいくつかの権限があることを示しています。 httpdがグループApacheとして実行されている場合、ツリー内のファイルを読み取り、ツリー内のディレクトリを変更するのに十分な権限を取得している可能性があります。これはほとんどのサイトで十分です。

  2. もう1つの方法は、所有しているアクセス許可をすべて使用して、scp/var/www/ツリーの所有者になりすますように伝えるだけです。

    mybox$ scp ~/site-mirror/index.html [email protected]:/var/www/htdocs
    

    これにより、ルートindex.htmlファイルのローカルコピーがexample.comの適切な場所にコピーされ、ユーザーwwwとしてログインします。ここでは、必要なユーザー名とホスト名を使用できます。必要なのは、/var/www/ツリー所有者のユーザーとしてリモートでログインする機能だけです。それができない場合は、少なくともオプション#1を使用して、ファイルを直接scpできるように設定することを検討してください。

    事前共有キーを設定 SSHの場合、パスワードを入力する必要はありません。

    Webサイトの開発には、scpの代わりにrsyncを使用することをお勧めします。

    mybox$ rsync -ave ssh --delete ~/site-mirror [email protected]:/var/www/htdocs
    

    これは、mybox(ローカル作業マシン)の~/site-mirrorの内容を/var/www/htdocsexample.comにミラーリングし、ユーザーwwwとしてログインします。未加工のrsyncよりもscpを使用する利点は、変更されていないファイルをコピーして再コピーする必要がないことです。 Rsyncアルゴリズムは変更を計算し、それだけを送信します。

5
Warren Young

一見すると、あなたの問題は774権限設定にある可能性が最も高いです。基本的に、ディレクトリをその所有者とグループに対して読み取り可能、書き込み可能、​​実行可能に設定し、他のディレクトリに対しては読み取り可能であるが、実行可能ではないように設定しました。

つまり、所有者またはグループ以外のユーザーは、ディレクトリにcdして、ディレクトリ内のファイルにアクセスすることはできません。

空き時間にファイルのアクセス許可を確認することをお勧めします。今のところ、権限を755に設定して、問題が解決するかどうかを確認してください。

追加のクレジット: rsync および scponly ...を調べてください。これを行うには、ユーザーがreadソースからですが、宛先への書き込みアクセス権が必要です。

2
Shadur