www-dataパーミッション?


108

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

回答:


168
sudo chown -R yourname:www-data cake

その後

sudo chmod -R g+s cake

最初のコマンドは所有者とグループを変更します。

2番目のコマンドは、sの属性を追加して、同じグループのアクセス許可を持つ新しいファイルとディレクトリをCake内に保持します。


3
なぜchmod g + sは再帰的ですか?
Ben Rogmans、2014

g + sについて知りませんでした。とても便利!
FRAGA 2014年

1
ケーキ自体のwww-dataによって作成されたファイル、およびwww-dataによって作成されたディレクトリ内のwww-dataによって作成されたファイルを使用して、ユーザーは何ができますか?たとえば、編集、名前変更、削除操作についてはどうですか?私が理解しているように、www-dataによって作成されたディレクトリ内では名前の変更と削除はできません。また、www-dataによって作成されたファイルの編集は、ユーザーにはまったく不可能です。
qdinar 2017

49

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

ユーザー設定

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

sudo usermod -a -G www-data demo

これにより、ユーザー「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

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


この解決策は私にとってはうまくいきます。その前に、私は常にルートユーザーを使用してターミナルからサーバーを実行します。このソリューションを使用すると、770のアクセス許可を持つディレクトリにファイルをアップロードできます。これまでは、777のアクセス許可を使用してのみファイルをアップロードできるため、これは素晴らしいことです。
Ifan Iqbal 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.