web-dev-qa-db-ja.com

権限-2人のユーザーにディレクトリへのフルアクセスを許可します

/var/www/webにWebサーバーディレクトリがあります。いずれかのファイル内で、create_dir.phpと言いましょう。mkdir()でディレクトリを作成しています。次のメッセージが表示されます。

警告:mkdir():122行目の/var/www/web/create_dir.phpで許可が拒否されました

これで、ファイルまたはディレクトリの所有者であれば、このファイルを実行できます。しかし、私が所有者でない場合、PhpStorm内のファイルを編集できません。

私のユーザーはjoshと呼ばれ、Apache2ユーザーがデフォルトのwww-dataです。

基本的に、グループを作成するか、いつでもファイルを実行および編集できる特別な/魔法のユーザーを作成する必要があります。

注:私はこれを見てきました スーパーユーザーの答え とそれは私のために動作しませんでしたこのコマンドを実行してグループを作成しました。

Sudo groupadd website

これらのコマンドを実行してユーザーを追加しました。

Sudo usermod -a -G website josh
Sudo usermod -a -G website www-data

このコマンドを実行して、Webフォルダーに追加しました。

Sudo chgrp -R website /var/www/web

このコマンドを実行し、Webサイトをリロードすると、Forbiddenエラーメッセージが表示されました。

Sudo chmod -R 770 /var/www/web

そこで、このコマンドを実行してWebページを表示できるようにしました。

Sudo chmod -R 775 /var/www/web

そして今、私は正方形に戻りました。

どんな助けも大歓迎です。

4
Josh Murray

Linuxの共有ディレクトリは、所有権とアクセス許可のために混乱を招く可能性があります。

この特定のディレクトリについて、/var/www/html/は既に回答があります

/ var/wwwで作業するときにSudoを使用しないようにする方法

したがって、両方のユーザーをwww-dataのメンバーにします。私見は新しいグループを作る必要はありません。

アクセス許可とファイルの所有権を管理するには、グループとsetGIDを設定します

Sudo chgrp -R www-data /var/www/html
Sudo chmod 2770 /var/www/html 

詳細については、 https://www.gnu.org/software/coreutils/manual/html_node/Directory-Setuid-and-Setgid.html を参照してください

... if a directory’s set-group-ID bit is set, newly created subfiles inherit the same group as the directory ...

メンバーシップを有効にするには、シェルを再起動するか、ログアウトしてから再度ログインします。

より詳細な制御が必要な場合は、ACLを使用できますが、それはおそらく過剰です。

ACLの詳細については、 https://help.ubuntu.com/community/FilePermissionsACLs および http://brunogirin.blogspot.com/2010/03/shared-folders-inを参照してください-ubuntu-with-setgid.html

この2番目のリンクは、setGIDとACLを使用して/ var/www/htmlを共有する方法という具体的な質問に具体的に対応しています。

5
Panther