ユーザー/グループの権限はどのように機能しますか?

ユーザー/グループの権限はどのように機能しますか?

サイトをセットアップしているのですが、いくつかのファイルを移動する必要があります。mkdir()、copy() などを含む簡単な PHP スクリプトを作成しましたが、権限エラーが発生します。

影響を受けるフォルダーを 777 に設定するとすべてが機能しますが、古いサイトでは 755 に設定されていました。

Plesk のユーザーが Johnnie で、ファイルのユーザーも Johnnie (グループは psacln) の場合、PHP スクリプトはアクセスできるはずではないでしょうか。そうでない場合、ブラウザーでファイルを移動できるようにするには、ユーザーをどのように設定する必要がありますか。

答え1

アクセスとはどういう意味ですか? - ファイル属性を確認する。 - 読み取り用にファイルを開く。 - 書き込み用にファイルを開く。 - 読み取り/書き込み用にファイルを開く。 - 実行用にファイルを開く。

PHP アプリケーションのユーザー名は、名前が同じであっても Unix ユーザーと同じではないことに注意してください。

apache/php が apache、www、www-data、nobody... ユーザーとして実行されていることに注意してください。これは apache 構成で設定されます。次の方法で見つけます。

egrep -r '^User|^Group' /etc/{apache*,http*}

変更を行う前にバックアップを実行してください。

あなたのユーザーと Apache ユーザーが所属する共通のグループを見つけます。そうでない場合は作成します。

DocumentRoot にあるファイルとフォルダーのグループを次のグループに変更します。

chown -R myuser:commongroup /var/www/

新しいファイルがそのグループによって所有されるように、フォルダーの SUID を変更します。

find /var/www/ -type d -print0|xargs -0r chmod g+rxs
chmod -R u+r,g+r,o= /var/www/

PHP に書き込み権限を与えるフォルダーとファイルに対して、次の操作を実行します。

chmod g+w /var/www/folder/subfolder   /var/www/folder/file.txt

答え2

権限を処理するための追加のパッチ/モジュールなしで、cgi または mod-php 経由で PHP を使用している場合、PHP スクリプトは Web サーバーのアカウントで実行されている可能性があります。これは通常、www-data、nobody、またはその他の非ルート アカウントです。

おそらく、Web サーバーを実行しているユーザーをグループに追加するか、Web サーバーとアクセスを必要とするその他のユーザーを含むグループを作成する必要があります。

関連情報