/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
そして今、私は正方形に戻りました。
どんな助けも大歓迎です。
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を共有する方法という具体的な質問に具体的に対応しています。