web-dev-qa-db-ja.com

www-dataパーミッション?

したがって、/ var/www(cakeと呼ばれる)にディレクトリがあり、www-dataに書き込みを許可する必要がありますが、(Sudoを使用せずに)書き込みたいと思います。私のマシン(またはハッカー)の他のユーザーがそのディレクトリ内のファイルを変更しようとする場合に備えて、アクセス許可を777に変更することを恐れています。自分とApacheのwwwデータのみにアクセスを許可するにはどうすればよいですか?

94
q3d
Sudo chown -R yourname:www-data cake

それから

Sudo chmod -R g+s cake

最初のコマンドは所有者とグループを変更します2番目のコマンドはs属性を追加し、同じグループ許可を持つ新しいファイルとディレクトリをcake内に保持します

148
James L.

Slicehostによる記事 で述べたように:

ユーザー設定

それでは、Apacheユーザーグループにメインユーザーを追加することから始めましょう。

Sudo usermod -a -G www-data demo

これにより、ユーザー「デモ」が「www-data」グループに追加されます。上記のusermodコマンドで-aオプションと-Gオプションの両方を使用するようにしてください。

グループの変更を有効にするには、ログアウトして再度ログインする必要があります。

今すぐグループを確認してください:

groups
...
# demo www-data

だから今、私は2つのグループのメンバーです:私自身(デモ)とApacheグループ(www-data)。

フォルダーのセットアップ

次に、public_htmlフォルダーがメインユーザー(デモ)によって所有され、Apacheグループ(www-data)の一部であることを確認する必要があります。

それを設定しましょう:

Sudo chgrp -R www-data /home/demo/public_html

権限について話しているときに、Sudoコマンドに関する簡単なメモを追加します。相対パス(〜/ public_html)ではなく、上に示すように絶対パス(/ home/demo/public_html)を使用するのが良い習慣です。 Sudoが正しい場所で使用されていることを確認します。

シンボリックリンクが設定されたpublic_htmlフォルダーがある場合は、シンボリックリンクをたどるので、そのコマンドに注意してください。作業中のpublic_htmlフォルダーの場合、各フォルダーを手動で変更します。

Setgid

これまでのところは良いですが、先ほど説明したコマンドは既存のフォルダーにのみ影響することを覚えておいてください。新しいことはどうですか?

新しいものが「www-data」グループにも含まれるように、所有権を設定できます。

最初のコマンドは、 "setgid"ビットを含むようにpublic_htmlディレクトリのアクセス許可を変更します。

Sudo chmod 2750 /home/demo/public_html

これにより、新しいファイルには必ずグループ「www-data」が与えられます。サブディレクトリがある場合は、サブディレクトリごとにそのコマンドを実行する必要があります(このタイプのアクセス許可は「-R」では機能しません)。幸い、「setgid」ビットが自動的に設定された新しいサブディレクトリが作成されます。

たとえば、アップロードディレクトリへのApacheへの書き込みアクセスを許可する必要がある場合は、次のようにそのディレクトリのアクセス許可を設定します。

Sudo chmod 2770 /home/demo/public_html/domain1.com/public/uploads

新しいファイルには自動的に正しい所有権が割り当てられるため、許可を設定する必要があるのは1回だけです。

42
Kwadz