0

現在、LAMP スタックを使用してインストールしてtaskselいますが、問題が発生しました。Web サイト フォルダーが配置されている場所は、簡単に書き込むことができません。何をするのもキースターの苦痛です。

/var/www

私は Linux で LAMP を初めて使用するので、間違っている可能性があります。これは私の開発マシン専用であり、本番用ではありません。

PHP アプリケーションを開発し、Apache でローカルに実行する場合のワークフローはどのようなものですか? Linux からのアクセス許可のため、デフォルト パスのファイルを編集することさえできません。

助言がありますか?ホームディレクトリにフォルダを作成し、代わりにそれを使用するように Apache に指示することはできますか?

常連は何をしているの?

4

3 に答える 3

1

私にとってこれを行うための「最も良い」方法は、Apache 内の DocumentRoot の値を自分が書き込み可能なディレクトリに変更するか、エイリアスを作成することです。

/etc/apache2/sites-enabled/000-default にある debian/ubuntu の conf ファイル (またはデフォルト サイト) を開き、DocumentRoot とそのディレクトリ (/var/www) へのその他の参照を編集します。

DocumentRoot /home/user/Projects
<Directory /home/user/Projects>

その後、apache を再起動 (sudo services apache2 restart) すると、書き込み可能な場所で動作するようになります。これには 1 つだけ不便な点があります。ファイルをアップロード/作成するための書き込み権限を apache に与えるには、ユーザー グループに apache を追加する必要があります。

お役に立てれば!ゴンサロ G.

于 2012-05-31T22:41:49.537 に答える
1

Unix ファイルシステムのアクセス許可は、安全セキュアなコンピューティング エクスペリエンスを提供するために存在します。アクセス許可を使用してワークフローをモデル化し、権限の昇格をたまに行うのが最善です。権限の昇格は問題が発生しやすいためです。最小特権の原則に従うことで、多くのセキュリティ上の欠陥が重大な結果をもたらすのを防ぐことができます。

静的 Web コンテンツ、実行可能 Web コンテンツ (およびおそらく Web ログ?) を に格納するディレクトリがあります/var/www/。Apache ユーザーが所有したり、ユーザー アカウントが所有したりしないでください。root(または などのより具体的なものwww-content) 意味があります。

実行中の Web サーバーに自身のコンテンツを変更する機能を持たせたくありません。多くの PHP ワームがこの方法で拡散します。Web サーバーがログ ファイルへの書き込みしかできない場合、権限を悪用することはほぼ不可能です。データベース パイプへの書き込みもできる場合、データベース権限で許可されていることは何でも実行できます。たとえば、データを自由に読み書きしたり、特定の方法で特定のデータを読み取ったりすることができます。後で提供するために画像を保存するディレクトリに書き込むことができる場合、不要なコンテンツをホストするために悪用される可能性がありますが、少なくとも大規模なサイトに影響を与えることはできません. コンテンツのいずれかに書き込みできる場合、攻撃者はそれを使用して独自のコンテンツを永続的に変更し、ユーザーを攻撃する可能性があります。

おそらく、/var/wwwディレクトリやその子が自分のユーザー アカウントによって所有されることも望ましくないでしょう。Firefox、Evolution、Pidgin、または Spotify の欠陥によって、Web サーバーのコンテンツへの書き込みアクセスが許可されることも望ましくありません。

したがって、より良いアプローチは、すべての開発作業をホームディレクトリのどこかで、自分が所有し、接続のみを受け入れるようにバインドされた特権のないポートで自分のユーザーアカウントで実行される別の Web サーバーによって提供されるファイルで行うことですlocalhost。ソフトウェアを好みの状態に開発したら、ソフトウェアを運用Web サーバーに配布できます。

配布は多くの場合、次のようなツールを介して行われgitますgit push。開発作業をリポジトリに行い、新しいバージョンをデプロイする場合は、/var/wwwディレクトリを所有するアカウントにログインしgit pull、新しいバージョンをダウンロードします。これは少し複雑ですが、実際のソース管理システムを持つことは、余分な努力をするだけの価値があります。

もっと単純なものが必要な場合は、単純に使用して特権sudo(1)に昇格させ、コンテンツをコピーすることができます。www-content次のようになります。

cd ~/projects/website
sudo -u www-content tar cf - . | (cd /var/www/ && tar xvf -)

このように、ライブプロダクションファイルは Web サーバーによって所有さwww-contentれ、Web サーバーに書き込むことはできません。sudoコマンドを明示的に実行する場合を除き、ユーザー アカウントにもそれらを変更する権限はありません。(正しくセットアップするsudo(8)のは手間がかかる場合があります。1 人で開発を行う場合は、これらの手順をroot代わりに実行すると問題なく動作する可能性があります。)

Web コンテンツをライブで操作したいユーザーが数人いて、そのユーザーとそのユーザーが実行するソフトウェアを完全に信頼できる場合は、グループの所有権を使用して一部の手順をスキップできます。(これは愛好家の使用には問題ないかもしれませんが、私はこれをビジネスの運営には使用したくありません。) 各人のユーザー アカウントを特定のグループに追加し、たとえばwww-editorsを作成/var/wwwし、 と子供を が所有するグループにしwww-editors、BSD グループの動作を使用します。 ( man 8 mount、詳細については、 を探してbsdgroupsください。マウント オプションを変更し、ディレクトリにビット/etc/fstabを設定する必要があります)。setgidこれにより、あなたとグループ内のすべてのユーザーが中間の手順なしでファイルを編集できるようになります。これは便利でもあり、危険でもあります。賢く使ってください。

于 2012-05-31T23:01:41.320 に答える
0

この chmod 777=wrx write read execute for all users chmod 775 wrx for current user のように、ターミナル経由で Linux の権限を変更できます。サーバー上でアクセス権を持っていますか? そうでない場合はこれを使用できますか? アクセス許可を変更することはできません。

これは一例です

ユーザーとグループに読み取り、書き込み、実行を追加

幸運にも私たちのグループに参加できる人、または私たちになることができる人に対して、すべての権限を taps.sh に持たせたいとしましょう。そうするために:

`

enter code here`$ chmod +rwx taps.sh
$ ls -l taps.sh
-rwxrwxr-x 1 erik erik 1014 2010-10-28 13:30 taps.sh 

幸運を

于 2012-05-31T22:23:45.317 に答える